idea della crittografia a chiave pubblica

Documenti analoghi
idea della crittografia a chiave pubblica

idea della crittografia a chiave pubblica

crittografia a chiave pubblica

crittografia a chiave pubblica

funzione φ di Eulero, o funzione toziente è definita sugli interi positivi φ(n) è il numero di interi positivi n che sono coprimi con n

crittografia a chiave pubblica

sia G un gruppo ciclico di ordine n, sia g un generatore di G

(G, ) un gruppo moltiplicativo di ordine n l ordine di un elemento g G, o(g), è il minimo intero positivo m tale che g m = 1

logaritmo discreto come funzione unidirezionale

problema del logaritmo discreto

sia G un gruppo ciclico di ordine n, sia g un generatore di G bisogna determinare l unico intero x con 1 x n 1 tale che g x = y

sia G un gruppo ciclico di ordine n, sia g un generatore di G

una possibile funzione unidirezionale

una possibile funzione unidirezionale

Crittografia simmetrica (a chiave condivisa)

NUMERI PRIMI E CRITTOGRAFIA

schema di firma definizione formale

Elementi di Algebra e di Matematica Discreta Cenno alla crittografia

una possibile funzione unidirezionale

Elementi di Algebra e di Matematica Discreta Cenno di un applicazione alla crittografia

una possibile funzione unidirezionale

A cosa serve la crittografia? La crittografia serve ad aiutare due utenti, Alice e Bob, a comunicare in modo sicuro...

Il Ricevente comunica pubblicamente una chiave e. Il Mittente codifica il messaggio usando la funzione f(m, e) = C e

da chi proviene un messaggio?

Corso di Crittografia Prof. Dario Catalano. Introduzione alla crittografia asimmetrica

Introduzione alla crittografia. Diffie-Hellman e RSA

si cerca di scegliere e non troppo grande e tale che nella scrittura binaria di e ci siano pochi 1 e piccolo = cifratura più veloce

Crittografia ed Aritmetica Modulare VI incontro

una possibile funzione unidirezionale

Seminario sulla Crittografia. Corso: T.A.R.I Prof.: Giulio Concas Autore: Ivana Turnu

Pr(x y) = Pr(x) si può riformulare questa definizione in termini di indistinguibilità x 0, x 1 P e y C, scelta in modo casuale una chiave k K

Agostino Dovier. Dip di Matematica e Informatica, Univ. di Udine

Corso di Crittografia Prof. Dario Catalano. Primitive Asimmetriche

Dunque k vale all incirca log n: precisamente k = [log n] + 1.

Crittografia a chiave pubblica

Altre alternative a RSA interessanti e praticabili

ISTITUZIONI DI ALGEBRA SUPERIORE ESAME

crittosistemi a flusso

Esercizi di Algebra. Anna Bigatti. 13 Novembre Ora vogliamo definire una operazione +, cioè dobbiamo definire quando fa a + b.

Teoria della Complessità Concetti fondamentali

crittosistema: definizione

Crittografia per la sicurezza dei dati

RSA e firma digitale

Crittografia: dagli antichi codici di Cesare ai protocolli avanzati

CRITTOGRAFIA 2014/15 Appello del 13 gennaio Nome: Cognome: Matricola:

Esercizi 2. Marco Anisetti

Crittografia. Crittosistemi a Chiave Pubblica. Corso di Laurea Specialistica. in Informatica

Corso di Crittografia Prof. Dario Catalano. Cifrari Asimmetrici (Terza Parte): RSA-OAEP e Cifrari basati sull identita

Funzioni di hash sicure: MD5 e SHA-1

la crittografia tratta delle "scritture nascoste", dei metodi per rendere un messaggio "offuscato"

Crittografia a chiave pubblica

Ad ogni problema computazionale possiamo associare una misura della sua complessità.

Sicurezza della comunicazione tra due entità. Prof.ssa Gaia Maselli

Introduzione alla crittografia. Il crittosistema RSA e la sua sicurezza

Capitolo 11. Teoria della computazione Pearson Addison-Wesley. All rights reserved

Segreti e bugie, Conoscenza e Fiducia. (La Moderna Crittografia)

Complessità computazionale. Complessità e Crittografia

ITC Mossotti - Novara. Verica di Informatica. Nome e Cognome:... 1) Nella cifratura convenzionale. 2) Nella crittograa a chiave pubblica

E necessaria la chiave segreta? RSA. Funzioni One-way con Trapdoor. Un secondo protocollo

Elementi di Crittografia

una possibile funzione unidirezionale

Teoria della complessità

COMPITO DI ALGEBRA TRENTO, 13 GENNAIO 2016

Lo stesso procedimento ci permette di trovare due interi x, y tali che M.C.D. = ax + by. Ma quando esistono x, y soluzioni dell equazione diofantea

