•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