Accordo su chiavi (key agreement) Accordo su una chiave Alfredo De Santis Dipartimento di Informatica ed Applicazioni Università di Salerno ads@dia.unisa.it http://www.dia.unisa.it/professori/ads Marzo 2012 K K 1 Accordo su chiavi: indice Diffie-Hellman [1976]! Diffie-Hellman! Basato sull intrattabilità del problema del logaritmo discreto! Puzzle di Merkle! Non basato su alcuna assunzione computazionale Whitfield Diffie Martin Hellman Stanford University W. Diffie and M.E. Hellman, New directions in cryptography, IEEE Trans. on Inform. Theory 22 (1976), 644-654. 2 3
Diffie-Hellman [1976] primo p, generatore g di Z p Generatori di Z p g è generatore di Z p se { g i 1! i! p-1 } = Z p Esempio: g = 2 è un generatore di Z 11 2 10 = 1024 = 1 mod 11 2 1 = 2 mod 11 2 8 = 256 = 3 mod 11 2 2 = 4 mod 11 2 4 = 16 = 5 mod 11 2 9 = 512 = 6 mod 11 2 7 = 128 = 7 mod 11 2 3 = 8 mod 11 2 6 = 64 = 9 mod 11 2 5 = 32 = 10 mod 11 4 5 Generatori di Z n! Ordine di %"Z n = il più piccolo intero positivo r tale che % r = 1 mod n! % è generatore di Z n se ha ordine $(n) Teorema di Eulero x"z n # x $(n) =1 mod n Generatori di Z n! Ordine di %"Z n = il più piccolo intero positivo r tale che % r = 1 mod n! % è generatore di Z n se ha ordine $(n) Teorema di Eulero x"z n # x $(n) =1 mod n! Z n ha un generatore & n = 2,4,p k,2p k, con p primo e k'1! Se p è primo, allora Z p ha un generatore 6 7
Potenze in Z 19 a a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 a 10 a 11 a 12 a 13 a 14 a 15 a 16 a 17 a 18 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Generatori di Z n 2 4 8 16 13 7 14 9 18 17 15 11 3 6 12 5 10 1 3 9 8 5 15 7 2 6 18 16 10 11 14 4 12 17 13 1 4 16 7 9 17 11 6 5 1 4 16 7 9 17 11 6 5 1 5 6 11 17 9 7 16 4 1 5 6 11 17 9 7 16 4 1 6 17 7 4 5 11 9 16 1 6 17 7 4 5 11 9 16 1! Ordine di %"Z n = il più piccolo intero positivo r tale che % r = 1 mod n! a è generatore di Z n se ha ordine $(n) 7 11 1 7 11 1 7 11 1 7 11 1 7 11 1 7 11 1 8 7 18 11 12 1 8 7 18 11 12 1 8 7 18 11 12 1 9 5 7 6 16 11 4 17 1 9 5 7 6 16 11 4 17 1 10 5 12 6 3 11 15 17 18 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! Se % è un generatore di Z n, allora! Z n = {% i mod n 0! i! $(n)-1}! b = % i mod n è un generatore di Z n & gcd(i,$(n))=1 13 17 12 4 14 11 10 16 18 6 2 7 15 5 8 9 3 1 14 6 8 17 10 7 3 4 18 5 13 11 2 9 12 16 15 1 15 16 12 9 2 11 13 5 18 4 3 7 10 17 8 6 14 1 16 9 11 5 4 7 17 6 1 16 9 11 5 4 7 17 6 1 17 4 11 16 Barbara 6 7 Masucci 5 9 - DIA 1 17 Università 4 11 di 16Salerno 6 7 5 9 1 18 1 18 1 18 1 18 1 18 1 18 1 18 1 18 1 18 1 8 Esempio: 2 è un generatore in Z 19 3=2 13 mod 19 è un generatore perchè gcd(13,6)=1 13=2 5 mod 19 è un generatore perchè gcd(5,6)=1 5=2 16 mod 19 non è un generatore perchè gcd(16,6)=2 9 Potenze in Z 19 a a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 a 10 a 11 a 12 a 13 a 14 a 15 a 16 a 17 a 18 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 8 16 13 7 14 9 18 17 15 11 3 6 12 5 10 1 3 9 8 5 15 7 2 6 18 16 10 11 14 4 12 17 13 1 4 16 7 9 17 11 6 5 1 4 16 7 9 17 11 6 5 1 5 6 11 17 9 7 16 4 1 5 6 11 17 9 7 16 4 1 6 17 7 4 5 11 9 16 1 6 17 7 4 5 11 9 16 1 7 11 1 7 11 1 7 11 1 7 11 1 7 11 1 7 11 1 8 7 18 11 12 1 8 7 18 11 12 1 8 7 18 11 12 1 9 5 7 6 16 11 4 17 1 9 5 7 6 16 11 4 17 1 10 5 12 6 3 11 15 17 18 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 12 4 14 11 10 16 18 6 2 7 15 5 8 9 3 1 14 6 8 17 10 7 3 4 18 5 13 11 2 9 12 16 15 1 15 16 12 9 2 11 13 5 18 4 3 7 10 17 8 6 14 1 16 9 11 5 4 7 17 6 1 16 9 11 5 4 7 17 6 1 17 4 11 16 Barbara 6 7 Masucci 5 9 - DIA 1 17 Università 4 11 di 16Salerno 6 7 5 9 1 18 1 18 1 18 1 18 1 18 1 18 1 18 1 18 1 18 1 10 Generatori di Z n! Il numero di generatori di Z n è $($(n))! Se p è primo, il numero di generatori di Z p è $(p-1) 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 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 scelgo y"zp gy mod p K = gxy mod p = (gy)x mod p 14 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 K=4=(24)3 mod 11 scelgo y=19956 6113 = 23578 mod 25307 8 = 23 mod 11 primo 25307, generatore 2 K=3694=79843578 K=4=(23)4 mod 11 K=3694=611319956 16 17 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!!!!!! 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 soluzione x = 6 18 Trial multiplication Baby-step giant-step Pollard s rho algorithm Pohlig-Hellman algorithm Index Calculus 19
Logaritmo discreto: Complessità algoritmi Dati a,n,b calcolare x tale che a x = b mod n Se n è primo, i migliori algoritmi hanno complessità L n [a,c] = O(e (c+o(1))(ln n)a (lnln n) 1-a ) con c > 0 ed 0 < a < 1 Miglior algoritmo: Number field sieve tempo medio euristico L n [1/3, 1.923]! # " 64 9 $ & % 1/3 =1, 922999 20 Logaritmo discreto: record computazioni Dati a,n,b calcolare x tale che a x = b mod n! 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! Vari pc ed un cluster! GF(2 613 ), settembre 2005, A. Joux e R. Lercier! 17 giorni, 4 nodi 1.3GHz 16-processori di un Itanium 2-based Bull computer Teranova! GF(3 6"71 ), 676-bit, 2010, T. Hayashi, 21 Problema di Diffie-Hellman Input: primo p, generatore g, g x mod p, g y mod p Calcolare: g xy mod p Problema di Diffie-Hellman Input: primo p, generatore g, g x mod p, g y mod p Calcolare: g xy mod p Il miglior algoritmo conosciuto calcola prima il logaritmo discreto x ( log g,p (g x mod p) Il miglior algoritmo conosciuto calcola prima il logaritmo discreto x ( log g,p (g x 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 Z p 2. If {g i 1!i! p-1} = Z p then trovato else goto 1. 24 25 Scelta di un generatore Scelta di un generatore Scegli_Generatore_Naive (p) 1. Scegli a caso g in Z p 2. If {g i 1!i! p-1} = Z p then trovato else goto 1. {g i 1!i!p-1} = Z p? L unico algoritmo efficiente necessita dei fattori primi di p-1 26 p primo, p-1 = p e 1 1 p2 e 2 pk e k g (p-1)/p 1 ) 1 mod p g è un generatore di Z p &... g (p-1)/p k ) 1 mod p 27
Scelta di un generatore p primo, p-1 = p e 1 1 p2 e 2 pk e k g (p-1)/p 1 ) 1 mod p g è un generatore di Z p &... g (p-1)/p k ) 1 mod p Scelta di un generatore p primo, p-1 = p e 1 1 p2 e 2 pk e k g (p-1)/p 1 ) 1 mod p g è un generatore di Z p &... g (p-1)/p k ) 1 mod p # 11 primo, p-1 = 10 = 2 5 Esempio # 2 è un generatore di Z 11 perché 2 (11-1)/2 = 2 5 = 10 ) 1 mod 11 2 (11-1)/5 = 2 2 = 4 ) 1 mod 11 # 11 primo, p-1 = 10 = 2 5 Esempio # 3 non è un generatore di Z 11 perché 3 (11-1)/2 = 3 5 = 243 = 1 mod 11 3 (11-1)/5 = 3 2 = 9 ) 1 mod 11 28 29 Scelta di un generatore p primo, p-1 = p e 1 1 p2 e 2 pk e k g (p-1)/p 1 ) 1 mod p g è un generatore di Z p &... g (p-1)/p k ) 1 mod p Scegli_generatore ( p, (p 1,e 1,p 2,e 2,,p k,e k ) ) 1. g ( elemento scelto a caso in Z p 2. if (g (p-1)/p 1 ) 1 mod p and and g (p-1)/p k ) 1 mod p) then esci trovato! else go to 1. Probabilità successo singola iterazione! Numero di generatori modulo un primo p è per ogni intero n'5, $($(p)) = $(p-1) $(n) > n/(6lnln n) > (p-1) / (6 lnln(p-1)) 30 31
Probabilità successo singola iterazione! Numero di generatori modulo un primo p è $($(p)) = $(p-1) > (p-1) / (6 lnln(p-1)) per ogni intero n'5, $(n) > n/(6lnln n)! Probabilità che un elemento a caso in Z p sia generatore $($(p)) p-1 1 = > = $(p) $(p) 6lnln(p -1) 6 lnln(p -1) Analisi di Scegli_generatore Numero medio di iterazioni < 6 lnln(p -1) 512 bit 6 lnln(2 512 ) 35,23 1024 bit 6 lnln(2 1024 ) 39,38 2048 bit 6 lnln(2 2048 ) 43,54 32 33 Generazione chiavi Diffie-Hellman Accordo su chiave Diffie-Hellman: sicurezza 1. Scegli a caso 2 numeri primi p 1 p 2 2. p ( 1 + 2p 1 p 2 3. Se p non è primo, go to 1. 4. g ( Scegli_generatore(p,(2,1,p 1,1,p 2,1))! E sicuro contro attaccanti passivi! Non è sicuro contro attacchi man-in-the-middle 34 35
Diffie-Hellman attacco man-in-the-middle scelgo x"z p primo p, generatore g di Z p g x mod p g z mod p scelgo z"zp g z mod p g y mod p scelgo y"z p Accordo su chiave Diffie-Hellman: sicurezza! E sicuro contro attaccanti passivi! Non è sicuro contro attacchi man-in-the-middle! Occorre autenticazione K A = g xz mod p = (g z ) x mod p K A = g xz mod p = (g x ) z mod p K B = g zy mod p = (g y ) z mod p K B = g zy mod p = (g z ) y mod p 36 37 Accordo su chiavi: indice Schema di Merkle! Diffie-Hellman! Basato sull intrattabilità del problema del logaritmo discreto! Puzzle di Merkle! Non basato su alcuna assunzione computazionale 38 Ralph C. Merkle Corso di Computer Security, UC Berkeley, autunno 1974: proposta per un progetto, rifiutata dal docente http://merkle.com/1974/ Merkle, R. C., "Secure Communications over Insecure Channels". Communications of the ACM, vol. 21, n. 4, April 1978, pp. 294 299. 39
Schema di Merkle Puzzle di Merkle! Non basato su assunzioni computazionali! 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 40! Puzzle la cui soluzione richiede t operazioni! Esempio: Puzzle (x, ID, S) Scegli una chiave k di 56 bit Computa y ( CBC-DES k (x, ID, S) return (y, primi 20 bit di k)! x è la soluzione del puzzle -Richiede 2 35 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 41 Puzzle di Merkle Puzzle di Merkle Scegli x 1,, x n, ID 1,, ID n Puzzle i (Puzzle(x i,id i,s) Puzzle 1,, Puzzle n ID j x j Risolvi Puzzle j Ottieni (x j, ID j ) x j Computazioni di :! Costruzione di n puzzle tempo +(n) Computazioni di :! Risoluzione di un puzzle tempo +(t) Computazioni di :! Risoluzione di n/2 puzzle in media tempo +(t n) 42 43
Puzzle di Merkle Computazioni di : Se n = +(t)! Costruzione di n puzzle tempo +(n) Computazioni di :! Risoluzione di un puzzle tempo +(n) Computazioni di :! Risoluzione di n/2 puzzle in media tempo +(n 2 ) 44 Puzzle di Merkle problema di sicurezza! Implementazione poco accorta potrebbe rendere insicuro lo schema! Esempio: Puzzle (x, ID, S) Scegli una chiave k di 56 bit Computa y ( DES k (x), DES k (ID), DES k (S) return (y, primi 20 bit di k)! x è la soluzione del puzzle -Richiede 2 35 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 45 Puzzle di Merkle Puzzle di Merkle problema di sicurezza Scegli x 1,, x n, ID 1,, ID n Puzzle i (Puzzle(x i,id i,s) Puzzle 1,, Puzzle n ID j Risolvi Puzzle j Ottieni (x j, ID j )! Implementazione poco accorta potrebbe rendere insicuro lo schema! Esempio: Puzzle (x, ID, S) Scegli una chiave k di 56 bit +(n) Computa y ( DES k (x), DES k (ID), DES k (S) return (y, primi 20 bit di k) x j x j 46! Dopo aver visto ID j! Cifra DES k (ID j ) con tutte le possibili chiavi k! Correla le cifrature con tutti i Puzzle visti! Trova il Puzzle con ID j! Decifra il corrispondente DES k (x) 47
Puzzle di Merkle problema di sicurezza Bibliografia! Implementazione poco accorta potrebbe rendere insicuro lo schema! Esempio: Puzzle (x, ID, S) Scegli una chiave k di 56 bit Computa y ( DES k (x), DES k (ID), DES k (S) return (y, primi 20 bit di k) Meglio:! DES k (x), DES k (ID! x), DES k (S! x) con S!0! DES k (x), DES x (ID), DES x (S)! AES k (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 NO 48! Cryptography and Network Security by W. Stallings (2010)! cap. 1O! Tesina di Sicurezza su reti! Accordo su chiavi 49 Domande? 50