Aniello Murano Classe dei problemi NP. Nella lezione precedente abbiamo visto alcuni problemi che ammettono soluzione polinomiale

Teoria della NP-completezza

Lucchetto con combinazione (3 numeri tra 0 e 39)

Algoritmo. Calcolabilità

da chi proviene un messaggio?

Elementi di crittografia

Crittografia a chiave pubblica!

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2

NUMERI E CRITTOGRAFIA. Carlo Toffalori (Camerino) Scuola Estiva Mathesis Telese Terme, 28 luglio 2015

Complessità computazionale. Introduzione al corso

Crittografia con Python

La crittografia a curve iperellittiche

La codifica dei numeri

DIARIO DEL CORSO DI TEORIA DEI NUMERI E CRITTOGRAFIA. (41 ore complessive di lezione)

Dal messaggio a sequenze di numeri

(corso di laurea in Informatica Musicale)

Lista di esercizi 11 maggio 2016

Un ripasso di aritmetica: Rappresentazione decimale - limitazioni

IMPLEMENTAZIONI DIDATTICHE DI ALGORITMI DI CIFRATURA PER SICUREZZA INFORMATICA

RACCOLTA DI ALCUNI ESERCIZI TRATTI DA COMPITI D ESAME SUL SISTEMA CRITTOGRAFICO RSA

Crittografia. Corso di Laurea Specialistica. in Informatica. Generatori di Numeri PseudoCasuali

Accordo su chiavi (key agreement)

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Accordo su chiavi. (key agreement) Alfredo De Santis. Marzo Dipartimento di Informatica Università di Salerno

Programmazione dinamica

Cifrari asimmetrici. Cifratura. Cifratura. Crittosistema ElGamal. file pubblico utente chiave pubblica. Alice. file pubblico utente chiave pubblica

Esercitazione di Calcolo Numerico 1 22 Aprile Determinare la fattorizzazione LU della matrice a 1 1 A = 3a 2 a 2a a a 2 A =

La matematica negli algoritmi. Maat: dea egizia dell ordine. Liber Abaci 1202

Ricerca Operativa 2. Ricerca Operativa 2 p. 1/6

Note per la Lezione 17 Ugo Vaccaro

RSA: Calcolo della chiave privata

Transcript:

idea della crittografia a chiave pubblica sviluppare un crittosistema in cui data la funzione di cifratura e k sia computazionalmente difficile determinare d k Bob rende pubblica la sua funzione di cifratura e k Alice (e chiunque altro) può scrivere a Bob, cifrando il messaggio con la e k senza bisogno di accordi preliminari Bob è l unico che può decifrare il messaggio la funzione di cifratura e è una funzione unidirezionale (one-way function) informalmente, una funzione invertibile f : P C si dice unidirezionale se dato x P, il calcolo di f (x) è facile per quasi tutti gli y C il calcolo di f 1 (y) è difficile complessità polinomiale e esponenziale Definizione La complessità computazionale di un algoritmo che opera sugli interi è data dal numero di operazioni bit occorrenti per eseguirlo. è una funzione (della lunghezza dell input) Definizione Un algoritmo A per eseguire un calcolo su numeri interi si dice polinomiale se esiste un intero positivo d tale che il numero di operazioni bit necessarie per eseguire l algoritmo su interi di lunghezza binaria al più k è O(k d ). Definizione Un algoritmo si dice esponenziale se il numero di operazioni bit necessarie per eseguire l algoritmo su interi di lunghezza binaria al più k è dello stesso ordine di 2 ck, per una costante c > 0

polinomiale (computazionalmente) facile esponenziale (computazionalmente) difficile mostare che esiste un algoritmo polinomiale che risolve un dato problema è semplice - basta descrivere l algortimo ma come si fa a mostare che non esiste un algoritmo polinomiale che risolve un dato problema? sia P la classe dei problemi P per cui esiste un algoritmo che risolve P in tempo polinomiale il problema P appartiene alla classe NP se esistono algoritmi (non necessariamente polinomiali) che risolvono il problema ma è possibile verificare, con un algoritmo polinomiale, se un dato assegnato è soluzione o meno del problema (esempio: fattorizzare un intero n) si ha P NP il problema centrale della teoria della complessità è stabilire se se P NP

un problema di NP si dice NP completo se per ogni problema Q in NP esiste un algoritmo polinomiale che riduce la soluzione di Q a quella di P quindi se esiste un algoritmo polinomiale che risolve un problema NP completo allora ogni problema di tipo NP sarebbe anche in P quindi si avrebbe P = NP i problemi NP completi sono i problemi computazionalmente più difficili tra quelli di tipo NP. problema dello zaino (knapsack problem) un problema ritenuto difficile è il problema dello zaino dato uno zaino che può contenere b unità e dati k oggetti di volume a 1,..., a k il problema è riempire lo zaino usando alcuni oggetti della lista

