Accordo su una chiave Accordo su chiavi (key agreement) … Alfredo De Santis Bob Alice Dipartimento di Informatica ed Applicazioni Università di Salerno [email protected] Marzo 2012 K http://www.dia.unisa.it/professori/ads ?? K 1 Diffie-Hellman [1976] Accordo su chiavi: indice ! Diffie-Hellman Whitfield Diffie Martin Hellman ! Basato sull’intrattabilità del problema del logaritmo discreto Stanford University ! Puzzle di Merkle ! Non basato su alcuna assunzione computazionale W. Diffie and M.E. Hellman, New directions in cryptography, IEEE Trans. on Inform. Theory 22 (1976), 644-654. 2 3 Generatori di Zp* Diffie-Hellman [1976] g è generatore di Zp* se { gi | 1 ! i ! p-1 } = Zp* primo p, generatore g di Zp* 210 = 1024 = 1 mod 11 21 = 2 mod 11 28 = 256 = 3 mod 11 22 = 4 mod 11 24 = 16 = 5 mod 11 29 = 512 = 6 mod 11 27 = 128 = 7 mod 11 23 = 8 mod 11 26 = 64 = 9 mod 11 25 = 32 = 10 mod 11 Esempio: Bob Alice g = 2 è un generatore di Z11* ?? 4 Generatori di Zn* 5 Generatori di Zn* ! Ordine di %"Zn* = il più piccolo intero positivo r tale che %r = 1 mod n ! % è generatore di Zn* se ha ordine $(n) ! Ordine di %"Zn* = il più piccolo intero positivo r tale che %r = 1 mod n ! % è generatore di Zn* se ha ordine $(n) Teorema di Eulero x"Zn* # x$(n)=1 mod n Teorema di Eulero x"Zn* # x$(n)=1 mod n ! Zn* ha un generatore & n = 2,4,pk,2pk, con p primo e k'1 ! Se p è primo, allora Zp* ha un generatore 6 7 Potenze in Z19* a a2 a3 1 1 1 2 4 8 3 9 8 4 16 5 6 7 a4 a5 a6 a7 a8 1 1 16 13 5 7 6 17 a12 a13 a14 a15 a16 a17 a18 1 1 1 1 1 7 14 9 18 17 1 1 1 15 11 3 1 1 6 12 1 1 1 5 10 15 7 2 6 18 16 10 11 14 4 1 12 17 13 9 17 11 6 5 1 4 16 7 9 17 1 11 6 5 1 11 17 9 7 16 4 1 7 4 5 11 9 16 1 5 6 6 11 17 17 7 4 9 7 16 4 1 5 11 9 16 11 1 7 11 1 7 11 1 7 11 1 1 7 11 1 7 11 8 7 18 11 12 1 8 7 18 11 12 1 1 8 7 18 11 12 9 5 7 6 16 11 4 17 1 9 1 5 7 6 16 11 4 17 10 5 12 6 3 11 15 17 18 1 9 14 7 13 16 8 4 2 1 11 7 1 11 7 1 11 7 1 11 7 1 11 7 1 11 7 1 12 11 18 7 8 1 12 11 18 7 8 1 12 11 18 7 8 1 13 17 14 6 12 4 8 17 14 11 10 7 10 16 18 6 2 7 15 5 8 9 3 1 3 4 18 5 13 11 2 9 12 16 15 1 15 16 16 12 9 11 9 2 5 4 11 13 5 18 4 3 7 10 17 8 6 14 1 7 17 6 1 16 9 11 5 4 7 17 6 17 4 11 16 1 Barbara – Università 6 7 Masucci 5 9 - DIA 1 17 4 11 di16Salerno 6 7 5 9 18 1 18 1 1 18 1 18 1 a9 18 a10 1 a11 18 1 18 1 18 1 18 1 a15 a16 a17 a18 Generatori di Zn* ! Ordine di %"Zn* = il più piccolo intero positivo r tale che %r = 1 mod n ! a è generatore di Zn* se ha ordine $(n) ! Se % è un generatore di Zn*, allora ! Zn* = {%i mod n | 0 ! i ! $(n)-1} ! b = %i mod n è un generatore di Zn* & gcd(i,$(n))=1 8 Potenze in Z19* a a2 a3 1 1 1 2 4 8 3 9 8 4 16 5 6 7 11 8 7 9 5 10 a4 a5 a6 a7 a8 1 1 16 13 5 7 6 17 a12 a13 a14 1 1 1 1 1 7 14 9 18 17 1 1 1 1 1 1 1 1 15 11 3 6 12 5 10 15 7 2 6 18 16 1 10 11 14 4 12 17 13 9 17 11 6 5 1 4 1 16 7 9 17 11 6 5 1 11 17 9 7 16 4 1 7 4 5 11 9 16 1 5 6 11 17 9 7 16 4 1 6 17 7 4 5 11 9 16 1 1 7 11 1 7 11 18 11 12 1 8 7 1 7 11 1 7 11 1 7 11 1 18 11 12 1 8 7 18 11 12 7 6 16 11 4 17 1 1 9 5 7 6 16 11 4 17 5 12 6 3 11 15 1 17 18 9 14 7 13 16 8 4 2 11 7 1 11 7 1 1 11 7 1 11 7 1 11 7 1 11 7 12 11 18 7 8 1 1 12 11 18 7 8 1 12 11 18 7 8 13 17 12 4 1 14 11 10 16 18 6 2 7 15 5 8 9 3 14 6 8 1 17 10 7 3 4 18 5 13 11 2 9 12 16 15 15 16 1 12 9 2 11 13 5 18 4 3 7 10 17 8 6 14 16 1 9 11 5 4 7 17 6 1 16 9 11 5 4 7 17 6 1 17 4 11 16 Barbara – Università 6 7 Masucci 5 9 - DIA 1 17 4 11 di16Salerno 6 7 5 9 1 18 1 18 1 1 18 1 18 1 18 1 a9 18 a10 1 a11 18 1 18 1 18 Esempio: 2 è un generatore in Z19* • 3=213 mod 19 è un generatore perchè gcd(13,6)=1 • 13=25 mod 19 è un generatore perchè gcd(5,6)=1 • 5=216 mod 19 non è un generatore perchè gcd(16,6)=2 9 Generatori di Zn* ! Il numero di generatori di Zn* è $($(n)) ! Se p è primo, il numero di generatori di Zp* è $(p-1) 10 11 Diffie-Hellman [1976] Diffie-Hellman [1976] primo p, generatore g di Zp* scelgo x"Zp scelgo x"Zp scelgo y"Zp primo p, generatore g scelgo y"Zp gx mod p Alice ?? Bob Alice Bob ?? 12 Diffie-Hellman [1976] scelgo x"Zp primo p, generatore g 13 Diffie-Hellman [1976] scelgo x"Zp scelgo y"Zp gx mod p primo p, generatore g gx mod p gy mod p Alice scelgo y"Zp ?? gy mod p Alice Bob K = gxy mod p = (gy)x mod p 14 ?? Bob K = gxy mod p = (gx)y mod p 15 Diffie-Hellman: “piccolo” esempio scelgo x=3 primo 11, generatore 2 Diffie-Hellman: esempio scelgo y=4 scelgo x=3578 5 = 24 mod 11 7984 = 219956 mod 25307 Bob ?? K=4=(24)3 mod 11 scelgo y=19956 6113 = 23578 mod 25307 8 = 23 mod 11 Alice primo 25307, generatore 2 Alice ?? K=3694=79843578 K=4=(23)4 mod 11 Bob K=3694=611319956 16 Logaritmo discreto: Logaritmo discreto Complessità algoritmi La sicurezza di molte tecniche crittografiche si basa sulla intrattabilità del logaritmo discreto: ! Crittosistema Dati a,n,b calcolare x tale che ax = b mod n Vari algoritmi: ElGamal ! Trial multiplication ! Baby-step giant-step ! Pollard’s rho algorithm ! Pohlig-Hellman algorithm ! Index Calculus ! Accordo su chiavi Diffie-Hellman ! Firme digitali DSS Dati a,n,b calcolare x tale che ax = b mod n Esempio: 3x = 7 mod 13 17 soluzione x = 6 18 19 Logaritmo discreto: Logaritmo discreto: Complessità algoritmi record computazioni Dati a,n,b calcolare x tale che ax = b mod n Dati a,n,b calcolare x tale che ax = b mod n Se n è primo, i migliori algoritmi hanno complessità Ln[a,c] = O(e(c+o(1))(ln n) a (lnln n) 1-a ! 130-digit, 431-bit: giugno 2005, A. Joux e R. Lecier ! 3 settimane, 1.15 GHz 16-processor HP AlphaServer GS1280 ) ! 160-digit, 530-bit, febbraio 2007, T. Kleinjung con c > 0 ed 0 < a < 1 ! Vari pc ed un cluster ! GF(2613), settembre 2005, A. Joux e R. Lercier ! 17 giorni, 4 nodi 1.3GHz 16-processori di un Itanium 2-based Bull computer Teranova Miglior algoritmo: Number field sieve tempo medio euristico Ln[1/3, 1.923] ! GF(36"71), 676-bit, 2010, T. Hayashi, 1/3 ! 64 $ # & = 1, 922999 "9% 20 Problema di Diffie-Hellman 21 Problema di Diffie-Hellman Input: primo p, generatore g, gx mod p, gy mod p Calcolare: gxy mod p Input: primo p, generatore g, gx mod p, gy mod p Calcolare: gxy mod p Il miglior algoritmo conosciuto calcola prima il logaritmo discreto x ( logg,p(gx mod p) Il miglior algoritmo conosciuto calcola prima il logaritmo discreto x ( logg,p(gx mod p) … ma non si sa se sono equivalenti! 22 23 Scelta dei parametri Scelta di un generatore ! Come scegliere p e g? Scegli_Generatore_Naive (p) 1. Scegli a caso g in Zp* 2. If {gi|1!i! p-1} = Zp* then trovato else goto 1. 24 25 Scelta di un generatore Scelta di un generatore p primo, p-1 = p1e1 p2e2… pkek g è un generatore di Scegli_Generatore_Naive (p) 1. Scegli a caso g in Zp* 2. If {gi|1!i! p-1} = Zp* Zp* & g(p-1)/p1 ) 1 mod p ... g(p-1)/pk ) 1 mod p {g |1!i!p-1} = Zp* ? i then trovato else goto 1. L’unico algoritmo efficiente necessita dei fattori primi di p-1 26 27 Scelta di un generatore p primo, p-1 = p1e1 p2e2… pkek g è un generatore di Zp* & Scelta di un generatore p primo, p-1 = p1e1 p2e2… pkek g(p-1)/p1 ) 1 mod p ... g(p-1)/pk ) 1 mod p g è un generatore di # 11 primo, p-1 = 10 = 2·5 Esempio * # 2 è un generatore di Z11 perché 2(11-1)/2 = 25 = 10 ) 1 mod 11 2(11-1)/5 = 22 = 4 ) 1 mod 11 Zp* & g(p-1)/p1 ) 1 mod p ... g(p-1)/pk ) 1 mod p # 11 primo, p-1 = 10 = 2·5 Esempio * # 3 non è un generatore di Z11 perché 3(11-1)/2 = 35 = 243 = 1 mod 11 3(11-1)/5 = 32 = 9 ) 1 mod 11 28 Probabilità successo singola iterazione Scelta di un generatore p primo, p-1 = p1e1 p2e2… pkek g è un generatore di Zp* & 29 ! Numero di generatori modulo un primo p è g(p-1)/p1 ) 1 mod p ... g(p-1)/pk ) 1 mod p $($(p)) = $(p-1) > (p-1) / (6 ·lnln(p-1)) per ogni intero n'5, $(n) > n/(6lnln n) Scegli_generatore ( p, (p1,e1,p2,e2,…,pk,ek) ) 1. g ( elemento scelto a caso in Zp* 2. if (g(p-1)/p1 ) 1 mod p and … and g(p-1)/pk ) 1 mod p) then esci trovato! else go to 1. 30 31 Probabilità successo singola iterazione Analisi di Scegli_generatore ! Numero di generatori modulo un primo p è $($(p)) = $(p-1) > (p-1) / (6 ·lnln(p-1)) Numero medio di iterazioni < 6 ·lnln(p -1) per ogni intero n'5, $(n) > n/(6lnln n) ! Probabilità che un elemento a caso in Zp* sia generatore = $($(p)) $(p) > p-1 $(p) · 6lnln(p -1) = 1 6 ·lnln(p -1) 512 bit 6 ·lnln(2512) * 35,23 1024 bit 6 ·lnln(21024) * 39,38 2048 bit 6 ·lnln(22048) * 43,54 32 Generazione chiavi Diffie-Hellman 33 Accordo su chiave Diffie-Hellman: sicurezza 1. Scegli a caso 2 numeri primi p1 p2 ! E’ sicuro contro attaccanti passivi 2. p ( 1 + 2p1p2 3. Se p non è primo, go to 1. 4. g ( Scegli_generatore(p,(2,1,p1,1,p2 ,1)) 34 ! Non è sicuro contro attacchi man-in-the-middle 35 Diffie-Hellman Accordo su chiave Diffie-Hellman: sicurezza attacco man-in-the-middle primo p, generatore g di Zp* scelgo x"Zp scelgo z"Zp gx mod p scelgo y"Zp ! E’ sicuro contro attaccanti passivi gz mod p ! Non è sicuro contro attacchi man-in-the-middle ! Occorre autenticazione gy mod p Alice gxz KA = mod p = (gz)x mod p Bob gz mod p KA = gxz mod p = (gx)z mod p KB = gzy mod p = (gy)z mod p KB = gzy mod p = (gz)y mod p 36 37 Schema di Merkle Accordo su chiavi: indice Ralph C. Merkle ! Diffie-Hellman ! Basato sull’intrattabilità del problema del logaritmo discreto Corso di Computer Security, UC Berkeley, autunno 1974: proposta per un progetto, rifiutata dal docente ! Puzzle di Merkle http://merkle.com/1974/ ! Non basato su alcuna assunzione computazionale Merkle, R. C., "Secure Communications over Insecure Channels". Communications of the ACM, vol. 21, n. 4, April 1978, pp. 294–299. 38 39 Puzzle di Merkle Schema di Merkle ! Non basato su assunzioni computazionali ! Alice genera n chiavi distinte e “nasconde” ogni chiave in un puzzle ! Il puzzle contiene informazioni per il calcolo della chiave ! La soluzione di un puzzle richiede un tempo ragionevole ! La soluzione di tutti i puzzle richiede un tempo elevato ! Puzzle la cui soluzione richiede t operazioni ! Esempio: Puzzle (x, ID, S) Scegli una chiave k di 56 bit Computa y ( CBC-DESk(x, ID, S) return (y, primi 20 bit di k) ! x è la soluzione del puzzle -Richiede 235 operazioni in media ! ID è l’identificativo del puzzle -Unico per ciascun puzzle ! S è un valore noto -Serve per garantire l’unicità della soluzione del puzzle -Esempio: 32 bit nulli 40 Puzzle di Merkle Scegli x1, …, xn, ID1, …, IDn Puzzlei(Puzzle(xi,IDi,S) Puzzle di Merkle Risolvi Puzzlej Ottieni (xj, IDj) Computazioni di Computazioni di IDj xj tempo +(n) : ! Risoluzione di un puzzle Bob ?? : ! Costruzione di n puzzle Puzzle1, …, Puzzlen Alice 41 Computazioni di : ! Risoluzione di n/2 puzzle in media xj 42 tempo +(t) tempo +(t·n) 43 Puzzle di Merkle Puzzle di Merkle Computazioni di : ! Costruzione di n puzzle Computazioni di Se n = +(t) tempo +(n) : ! Risoluzione di un puzzle Computazioni di problema di sicurezza ! Implementazione poco accorta potrebbe rendere insicuro lo schema ! Esempio: tempo +(n) Puzzle (x, ID, S) Scegli una chiave k di 56 bit Computa y ( DESk(x), DESk(ID), DESk(S) return (y, primi 20 bit di k) ! x è la soluzione del puzzle -Richiede 235 operazioni in media : ! ID è l’identificativo del puzzle ! Risoluzione di n/2 puzzle in media -Unico per ciascun puzzle tempo +(n2) ! S è un valore noto -Serve per garantire l’unicità della soluzione del puzzle -Esempio: 32 bit nulli 44 45 Puzzle di Merkle Puzzle di Merkle Scegli x1, …, xn, ID1, …, IDn Puzzlei(Puzzle(xi,IDi,S) problema di sicurezza ! Implementazione poco accorta potrebbe rendere insicuro lo schema Risolvi Puzzlej Ottieni (xj, IDj) Puzzle1, …, Puzzlen ! Esempio: IDj Alice xj +(n) ! ! ! ! ! Bob ?? xj 46 Puzzle (x, ID, S) Scegli una chiave k di 56 bit Computa y ( DESk(x), DESk(ID), DESk(S) return (y, primi 20 bit di k) Dopo aver visto IDj Cifra DESk(IDj) con tutte le possibili chiavi k Correla le cifrature con tutti i Puzzle visti Trova il Puzzle con IDj Decifra il corrispondente DESk(x) 47 Puzzle di Merkle Bibliografia problema di sicurezza ! Cryptography and Network Security by W. Stallings (2010) ! Implementazione poco accorta potrebbe rendere insicuro lo schema ! Esempio: Puzzle (x, ID, S) Scegli una chiave k di 56 bit Computa y ( DESk(x), DESk(ID), DESk(S) return (y, primi 20 bit di k) ! cap. 1O NO ! Accordo su chiavi Meglio: ! DESk(x), DESk(ID ! x), DESk(S ! x) con S!0 ! DESk(x), DESx(ID), DESx(S) ! AESk(x, ID, S) ! Bene per x di 64 bit (con ID ed S di 32 bit) ! Per x di 128 bit si può usare 2 volte lo schema ! Tesina di Sicurezza su reti 48 Domande? 50 49