•Alfredo De Santis •02/05/2001 Accordo su una chiave Diffie-Hellman [1976] primo p, generatore g di Zp* … … nnarella iagio ?? K K nnarella iagio ?? K K Diffie-Hellman 0 Generatori ii gg èègeneratore generatore di di ZZpp** se se {g {g|1≤i≤ |1≤i≤ p-1} p-1} == ZZpp** 10 2 1 2 8 2 2 2 4 2 9 2 7 2 3 2 6 2 5 2 Esempio: gg == 22 èè un un generatore generatore ** di diZZ11 11 = 1024 = 1 mod 11 = 2 mod 11 = 256 = 3 mod 11 = 4 mod 11 = 16 = 5 mod 11 = 512 = 6 mod 11 = 128 = 7 mod 11 = 8 mod 11 = 64 = 9 mod 11 = 32 = 10 mod 11 Diffie-Hellman 2 Diffie-Hellman [1976] scelgo scelgo xx primo p, generatore g Diffie-Hellman 1 Potenze in Z19* a a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 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 17 4 11 16 6 7 5 9 11 16 6 7 5 9 18 1 18 1 18 1 18 1 17 4 Diffie-Hellman 1 18 1 18 1 18 1 18 1 18 1 3 1 1 Diffie-Hellman [1976] scelgo scelgo yy scelgo scelgo xx primo p, generatore g scelgo scelgo yy gx mod p nnarella ?? Diffie-Hellman •Corso di Sicurezza su Reti iagio 4 nnarella ?? Diffie-Hellman iagio 5 •1 •Alfredo De Santis •02/05/2001 Diffie-Hellman [1976] primo p, generatore g scelgo scelgo xx Diffie-Hellman [1976] scelgo scelgo yy scelgo scelgo xx gx mod p primo p, generatore g gx mod p gy mod p nnarella gy mod p iagio ?? Diffie-Hellman 6 nnarella xy K K==ggxymod modpp ==(g gyy))xxmod ((g modpp primo 11, generatore 2 scelgo scelgo y=4 y=4 8 = 23 mod 11 5 = 24 mod 11 nnarella 3·4 K=4=2 K=4=233·4mod mod11 11 ==553mod mod11 11 iagio ?? Diffie-Hellman – – – – – Diffie-Hellman ) Accordo su chiavi di Diffie-Hellman con c > 0 ed 0 < a < 1 Miglior algoritmo: Number field sieve •Corso di Sicurezza su Reti Crittosistema di El-Gamal Firme digitali di El-Gamal e DSS Ln[1/3, 1.923] Diffie-Hellman 9 La sicurezza di molte tecniche crittografiche si basa sulla intrattabilità del logaritmo discreto: x Esempio: 3 = 7 mod 13 soluzione x = 6 Se n è primo, i migliori algoritmi hanno complessità tempo medio euristico 7 Logaritmo discreto x Dati Dati a,n,b a,n,b calcolare calcolarexx tale tale che che aax == bb mod mod nn (lnln n)1-a xy K K==ggxymod modpp ==(g gxx))yymod ((g modpp Utilizzare p = 19 Calcolo di g Calcolo di x ed y Calcolo messaggi scambiati (ggx mod 19, gy mod 19) Calcolo della chiave K 3·4 K=4=2 K=4=243·4mod mod11 11 ==884mod mod11 118 a Diffie-Hellman Svolgere “piccolo” esempio Diffie-Hellman Logaritmo discreto Ln[a,c] = O(e(c+o(1))(ln n) iagio ?? Esercizio Diffie-Hellman: “piccolo” esempio scelgo scelgo x=3 x=3 scelgo scelgo yy … 10 Diffie-Hellman 11 •2 •Alfredo De Santis •02/05/2001 Problema di Diffie-Hellman Ordine di α∈Zn* = il più piccolo intero positivo r Input: Input: primo primo p, p, generatore generatore g, g, y ggxx mod mod p, p, ggy mod mod pp Calcolare: mod pp Calcolare: ggxyxy mod tale che αr = 1 mod n Teorema di Eulero α è generatore di Zn* se ha ordine φ(n) x∈Z * φ(n)=1 mod n n ⇒ x Zn* ha un generatore ⇔ n = 2,4,pk,2pk, con p primo e k≥1 – In particolare, se p è primo, allora Zp* ha un generatore Il miglior algoritmo conosciuto calcola prima il logaritmo discreto x ← logg,p(gx mod p) 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 … ma non si sa se sono equivalenti! – il numero di generatori in Zn* è φ(φ(n)). Diffie-Hellman 12 Potenze in Z19* Diffie-Hellman a a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 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 17 4 11 16 6 7 5 9 11 16 6 7 5 9 18 1 18 1 18 1 18 1 17 4 Diffie-Hellman 1 18 1 18 1 18 1 18 1 18 α è un generatore di Zp* ⇔ 13 Scelta di un generatore p primo, p -1 = p1e1 p2e1… pkek α è un generatore di Zp* ⇔ α(p-1)/p1 ≠ 1 mod p ... α(p-1)/pk ≠ 1 mod p 1 14 1 1 Scelta di un generatore p primo, p -1 = p1e1 p2e1… pkek Generatori di Zn* Diffie-Hellman 15 Scelta di un generatore p primo, p -1 = p1e1 p2e1… pkek α(p-1)/p1 ≠ 1 mod p ... α(p-1)/pk ≠ 1 mod p α è un generatore di Zp* ⇔ α(p-1)/p1 ≠ 1 mod p ... α(p-1)/pk ≠ 1 mod p Esempio 11 11 primo, primo, p-1 p-1 == 10 10 == 2·5 2·5 Esempio * * perché 22 èè un un generatore generatore di di ZZ1111 perché (11-1)/2 = 22(11-1)/2 = 2255== 10 10 ≠≠ 11 mod mod 11 11 (11-1)/5 (11-1)/5 == 2222 == 44 ≠≠ 11 mod 22 mod 11 11 Esempio 11 11 primo, primo, p-1 p-1 == 10 10 == 2·5 2·5 Esempio * * perché 33 non non èè un un generatore generatore di di ZZ1111 perché (11-1)/2 = 33(11-1)/2 = 3355== 243 243 == 11 mod mod 11 11 (11-1)/5 (11-1)/5 == 3322 == 99 ≠≠ 11 mod 33 mod 11 11 Diffie-Hellman Diffie-Hellman •Corso di Sicurezza su Reti 16 17 •3 •Alfredo De Santis •02/05/2001 Probabilità successo singola iterazione Scelta di un generatore p primo, p -1 = p1e1 p2e1… pkek α è un generatore di Zp* ⇔ Numero di generatori modulo un primo p è α(p-1)/p1 ≠ 1 mod p ... α(p-1)/pk ≠ 1 mod p φ(φ(p)) = φ(p -1) > (p -1) / (6 ·lnln(p-1)) per perogni ogniintero interon≥5, n≥5, φ(n) φ(n)>>nn//(6lnln (6lnlnn) n) Scegli_generatore Scegli_generatore (( p,p, (p(p11,e,e11,p,p22,e,e22,…,p ,…,pkk,e ,ekk)))) * 1. 1. αα ← ← elemento elemento scelto scelto aa caso caso in in ZZpp* (p-1)/p 1 ≠ 1 mod p and … and α(p-1)/p kk≠ 1 mod p) 2. if ( α (p-1)/p (p-1)/p 1 2. if (α ≠ 1 mod p and … and α ≠ 1 mod p) then trovato! then esci esci else else go go to to 1. 1. Diffie-Hellman 18 Diffie-Hellman Probabilità successo singola iterazione 19 Analisi di Scegli_generatore Numero di generatori modulo un primo p è φ(φ(p)) = φ(p -1) > (p -1) / (6 ·lnln(p-1)) per perogni ogniintero interon≥5, n≥5, φ(n) φ(n)>>nn//(6lnln (6lnlnn) n) Numero medio di iterazioni < 6 ·lnln(p -1) Probabilità che un elemento a caso in Zp* sia generatore = φ(φ(p)) φ(p) > p -1 φ(p) 6 ·lnln(p -1) = 1 6 ·lnln(p -1) Diffie-Hellman 20 512 512 bit bit 512 66·lnln(2 ·lnln(2512)) ≈≈ 35,23 35,23 1024 1024 bit bit 1024 66·lnln(2 ·lnln(21024)) ≈≈ 39,38 39,38 2048 2048 bit bit 2048 66·lnln(2 ·lnln(22048)) ≈≈ 43,54 43,54 Diffie-Hellman 21 Esercizio Generazione chiavi Diffie-Hellman Svolgere “piccolo” esempio Diffie-Hellman 1. 1. Scegli Scegli aa caso caso 22 numeri numeri primi primi pp11 pp22 – – – – 2. 2. pp ← ← 11 ++ 2p 2p11pp22 3. 3. Se Se pp non non èè primo, primo, go go to to 1. 1. Calcolo di p e g Calcolo di x ed y Calcolo messaggi scambiati (ggx mod p, gy mod p) Calcolo della chiave K 4. 4. gg ← ← Scegli_generatore(p,(2,1,p Scegli_generatore(p,(2,1,p11,1,p ,1,p22,1)) ,1)) Diffie-Hellman •Corso di Sicurezza su Reti 22 Diffie-Hellman 23 •4 •Alfredo De Santis •02/05/2001 Puzzle di Merkle Puzzle di Merkle Puzzle la cui soluzione richiede t operazioni Esempio: Scegli Scegli xx11,,…, …,xxnn,,ID ID11,,…, …,ID IDnn Puzzle Puzzle( Puzzle(xi,ID Puzzlei← ←Puzzle(x ,IDi)) i i Puzzle1, …, Puzzlen Puzzle Puzzle(x,ID) (x,ID) Scegli Scegliuna unachiave chiavekk Computa (x,ID) Computa yy← ←CBC-DES CBC-DESkk(x,ID) return return (y, (y,primi primi20 20bit bitdi dik) k) IDj Soluzione del puzzle: x Richiede 235 operazioni in media Diffie-Hellman Computazioni di Computazioni di tempo θ(n) tempo θ(t) Diffie-Hellman •Corso di Sicurezza su Reti iagio xxjj 25 26 Se Se nn == θ(t) θ(t) tempo θ(n) : – Risoluzione di un puzzle Computazioni di tempo θ(t·n) : – Costruzione di n puzzle Computazioni di : – Risoluzione di n/2 puzzle in media Diffie-Hellman Computazioni di : – Risoluzione di un puzzle xxjj ?? Puzzle di Merkle : – Costruzione di n puzzle nnarella 24 Puzzle di Merkle Computazioni di Scegli Scegli jj Risolvi Risolvi Puzzle Puzzlej j i tempo θ(n) : – Risoluzione di n/2 puzzle in media Diffie-Hellman tempo θ(n2) 27 •5