problema dello zaino (knapsack problem) dobbiamo trovare una k-pla (e 1,..., e k ), e i = 0, 1 tale che b = i e ia i se possibile oppure mostare che una tale k-pla non esiste trovare una soluzione è difficile procedendo per tentativi ho 2 k possibilità da controllare ci sono algoritmi migliori, ma nessuno è polinomiale (è un problema NP-completo) ma data una k-pla, è facile verificare se è una soluzione esempio data la lista (323, 412, 33, 389, 544, 297, 360, 486) e dato b = 1228 un metodo possibile è un procedimento greedy (avido, goloso) a ogni passo, prendo l oggetto più grande che entra ancora nello zaino in questo esempio, ho 1228 = 544 + 684 = 544 + 486 + 198 = 544 + 486 + 33 + 165 e qui ci fermiamo invece si ha che 1228 = 412 + 33 + 297 + 486 se avessimo una lista di 100 numeri di 50 cifre ognuno il problema diventa inavvicinabile

sequenze supercrescenti ci sono particolare k-ple per cui il problema dello zaino è facile la sequenza (a 1,..., a k ) si dice supercrescente se ogni termine è maggiore della somma dei termini precedenti i 1 j=1 a j < a i se ho una lista (a 1,..., a k ) supercrescente è facile vedere che il procedimento greedy visto prima risolve il problema dello zaino e che - se esiste - la soluzione è unica per esempio la successione 1, 2, 4, 8, 16,... delle potenze di due è supercrescente il procedimento greedy è quello che si usa per scrivere un intero in base 2 sequenze supercrescenti-esempio data la lista supercrescente (1, 3, 7, 15, 31, 63, 127, 255) dato b = 328 328 = 255 + 73 = 255 + 63 + 10 = 255 + 63 + 7 + 3

un crittosistema dal problema dello zaino la chiave pubblica di Bob è una lista (a 1,..., a k ) di interi positivi per cifrare, il messaggio dev essere una stringa binaria di lunghezza k x = (e 1,..., e k ), e i = 0, 1 Alice calcola i e ia i = b e trasmette b a Bob nessun attaccante può decifrare bisogna risolvere un problema dello zaino! in questo momento, non può decifrare neanche Bob... il crittosistema di Merkle Hellman non possiamo usare una sequenza supercrescente come chiave pubblica! bisogna mascherare questa proprietà Bob sceglie una lista (a 1,..., a k ) supercrescente sceglie poi un intero n > a i e un intero u con (u, n) = 1 costruisce una nuova lista (a 1,..., a k ) dove a i = ua i (mod n) (a 1,..., a k ) è la chiave pubblica (a 1,..., a k ), n e u sono la chiave privata

la cifratura funziona come già detto: Alice deve cifrare x = (e 1,..., e k ) calcola i e ia i = b e trasmette b a Bob per decifrare, Bob calcola v, l inverso di u modulo n poi calcola vb b mod n b vb = v e i a i v e i ua i modulo n v e i ua i = uv e i a i e i a i modulo n ora sia b che e i a i sono minori di n = a i quindi b = e i a i Bob deve risolvere un caso facile del problema dello zaino per decifrare esempio data la lista supercrescente (1, 3, 7, 15, 31, 63, 127, 255) Bob sceglie n = 557 maggiore della somma dei termini della lista e u = 323 coprimo con 557 moltiplicando per 323 e riducendo mod 557 ottiene (323, 412, 33, 389, 544, 297, 360, 486) la stringa binaria 01100101 viene codificata da Alice come 412 + 33 + 297 + 486 = 1228 Bob riceve 1228 sa che l inverso di 323 mod 557 è 169 calcola 1228 169 mod 557 e ottiene 328 328 = 255 + 73 = 255 + 63 + 10 = 255 + 63 + 7 + 3 riottiene quindi la stringa 01100101

esempio/testo vogliamo cifrare il messaggio ciao: serve una tabella di conversione lettere stringhe ciao 00010 01000 00000 01110 i nostri testi in chiaro sono blocchi di lunghezza 8: 00010010 00000000 11101000 chiave pubblica = (323, 412, 33, 389, 544, 297, 360, 486); la cifratura è la terna (749, 0, 1312) il crittosistema di Merkle Hellman il crittosistema ora descritto è dovuto a Merkle e a Hellman (1978) è elegante e molto più semplice dell RSA sfortunatamente non è molto sicuro A. Shamir, A polynomial-time algorithm for breaking the basic Merkle - Hellman cryptosystem, IEEE Transactions on Information Theory (1984) il mascheramento non funziona molto bene un variante più sicura è il crittosistema di Chor-Rivest (1988) che usa il logaritmo discreto