Accordo su chiavi - Dipartimento di Informatica

•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