•Alfredo De Santis •24/05/2000 Accordo su una chiave Diffie-Hellman [1976] primo p, generatore g di Zp* … ssuntina K ?? iagio ?? ssuntina K Diffie-Hellman 0 Diffie-Hellman Generatori iagio 1 Diffie-Hellman [1976] i g è generatore di Zp* se {g |1≤i≤ p-1} = Zp* 2 = 1024 = 1 mod 11 218 = 2 mod 11 2 = 256 = 3 mod 11 224 = 4 mod 11 29 = 16 = 5 mod 11 27 = 512 = 6 mod 11 23 = 128 = 7 mod 11 = 8 mod 11 2 265 = 64 = 9 mod 11 2 = 32 = 10 mod 11 scelgo x primo p, generatore g scelgo y 10 Esempio: g = 2 è un generatore di Z11* Diffie-Hellman 2 Diffie-Hellman Diffie-Hellman [1976] scelgo x primo p, generatore g ?? ssuntina iagio 3 Diffie-Hellman [1976] scelgo y gx mod p scelgo x primo p, generatore g scelgo y gx mod p gy mod p ssuntina ?? Diffie-Hellman •Corso di Sicurezza su Reti iagio 4 ssuntina ?? Diffie-Hellman iagio 5 •1 •Alfredo De Santis •24/05/2000 Diffie-Hellman [1976] primo p, generatore g scelgo x Diffie-Hellman: “piccolo” esempio scelgo y scelgo x=3 gx mod p primo 11, generatore 2 8 = 23 mod 11 gy mod p 5 = 24 mod 11 ?? ssuntina scelgo y=4 K=gxy mod p Diffie-Hellman iagio K=gxy mod p 6 K=4=23·4 mod 11 Logaritmo discreto Esempio: 3 = 7 mod 13 soluzione x = 6 Se n è primo, i migliori algoritmi hanno complessità x 1-a Ln[a,c] = O(e(c+o(1))(ln n) (lnln n) ) con c > 0 ed 0 < a < 1 Miglior algoritmo: Number field sieve tempo medio euristico Ln[1/3, 1.923] Diffie-Hellman 8 7 Diffie-Hellman 9 Generatori di Zn* Ordine di α∈Z = il più piccolo intero positivo r tale che α = 1 mod n α è generatore di Z se ha ordine φ(n) n primo p, generatore g, gx mod p, gy mod p Calcolare: gxy mod p Input: * r Z Il miglior algoritmo conosciuto calcola prima il logaritmo discreto x ← logg,p(gx mod p) … ma non si sa se sono equivalenti! •Corso di Sicurezza su Reti K=4=23·4 mod 11 Diffie-Hellman La sicurezza di molte tecniche crittografiche si basa sulla intrattabilità del logaritmo discreto: Crittosistema di El-Gamal Firme digitali di El-Gamal e DSS Accordo su chiavi di Diffie-Hellman … Problema di Diffie-Hellman Diffie-Hellman iagio Logaritmo discreto Dati a,n,b calcolare x tale che ax = b mod n a ?? ssuntina 10 n * ha un generatore ⇔ n = 2,4,pk,2pk, con p primo e k≥1 – In particolare, se p è primo, allora Zp* ha un generatore 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 – il numero di generatori in Zn* è φ(φ(n)). n * Diffie-Hellman 11 •2 •Alfredo De Santis •24/05/2000 Scelta di un generatore p primo, p -1 = p p … p α è un generatore di Z ⇔ 1 e1 2 e1 p k ek * Scelta di un generatore p primo, p -1 = p p … p α è un generatore di Z ⇔ 1 α(p-1)/p1 ≠ 1 mod p ... e1 2 e1 k p α(p-1)/pk ≠ 1 mod p ek α(p-1)/p1 ≠ 1 mod p * ... α(p-1)/pk ≠ 1 mod p Scegli_generatore ( p, (p ,e ,p ,e ,…,p ,e ) ) 1 1 2 2 k k α ← elemento scelto a caso in Zp* 2. if (α(p-1)/p1 ≠ 1 mod p and … and α(p-1)/pk ≠ 1 mod p) trovato! then esci else go to 1. 1. Diffie-Hellman 12 Diffie-Hellman Probabilità successo singola iterazione Analisi di Scegli_generatore 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)) φ(p) > p -1 φ(p) 6 ·lnln(p -1) = p * Numero medio di iterazioni sia generatore 1 14 6 ·lnln(2 ) 1024 6 ·lnln(2 ) ≈ 35,23 ≈ 39,38 Diffie-Hellman 15 Puzzle di Merkle Puzzle di Merkle Puzzle la cui soluzione richiede t operazioni Scegli x1, …, xn, ID1, …, IDn Puzzlei←Puzzle(xi,IDi) Scegli j Risolvi Puzzlej Puzzle1, …, Puzzlen Puzzle (x,ID) Scegli una chiave k Computa y ← CBC-DESk(x,ID) return (y, primi 20 bit di k) IDj Soluzione del puzzle: x Richiede 235 operazioni in media Diffie-Hellman •Corso di Sicurezza su Reti 512 512 bit 1024 bit < 6 ·lnln(p -1) 6 ·lnln(p -1) Diffie-Hellman Esempio: 13 16 ssuntina x j ?? Diffie-Hellman iagio x j 17 •3 •Alfredo De Santis •24/05/2000 Puzzle di Merkle Computazioni di Puzzle di Merkle : – Costruzione di n puzzle tempo θ(n) – Risoluzione di un puzzle tempo θ(t) Computazioni di Computazioni di : : – Risoluzione di n/2 puzzle in media Diffie-Hellman •Corso di Sicurezza su Reti tempo θ(t·n) 18 Computazioni di : Se n = θ(t) – Costruzione di n puzzle tempo θ(n) – Risoluzione di un puzzle tempo θ(n) – Risoluzione di n/2 puzzle in media tempo θ(n2) Computazioni di Computazioni di : : Diffie-Hellman 19 •4