•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