$ $ $ … … ?? !!" " " !# Stelvio Cimato 1 DTI – Università di Milano, Polo di Crema $ $ %& Vedremo due schemi: '()*+, primo p, generatore g di Zp* Diffie-Hellman Basato sull’intrattabilità del problema del logaritmo discreto Puzzle di Merkle ?? Non basato su alcuna assunzione computazionale Stelvio Cimato Stelvio Cimato 2 DTI – Università di Milano, Polo di Crema - $ $. 0 / ≤≤≤≤ 10 Stelvio Cimato 2 = 1024 = 1 mod 11 1 2 = 2 mod 11 8 2 = 256 = 3 mod 11 2 2 = 4 mod 11 4 2 = 16 = 5 mod 11 9 2 = 512 = 6 mod 11 7 2 = 128 = 7 mod 11 3 2 = 8 mod 11 6 2 = 64 = 9 mod 11 5 2 = 32 = 10 mod 11 DTI – Università di Milano, Polo di Crema 4 3 DTI – Università di Milano, Polo di Crema $ $.()/ 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 - $ $. Zn* ha un generatore ⇔ / %& n = 2,4,pk,2pk, con p '()*+, ∈∈ primo e k≥1 ∈∈ 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) ?? Stelvio Cimato Stelvio Cimato 6 DTI – Università di Milano, Polo di Crema %& '()*+, ∈∈ 7 DTI – Università di Milano, Polo di Crema %& '()*+, ∈∈ ∈∈ ∈∈ ?? ?? Stelvio Cimato Stelvio Cimato 8 DTI – Università di Milano, Polo di Crema %& %& '()*+, ∈∈ 1 $ 2 primo 11, generatore 2 ∈∈ ?? ?? Stelvio Cimato DTI – Università di Milano, Polo di Crema 9 DTI – Università di Milano, Polo di Crema Stelvio Cimato 10 DTI – Università di Milano, Polo di Crema 11 %& $ 3 primo 25307, generatore 2 """" !! ## # ! Crittosistema ElGamal Accordo su chiavi Diffie-Hellman $# Firme digitali DSS %% ?? !!"" ##"" x Esempio: 3 = 7 mod 13 ## !!"" Stelvio Cimato !! soluzione x = 6 """" !! Stelvio Cimato 12 DTI – Università di Milano, Polo di Crema 3 La sicurezza di molte tecniche crittografiche si basa sulla intrattabilità del logaritmo discreto: $# "" ! #" $ 13 DTI – Università di Milano, Polo di Crema $ 0 4 %& $ $ %% a Ln[a,c] = O(e(c+o(1))(ln n) (lnln n)1-a !! !! && '' Se n è primo, i migliori algoritmi hanno complessità ) (( "" ! ! "" ! ! 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] #! Stelvio Cimato $ % & Stelvio Cimato DTI – Università di Milano, Polo di Crema $ 14 15 DTI – Università di Milano, Polo di Crema $ $ $ $ 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 * * i ≤i≤ {g ≤≤p-1} {g|1≤ |1≤ ≤i≤ p-1}==ZZpp*?? i else elsegoto goto1. 1. Stelvio Cimato DTI – Università di Milano, Polo di Crema Stelvio Cimato 16 DTI – Università di Milano, Polo di Crema LL’unico ’unico algoritmo algoritmo efficiente efficientenecessita necessita dei deifattori fattoriprimi primi di -1 pp-1 di p17 $ $ $ p primo, p -1 = p1e1 p2e2… pkek $ $ $ 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 Zp* ⇔ !! '' ++ ++ Stelvio Cimato )) ** '' ≠≠ !! .. ≠≠ !! p primo, p -1 = p1e1 p2e2… pkek !! '' //++ //++ ,,,-) ,-) $ $ $ 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 Zp* ⇔ )) ..// 00 ≠≠ !! !! ** Stelvio Cimato ** ++ ++ ← ← !! ++ ,, ++ + + ,-,- ≠≠ !! -- ## 4 4 0 !! ,, trovato! 21 $ $ Numero di generatori modulo un primo p è Numero di generatori modulo un primo p è per perogni ogniintero interon≥5, n≥5, φ(n) φ(n)>>nn//(6lnln (6lnlnn) n) φ(φ(p)) = φ(p-1) per perogni ogniintero interon≥5, n≥5, φ(n) φ(n)>>nn//(6lnln (6lnlnn) n) > (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 11 11,, 4 4 $ > (p-1) / (6 ·lnln(p-1)) + + ,-,- 1 ≠ 1 ≠ ,, ## DTI – Università di Milano, Polo di Crema $ φ(φ(p)) = φ(p-1) ++ ++ Stelvio Cimato 20 DTI – Università di Milano, Polo di Crema g(p-1)/p1 ≠ 1 mod p ... g(p-1)/pk ≠ 1 mod p g è un generatore di Zp* ⇔ () () //)) // 19 DTI – Università di Milano, Polo di Crema $ $ $ 0 ,,,-) ,-) () () Stelvio Cimato 18 DTI – Università di Milano, Polo di Crema // g(p-1)/p1 ≠ 1 mod p ... g(p-1)/pk ≠ 1 mod p g è un generatore di Zp* ⇔ φ(φ(p)) φ(p) > p-1 φ(p) · 6lnln(p -1) = 1 6 ·lnln(p -1) Stelvio Cimato 22 DTI – Università di Milano, Polo di Crema 23 - $ $ 1024 1024 bit bit 2048 2048 bit bit Scegli Scegli aa caso caso 22 numeri numeri primi primi pp11 pp22 pp ← ← 11 ++ 2p 2p11pp22 512 66·lnln(2 ·lnln(2512)) ≈≈ 35,23 35,23 Se Se pp non non èè primo, primo, go go to to 1. 1. 1024) 6 ·lnln(21024 ) ≈≈ 39,38 39,38 6 ·lnln(2 gg ← ← Scegli_generatore(p,(2,1,p Scegli_generatore(p,(2,1,p11,1,p ,1,p22,1)) ,1)) 2048) 6 ·lnln(22048 6 ·lnln(2 ) ≈≈ 43,54 43,54 Stelvio Cimato Stelvio Cimato 24 DTI – Università di Milano, Polo di Crema $ $ 0 6 0 26 99 &3 &3 99 &3 &3 .'// &3 .'// ← ←.'// .'// &3 )) .'// 6 22 :: 33 44 !! '' '/ 6&3 0 4 , 5 16 ' '// '// 6) 0 ' 5 4' % 7 $ $ Computazioni di DTI – Università di Milano, Polo di Crema : tempo θ(t) : Risoluzione di n/2 puzzle in media 88 6 tempo θ(n) Risoluzione di un puzzle ?? 27 : Computazioni di 88 '// DTI – Università di Milano, Polo di Crema Costruzione di n puzzle &3 8 Stelvio Cimato '/ ' Computazioni di 9 .'// 33,, / 0 55 .'// .'// 8 8 8 8 &3 &38 8 %% 11 ""← ←44 44 553311++ 22 +" !! '' 1, +" 1, '// 12 - 1) 5 1 Stelvio Cimato $ $ 6 .'// .'// ++ 22 33,, Esempio: Stelvio Cimato 0 $ $ Puzzle la cui soluzione richiede t operazioni 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 DTI – Università di Milano, Polo di Crema 25 DTI – Università di Milano, Polo di Crema 6 Non basato su assunzioni computazionali Alice genera n chiavi distinte e “nasconde” ogni chiave in un puzzle )) $ %& Numero medio di iterazioni < 6 ·lnln(p -1) 512 512 bit bit $ 5 tempo θ(t·n) Stelvio Cimato 28 DTI – Università di Milano, Polo di Crema 29 0 $ $ Computazioni di : : Risoluzione di un puzzle Computazioni di Se Se nn == θθ(t) (t) tempo θ(n) Costruzione di n puzzle Computazioni di 6 tempo θ(n) : Risoluzione di n/2 puzzle in media tempo θ(n2) Stelvio Cimato DTI – Università di Milano, Polo di Crema 30