•26/05/2005 Accordo su una chiave Accordo su chiavi … … Alice Stelvio Cimato Dipartimento di Tecnologie dell’Informazione Università di Milano [email protected] http://www.dti.unimi.it/~cimato http://www.dti.unimi.it/ ~cimato Bob ?? KK KK Stelvio Cimato 1 DTI – Università di Milano, Polo di Crema Accordo su chiavi Diffie-Hellman [1976] Vedremo due schemi: primo p, generatore g di Zp* Diffie-Hellman Basato sull’intrattabilità del problema del logaritmo discreto Alice Bob Puzzle di Merkle ?? Non basato su alcuna assunzione computazionale Stelvio Cimato Stelvio Cimato DTI – Università di Milano, Polo di Crema 2 Generatori di Zp* ii gg èè generatore generatoredi di ZZpp** se se {g {g|1 |1 ii p-1} p-1} == ZZpp** 10 Esempio: gg == 22 èè un un generatore generatore * di Z1111* di Z Stelvio Cimato 2 = 1024 = 1 mod 11 21 = 2 mod 11 8 2 = 256 = 3 mod 11 22 = 4 mod 11 24 = 16 = 5 mod 11 9 2 = 512 = 6 mod 11 7 2 = 128 = 7 mod 11 23 = 8 mod 11 26 = 64 = 9 mod 11 5 = 10 mod 11 2 = 32 DTI – Università di Milano, Polo di Crema 4 3 DTI – Università di Milano, Polo di Crema 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 1 17 4Stelvio 11 Cimato 16 6 7 5 9 1 17 4 11 16 6 7 5 9 1 18 1DTI18 1 18 di Milano, 1 18 Polo 1 di18 1 – Università Crema 18 1 18 1 18 1 18 15 •1 •26/05/2005 Generatori di Zn* Zn* ha un generatore Diffie-Hellman [1976] primo p, generatore g di Zp* n = 2,4,pk,2pk, con p scelgo scelgo xx ZZpp primo e k 1 scelgo scelgo yy ZZpp Se p è primo, allora Zp* ha un generatore Il numero di generatori di Zn* è ( (n)) Se p è primo, il numero di generatori di Zp* è (p-1) Alice Stelvio Cimato Stelvio Cimato 6 DTI – Università di Milano, Polo di Crema Diffie-Hellman [1976] scelgo scelgo xx ZZpp Bob ?? primo p, generatore g 7 DTI – Università di Milano, Polo di Crema Diffie-Hellman [1976] scelgo scelgo xx ZZpp scelgo scelgo yy ZZpp primo p, generatore g gx mod p scelgo scelgo xx ZZpp gx mod p gy mod p Alice Alice Bob ?? Stelvio Cimato Stelvio Cimato 8 DTI – Università di Milano, Polo di Crema primo p, generatore g Diffie-Hellman: “piccolo” esempio scelgo scelgo xx ZZpp scelgo scelgo x=3 x=3 primo 11, generatore 2 gx mod p xy mod KK == ggxy mod pp = (gyy)xx mod scelgo scelgo y=4 y=4 8 = 23 mod 11 gy mod p Alice 9 DTI – Università di Milano, Polo di Crema Diffie-Hellman [1976] scelgo scelgo xx ZZpp Bob ?? ?? = (g )) mod mod pp Stelvio Cimato DTI – Università di Milano, Polo di Crema 5 = 24 mod 11 Alice Bob xy mod KK == ggxy mod pp x y == (g (gx))y mod mod pp ?? 4 3 K=4=(2 K=4=(24))3 mod mod 11 11 Bob 3 4 K=4=(2 K=4=(23))4 mod mod 11 11 Stelvio Cimato 10 DTI – Università di Milano, Polo di Crema 11 •2 •26/05/2005 Diffie-Hellman: esempio scelgo scelgo x=3578 x=3578 Logaritmo discreto primo 25307, generatore 2 scelgo scelgo y=19956 y=19956 6113 = 23578 mod 25307 Crittosistema Firme digitali DSS x Dati Dati a,n,b a,n,b calcolare calcolare xx tale tale che che aax == bb mod mod nn Bob ?? 3578 K=3694=7984 K=3694=79843578 x 19956 K=3694=6113 K=3694=611319956 Stelvio Cimato Esempio: 3 = 7 mod 13 soluzione x = 6 Stelvio Cimato 12 DTI – Università di Milano, Polo di Crema 13 DTI – Università di Milano, Polo di Crema Logaritmo discreto: Problema di Diffie-Hellman Complessità algoritmi x Dati Dati a,n,b a,n,b calcolare calcolare xx tale tale che che aax == bb mod mod nn Input: Input: primo primo p, p, generatore generatore g, g, ggxx mod p, mod p, ggyy mod mod pp xy mod Calcolare: Calcolare: ggxy mod pp Se n è primo, i migliori algoritmi hanno complessità Ln[a,c] = O(e ElGamal Accordo su chiavi Diffie-Hellman 7984 = 219956 mod 25307 Alice La sicurezza di molte tecniche crittografiche si basa sulla intrattabilità del logaritmo discreto: (c+o(1))(ln n)a(lnln n)1-a ) con c > 0 ed 0 < a < 1 Il miglior algoritmo conosciuto calcola prima il logaritmo discreto x logg,p(gx mod p) Miglior algoritmo: Number field sieve tempo medio euristico Ln[1/3, 1.923] … ma non si sa se sono equivalenti! Stelvio Cimato DTI – Università di Milano, Polo di Crema Stelvio Cimato 14 Scelta dei parametri 15 DTI – Università di Milano, Polo di Crema Scelta di un generatore Scegli_Generatore_Naive Scegli_Generatore_Naive (p) (p) Come scegliere p e g? 1. 1.Scegli Scegliaacaso casoggin in Z Zpp** ii ** 2. If {g |1 i p-1} = Z 2. If {g |1 i p-1} = Zpp then thentrovato trovato ii * {g {g|1 |1 ii p-1} p-1}==ZZpp*?? else elsegoto goto1. 1. Stelvio Cimato DTI – Università di Milano, Polo di Crema Stelvio Cimato 16 DTI – Università di Milano, Polo di Crema L’unico L’unicoalgoritmo algoritmo efficiente efficientenecessita necessita dei deifattori fattoriprimi primi di -1 pp-1 di p17 •3 •26/05/2005 Scelta di un generatore p primo, p -1 = p1e1 p2e2… pkek g è un generatore di Zp* g(p-1)/p1 ... g(p-1)/pk Scelta di un generatore p primo, p -1 = p1e1 p2e2… pkek 1 mod p g è un generatore di Zp* 1 mod p g(p-1)/p1 ... g(p-1)/pk 1 mod p 1 mod p Esempio 11 11 primo, primo, p-1 p-1 == 10 10 == 2·5 2·5 Esempio * 22 èè un perché un generatore generatore di di ZZ1111* perché 5 (11-1)/2 == 2 22(11-1)/2 25== 10 10 11 mod mod 11 11 (11-1)/5 == 2 22(11-1)/5 222 == 44 11 mod mod 11 11 Stelvio Cimato Stelvio Cimato 18 DTI – Università di Milano, Polo di Crema Scelta di un generatore p primo, p -1 = p1e1 p2e2… pkek g è un generatore di Zp* g(p-1)/p1 ... g(p-1)/pk 19 DTI – Università di Milano, Polo di Crema Scelta di un generatore p primo, p -1 = p1e1 p2e2… pkek 1 mod p g è un generatore di Zp* 1 mod p g(p-1)/p1 ... g(p-1)/pk 1 mod p 1 mod p Scegli_generatore Scegli_generatore (( p,p, (p(p11,e,e11,p,p22,e,e22,…,p ,…,pkk,e ,ekk)))) 11 Esempio 11 primo, primo, p-1 p-1 == 10 10 == 2·5 2·5 Esempio ** perché 33 non è un generatore di Z non è un generatore di Z1111 perché (11-1)/2 == 3 33(11-1)/2 355== 243 243 == 11 mod mod 11 11 (11-1)/5 33(11-1)/5 == 3322 == 99 11 mod mod 11 11 * 1. 1. gg elemento elemento scelto scelto aa caso caso in in ZZpp* (p-1)/p (p-1)/p 1 2. 2. if if ((gg(p-1)/p1 11mod modpp and and …… and andgg(p-1)/pkk 11mod modp) p) then esci trovato! then esci else else go go to to 1. 1. Stelvio Cimato Stelvio Cimato 20 DTI – Università di Milano, Polo di Crema Probabilità successo singola iterazione Probabilità successo singola iterazione Numero di generatori modulo un primo p è Numero di generatori modulo un primo p è ( (p)) = (p-1) > (p-1) / (6 ·lnln(p-1)) per perogni ogniintero interonn 5,5, (n) (6lnlnn) n) (n)>>nn//(6lnln ( (p)) = (p-1) per perogni ogniintero interonn 5, 5, (n) (6lnlnn) n) (n)>>nn//(6lnln > (p-1) / (6 ·lnln(p-1)) Probabilità che un elemento a caso in Zp* sia generatore = Stelvio Cimato DTI – Università di Milano, Polo di Crema 21 DTI – Università di Milano, Polo di Crema ( (p)) (p) > p-1 (p) · 6lnln(p -1) = 1 6 ·lnln(p -1) Stelvio Cimato 22 DTI – Università di Milano, Polo di Crema 23 •4 •26/05/2005 Generazione chiavi Diffie-Hellman Analisi di Scegli_generatore Numero medio di iterazioni < 6 ·lnln(p -1) pp 512 66·lnln(2 ·lnln(2512)) 35,23 35,23 512 512 bit bit ) 39,38 39,38 6 ·lnln(2 gg 6 ·lnln(2 ) 43,54 43,54 Stelvio Cimato 24 DTI – Università di Milano, Polo di Crema Schema di Merkle 25 DTI – Università di Milano, Polo di Crema Puzzle di Merkle Non basato su assunzioni computazionali Alice genera n chiavi distinte e “nasconde” ogni chiave in un puzzle Puzzle la cui soluzione richiede t operazioni Esempio: 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 troppo elevato Puzzle Puzzle(x, (x,ID, ID,S) S) Scegli unachiave chiavekk Scegliuna Computa Computa yy CBC-DES CBC-DESkk(x, (x,ID, ID,S) S) return return (y, (y,primi primi20 20bit bitdi dik) 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 Stelvio Cimato Stelvio Cimato 26 DTI – Università di Milano, Polo di Crema Puzzle di Merkle Scegli Scegli xx11,, …, …, xxnn,, ID ID11,, …, …, ID IDnn Puzzle (xi,ID Puzzle Puzzlei Puzzle( Puzzle(x ,IDi,S) ,S) i i Risolvi Risolvi Puzzle Puzzlej j ) Ottieni xj,, ID ((x Ottieni (x j IDj j) Computazioni di Computazioni di ?? DTI – Università di Milano, Polo di Crema tempo (n) : Risoluzione di un puzzle Bob Stelvio Cimato : Costruzione di n puzzle IDj Alice xxjj 27 DTI – Università di Milano, Polo di Crema Puzzle di Merkle Puzzle1, …, Puzzlen xxjj Scegli_generatore(p,(2,1,p Scegli_generatore(p,(2,1,p11,1,p ,1,p22,1)) ,1)) 2048) 6 ·lnln(22048 Stelvio Cimato i 11 ++ 2p 2p11pp22 Se Se pp non non èè primo, primo, go go to to 1. 1. 1024) 6 ·lnln(21024 1024 1024 bit bit 2048 2048 bit bit Scegli Scegli aa caso caso 22 numeri numeri primi primi pp11 pp22 Computazioni di tempo (t) : Risoluzione di n/2 puzzle in media tempo (t·n) Stelvio Cimato 28 DTI – Università di Milano, Polo di Crema 29 •5 •26/05/2005 Puzzle di Merkle Computazioni di : Costruzione di n puzzle Computazioni di tempo (n) : Risoluzione di un puzzle Computazioni di Se Se nn == (t) (t) tempo (n) : Risoluzione di n/2 puzzle in media tempo (n2) Stelvio Cimato DTI – Università di Milano, Polo di Crema 30 •6