$ $
$
…
…
??
!!" " "
!#
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