•Alfredo De Santis
•04/04/2002
Crittosistema a chiave pubblica
Cifratura
file pubblico
file pubblico
utente
utente chiave
chiave pubblica
pubblica
A
kpub
A
kpub
…
…
…
…
chiave
chiave privata
privata
kpriv
kpriv
utente
utente chiave
chiave pubblica
pubblica
A
kpub
A
kpub
…
…
…
…
Devo cifrare il messaggio M
ed inviarlo ad A
iagio
nnarella
Crittografia a Chiave Pubblica
0
Cifratura
Cifratura di M per
A
Devo decifrare il
messaggio cifrato C
iagio
C ← CIFRA (kpub, M)
Crittografia a Chiave Pubblica
2
•Corso di Sicurezza su Reti
C
Crittografia a Chiave Pubblica
C?
3
“… both Gauss and lesser mathematicians may be
justified in rejoicing that there is one science at any
rate, and that their own, whose very remoteness
from ordinary human activities keep it gentle and
clean.”
G. H. Hardy, A Mathematician’s Apology, 1940
Decifratura di C
M ← DECIFRA (kpriv , C)
Crittografia a Chiave Pubblica
nnarella
??
Crittosistemi a chiave pubblica più comuni basati sulla
Teoria dei Numeri
file pubblico
utente
utente chiave
chiave pubblica
pubblica
A
kpub
A
kpub
…
…
…
…
nnarella
file pubblico
utente
utente chiave
chiave pubblica
pubblica
A
kpub
A
kpub
…
…
…
…
Teoria dei Numeri
Decifratura
chiave
chiave privata
privata
kpriv
kpriv
1
Decifratura
file pubblico
utente
utente chiave
chiave pubblica
pubblica
A
kpub
A
kpub
…
…
…
…
C
Crittografia a Chiave Pubblica
C
4
Crittografia a Chiave Pubblica
5
•1
•Alfredo De Santis
•04/04/2002
RSA
RSA
Proposto nel 1978 da
Rivest
Shamir
Shamir
Adleman
Rivest Adleman
Sicurezza basata sulla difficoltà di fattorizzare
Crittografia a Chiave Pubblica
6
Chiavi RSA
Crittografia a Chiave Pubblica
Cifratura RSA
file pubblico
chiave
chiave privata
privata
(n,d)
(n,d)
7
file pubblico
utente
utente chiave
chiave pubblica
pubblica
A
(n,e)
A
(n,e)
…
…
…
…
utente
utente chiave
chiave pubblica
pubblica
A
(n,e)
A
(n,e)
…
…
…
…
n = pq
p,q primi
Devo cifrare il messaggio M
ed inviarlo ad
A
ed = 1 mod (p-1)(q-1)
nnarella
iagio
Crittografia a Chiave Pubblica
8
Cifratura RSA
Crittografia a Chiave Pubblica
Decifratura RSA
file pubblico
file pubblico
utente
utente chiave
chiave pubblica
pubblica
A
(n,e)
A
(n,e)
…
…
…
…
C
Cifratura di M per
A
e
C ← M mod n
Crittografia a Chiave Pubblica
•Corso di Sicurezza su Reti
9
Devo decifrare il
messaggio cifrato C
iagio
10
utente
utente chiave
chiave pubblica
pubblica
A
(n,e)
A
(n,e)
…
…
…
…
C
??
C?
nnarella
Crittografia a Chiave Pubblica
11
•2
•Alfredo De Santis
•04/04/2002
Decifratura RSA
chiave
chiave privata
privata
(n,d)
(n,d)
“Piccolo” esempio: Chiavi RSA
file pubblico
file pubblico
chiave
chiave privata
privata
(n=3337,
(n=3337, d=1019)
d=1019)
utente
utente chiave
chiave pubblica
pubblica
A
(n,e)
A
(n,e)
…
…
…
…
utente
utente
A
A
…
…
Decifratura di C
3337 = 47 ·71
p = 47, q = 71
M ← Cd mod n
C
ed = 79 ·1019 = 1 mod 3220
(p-1)(q-1) = 46 ·70 = 3220
nnarella
nnarella
Crittografia a Chiave Pubblica
12
Esempio: Cifratura RSA
file pubblico
utente
utente
A
A
…
…
1570
chiave
chiave pubblica
pubblica
(n
(n==3337,
3337,ee==79)
79)
…
…
Crittografia a Chiave Pubblica
Esempio: Decifratura RSA
file pubblico
chiave
chiave privata
privata
(n=3337,
(n=3337, d=1019)
d=1019)
chiave
chiave pubblica
pubblica
(n
(n==3337,
3337,ee==79)
79)
…
…
13
utente
utente
A
A
…
…
chiave
chiave pubblica
pubblica
(n
(n==3337,
3337,ee==79)
79)
…
…
Decifratura di C = 1570
1019
688 ← 1570
Cifratura di M = 688 per
1570 ← 6887 9 mod 3337
A
iagio
Crittografia a Chiave Pubblica
14
Crittografia a Chiave Pubblica
15
Esempio: Cifratura RSA
file pubblico
utente
utente
A
A
…
…
1570
nnarella
“Piccolo” esempio: Chiavi RSA
chiave
chiave privata
privata
(n=55,
(n=55,d=27)
d=27)
mod 3337
file pubblico
chiave
chiave pubblica
pubblica
(n
(n == 55,
55, ee == 3)
3)
…
…
utente
utente
A
A
…
…
15
chiave
chiave pubblica
pubblica
(n
(n==55,
55,ee==3)
3)
…
…
55 = 11 ·5
p = 11, q = 5
Cifratura di M = 5 per
ed = 3 · 27 = 1 mod 40
(p-1)(q-1) = 10 · 4 = 40
15 ← 53 mod 55
A
nnarella
Crittografia a Chiave Pubblica
•Corso di Sicurezza su Reti
16
Crittografia a Chiave Pubblica
iagio
17
•3
•Alfredo De Santis
•04/04/2002
Esempio: Decifratura RSA
chiave
chiave privata
privata
(n=55,
(n=55,d=27)
d=27)
Esempio: Cifratura RSA
file pubblico
utente
utente
A
A
…
…
file pubblico
chiave
chiave pubblica
pubblica
(n
(n==55,
55,ee==3)
3)
…
…
utente
utente
A
A
…
…
47
chiave
chiave pubblica
pubblica
(n
(n==55,
55,ee==3)
3)
…
…
Decifratura di C = 15
27
5 ← 15
mod 55
Cifratura di M = 5718 per
47 ← 57183 mod 55
15
nnarella
Crittografia a Chiave Pubblica
18
Esempio: Decifratura RSA
chiave
chiave privata
privata
(n=55,
(n=55,d=27)
d=27)
file pubblico
utente
utente
A
A
…
…
27
file pubblico
utente
utente
A
A
…
…
27
53 ← 47
20
file pubblico
utente
utente
A
A
…
…
Crittografia a Chiave Pubblica
file pubblico
utente
utente
A
A
…
…
011110110100010
Decifratura di C = 47
27
nnarella
Crittografia a Chiave Pubblica
•Corso di Sicurezza su Reti
chiave
chiave pubblica
pubblica
(n
(n==55,
55,ee==3)
3)
…
…
55=1101112
mod 55
5718≡ 53 mod 55
21
Esempio corretto
15,13,2
chiave
chiave pubblica
pubblica
(n
(n==55,
55,ee==3)
3)
…
…
53 ← 47
47
nnarella
Esempio: Decifratura RSA
chiave
chiave privata
privata
(n=55,
(n=55,d=27)
d=27)
mod 55
53≠ 5718
47
Crittografia a Chiave Pubblica
chiave
chiave pubblica
pubblica
(n
(n==55,
55,ee==3)
3)
…
…
Decifratura di C = 47
mod 55
nnarella
19
Esempio: Decifratura RSA
Decifratura di C = 47
53 ← 47
iagio
Crittografia a Chiave Pubblica
chiave
chiave privata
privata
(n=55,
(n=55,d=27)
d=27)
chiave
chiave pubblica
pubblica
(n
(n==55,
55,ee==3)
3)
…
…
A
Cifratura di
001010011110010
15 ← 53 mod 55
13 ← 73 mod 55
2 ← 183 mod 55
47
22
Crittografia a Chiave Pubblica
iagio
23
•4
•Alfredo De Santis
•04/04/2002
Esempio corretto
Esempio: Decifratura RSA
file pubblico
15,13,2
utente
utente
A
A
…
…
011110110100010
chiave
chiave privata
privata
(n=55,
(n=55,d=27)
d=27)
chiave
chiave pubblica
pubblica
(n
(n==55,
55,ee==3)
3)
…
…
file pubblico
utente
utente
A
A
…
…
chiave
chiave pubblica
pubblica
(n
(n==55,
55,ee==3)
3)
…
…
Decifratura di C = 15,13,2
27
5 ← 15 mod 55
27
7 ← 1327 mod 55
18 ← 2 mod 55
Cifratura di M = 5718 per A
15 ← 53 mod 55
13 ← 73 mod 55
2 ← 183 mod 55
iagio
Crittografia a Chiave Pubblica
Esercizio
Svolgere altro “ piccolo ” esempio RSA
– Calcolo p, q
– Calcolo n
– Calcolo e, d
– Calcolo cifratura
– Calcolo decifratura
Crittografia a chiave pubblica
ed a chiave privata
q Vantaggi della crittografia a chiave pubblica
– Molto più veloce (ad es., DES è ≥100 volte più veloce
di RSA, in hardware tra 1.000 e 10.000 volte)
– Sufficiente in diverse situazioni
(ad esempio, applicazioni per singolo utente)
26
Crittografia a Chiave Pubblica
chiave
chiave privata
privata
kpriv
kpriv
file pubblico
utente
utente chiave
chiave pubblica
pubblica
A
kpub
A
kpub
…
…
…
…
Decifratura di
C1,C2
k ← DECIFRA (kpriv , C1)
M ← D (k, C2)
Cifratura di M per A
k ← genera chiave sessione
•Corso di Sicurezza su Reti
27
Digital Envelope: Decifratura
file pubblico
utente
utente chiave
chiave pubblica
pubblica
A
kpub
A
kpub
…
…
…
…
Crittografia a Chiave Pubblica
25
q Vantaggi della crittografia a chiave privata
Digital Envelope
C1 ← CIFRA (kpub, k)
C2 ← E (k, M)
15,13,2
Crittografia a Chiave Pubblica
– Chiavi private mai trasmesse
– Possibile la firma digitale
Crittografia a Chiave Pubblica
C1,C2
nnarella
24
iagio
28
nnarella
Crittografia a Chiave Pubblica
C1,C2
29
•5
•Alfredo De Santis
•04/04/2002
Digital Envelope : vantaggi
Correttezza decifratura RSA
Cd mod n = (Me)d mod n
ed = 1 mod (p-1)(q-1)
= Mde mod n
= M1+r(p-1)(q-1) mod n
= M mod n
Teorema di Eulero
=M
x ∈Z * ⇒ x (p-1)(q-1)=1 mod n
q Chiave di sessione solo per uno o
pochi messaggi
q Molto più veloce della sola
crittografia a chiave pubblica
n
poichè 0≤M<n
Crittografia a Chiave Pubblica
30
Funzione di Eulero
q φ(n) = cardinalità di Zn* = { x | 0<x<n
q φ(p) = p-1 se p primo
q φ(pq) = (p-1)(q-1) se p,q primi
x ∈ Zn* ⇒ x
Crittografia a Chiave Pubblica
31
Efficienza delle computazioni
tali che gcd(x,n)=1}
Come effettuare le computazioni?
– Elevazione a potenza modulare

1 
1  
1 
q φ(n) = n ⋅ 1 −  ⋅ 1 − L1 − 
 p1   p2   p k 
fattorizzazione n = p1e1 p2 e2... pkek, pi primo, ei ≥ 0
q Teorema di Eulero:
Prova
Prova per
per tutti
tutti gli
gli xx mediante
mediante
ilil teorema
teorema del
del resto
resto cinese
cinese
φ(n)
– Generazione e,d
d ← e-1 mod (p-1)(q-1)
– Generazione numeri primi
= 1 mod n
Crittografia a Chiave Pubblica
generazione di e
32
Elevazione a potenza modulare
Metodo naive
Calcolo di x y mod z
Crittografia a Chiave Pubblica
33
Elevazione a potenza modulare
Metodo naive
Calcolo di x y mod z
Potenza_Modulare_naive
Potenza_Modulare_naive (x,
(x, y,
y, z)
z)
Potenza_Modulare_naive
Potenza_Modulare_naive (x,
(x, y,
y, z)
z)
aa ←
← 11
for
for ii == 11 to
to yy do
do
aa ←
← (a
(a··x)
x) mod
mod zz
return
return aa
aa ←
← 11
for
for ii == 11 to
to yy do
do
aa ←
← (a
(a··x)
x) mod
mod zz
return
return aa
Se y è di 512 bit, occorrono ≈ 2512 operazioni
Crittografia a Chiave Pubblica
•Corso di Sicurezza su Reti
34
Crittografia a Chiave Pubblica
35
•6
•Alfredo De Santis
•04/04/2002
Elevazione a potenza modulare
Metodo left-to-right
Calcolo di xy mod z
Elevazione a potenza modulare
Metodo left-to-right
Calcolo di xy mod z
y = y 02 0+ y12 1 +… +y t 2t
Idea: y = y0+2(y1+ 2(y 2+… +2(y t-1+2yt)))))
Idea:
y = y 02 0+ y12 1 +… +y t 2t
y = y0+2(y1+ 2(y2+… +2(y t-1+2yt)))))
xy = xy 0+2(y 1+2(y 2+…+2(y t-1+2y t)))))
= xy 0 x2(y 1+2(y 2+…+2(y t-1+2y t)))))
Esempio:
40 = 0 ·2 0 + 0·21 + 0·2 2 + 1 ·2 3 + 0·24 + 1·2 5
= xy 0(xy 1+2(y 2+…+2(y t-1+2y t))))))2
40 = 0 + (2 (0 + 2 (0 + (2 (1 + 2 (0 + 2·1))))))
= xy 0( xy 1(xy 2+…+2(y t-1+2y t))))))2)2
= xy 0 (xy 1( … (xy t-1(xy t)2)2 … )2
Crittografia a Chiave Pubblica
36
Crittografia a Chiave Pubblica
Elevazione a potenza modulare
Metodo left-to-right
Calcolo di xy mod z
Idea: y = y0+2(y1+… +2(y t-1+2yt)))))
xy = xy 0 (… (xy t-1(xy t)2)2 … )2
y = y 02 0+ y12 1 +… +y t 2t
Potenza_Modulare
Potenza_Modulare (x,
(x, y,
y, z)
z)
40 = 0 ·2 0 + 0·21 + 0·2 2 + 1 ·2 3 + 0·24 + 1·2 5
40 = 0 + (2 (0 + 2 (0 + (2 (1 + 2 (0 + 2·1))))))
x40 = x0 ( x0
(x0
(x1
(x0 (x1 )2 )2 )2 ) 2 )2
Crittografia a Chiave Pubblica
2 0+
y = y0
20y 0+2 1y1…+2ty t
2 1 +…
y1
+y t
2t
39
Elevazione a potenza modulare
Metodo right-to-left
Calcolo di x y mod z
Idea:
xy = x
0
1
t
= x2 y 0 · x2 y 1 · … · x2 y t
0
1
t
= (x2 )y 0 · (x2 )y 1 · … · (x2 )y t
left-to-right
Crittografia a Chiave Pubblica
Metodo right-to-left
x y mod z
aa ←
← 11
for
for ii == tt downto
downto 00 do
do
aa ←
← (a
(a··a)
a) mod
mod zz
if
if yyii == 11 then
then aa ←
← (a
(a·· x)
x) mod
mod zz
return
return aa
38
Elevazione a potenza modulare
Idea:
Metodo left-to-right
Idea: y = y0+2(y1+… +2(y t-1+2yt)))))
xy = xy 0 (… (xy t-1(xy t)2)2 … )2
Esempio: x40
Calcolo di
Elevazione a potenza modulare
Calcolo di xy mod z
y = y 02 0+ y12 1 +… +y t 2t
37
20 y 0
y = y 02 0+ y12 1 +… +y t 2t
1
t
xy = (x ) · (x2 )y 1 · … · (x2 )y t
Esempio: x40
40 = 0 ·2 0+ 0·2 1 +0 ·2 2 + 1·23 + 0·2 4 + 1 ·2 5
x40 = (x1 )0 · (x2) 0 · (x4)0 · (x8)1 · (x16) 0 · (x3 2)1
Crittografia a Chiave Pubblica
•Corso di Sicurezza su Reti
40
Crittografia a Chiave Pubblica
41
•7
•Alfredo De Santis
•04/04/2002
Elevazione a potenza modulare
Metodo right-to-left
Calcolo di x y mod z
Idea:
y = y 02 0+ y12 1 +… +y t 2t
20 y 0
y
21 y 1
40 = 0 ·
=1
Idea:
y = y 02 0+ y12 1 +… +y t 2t
20 y 0
1
t
x = (x ) · (x2 )y 1 · … · (x2 )y t
y
Esempio: x40
0·
2 1 +0
· + 1· + 0· + 1 ·
22
23
24
40 = 0 ·2 0+ 0·2 1 +0 ·2 2 + 1·23 + 0·2 4 + 1 ·2 5
25
x2
=1
x40 = (x1 )0 · (x2) 0 · (x4)0 · (x8)1 · (x16) 0 · (x3 2)1
=1
=1
x4
x8
x16
x3 2
Crittografia a Chiave Pubblica
x40 =
42
Metodo right-to-left
Potenza_Modulare
Potenza_Modulare (x,
(x, y,
y, z)
z)
if
if yy == 00 then
then return
return 11
X
X←
← x;
x; PP ←
← 11
if
if yy00 == 11 then
then X
X←
← xx
for
for ii == 11 to
to tt do
do
X
X←
←X
X·X
·X mod
mod zz
if
then
PP ←
if yyi=1
=1
then
← PP·X
·X mod
modzz
i
return
return PP i 0 1 2
3
4
5
0
25
1
1
625
625
0
681
625
596mod 1234
55596
mod 1234
6
7
8
9
44
RSA Performance
decifratura
1024 bit cifratura
1024 bit decifratura
Crittografia a Chiave Pubblica
•Corso di Sicurezza su Reti
x8
· x32
43
Scelta esponente pubblico
qMinimizzare operazioni per elevazione a
potenza
qe←3
q e ← 216+1
decimale 65.537
binario 10000000000000001
Crittografia a Chiave Pubblica
45
Come effettuare le computazioni?
ms/operazione
512 bit
=1
=1
Efficienza delle computazioni
q Celeron 450, Windows 2000, Crypto++,
cifratura
=1
1
0
1
0
0
1
1011 369 421 779 947 925
67
67 1059 1059 1059 1013
Crittografia a Chiave Pubblica
512 bit
=1
Crittografia a Chiave Pubblica
Elevazione a potenza modulare
yi 0
X 5
P 1
Calcolo di x y mod z
x = (x ) · (x ) · … · (x )
x40 = (x1 )0 · (x2) 0 · (x4)0 · (x8)1 · (x16) 0 · (x3 2)1
x1
Metodo right-to-left
2t y t
Esempio: x40
2 0+
Elevazione a potenza modulare
– Elevazione a potenza modulare
0,2
– Generazione e,d
4
1
generazione di e
d ← e-1 mod (p-1)(q-1)
– Generazione numeri primi
27
46
Crittografia a Chiave Pubblica
47
•8
•Alfredo De Santis
•04/04/2002
Algoritmo di Euclide
Algoritmo di Euclide: Esempi
Descritto negli Elementi di Euclide (circa 300 A. C.)
Euclide
Euclide(a,b)
(a,b)
if
if bb == 00 then
then return
return aa
else
else return
return Euclide
Euclide (b,
(b, aa mod
modb)
b)
Euclide (4864,3458) = Euclide (3458,1406)
= Euclide (1406,646)
= Euclide (646,114)
= Euclide (114,76)
= Euclide (76,38)
= Euclide (38,0) = 38
Teorema
Teorema della
della ricorsione
ricorsione del
del gcd
gcd
Per
Per tutti
tutti gli
gli interi
interi aa ≥≥ 00 ee bb >> 00
gcd(a,b)
gcd(a,b) == gcd(b,a
gcd(b,a mod
mod b)
b)
Crittografia a Chiave Pubblica
Euclide (30,21) = Euclide (21,9)
= Euclide (9,3)
= Euclide (3,0) = 3
48
Algoritmo di Euclide: complessità
q Assumiamo a ≥ b
q Al massimo log b chiamate
q Per ogni chiamata O( (log a)2 ) operazioni su bit
q Totale: al massimo O( (log a)3 ) operazioni su bit
q Euclide (a,b) richiede al massimo O( (log a)2 )
operazioni su bit
Crittografia a Chiave Pubblica
49
Algoritmo di Euclide Esteso
Euclide-esteso
Euclide-esteso (a,b)
(a,b)
if
if bb == 00 then
then return
return (a,
(a, 1,
1, 0)
0)
(d´,
(d´, x´,
x´, y´)
y´) ←
← Euclide-esteso
Euclide-esteso (b,
(b, aamod
modb)
b)
(d,
(d, x,
x, y)
y) ←
← (d´,
(d´, y´,
y´, x´
x´-- a/b
a/b y´)
y´)
return
return (d,
(d, x,
x, y)
y)
q Computa interi d, x, y tali che d = gcd(a,b) = ax+by
q Stesso running time asintotico di Euclide (a,b)
Crittografia a Chiave Pubblica
50
Algoritmo di Euclide (iterativo)
Euclide_iterativo
Euclide_iterativo (a,b)
(a,b)
while
while bb ≠≠ 00 do
do
rr ←
← aa mod
mod b;
b; aa ←
← b;
b; bb ←
← r;
r;
return
a
return a
•Corso di Sicurezza su Reti
a, b, m calcolare x
0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
Esempi:
3x≡7 (mod 8) soluzione 5
2x≡4 (mod 8) soluzione 2,6
4x≡2 (mod 8) nessuna soluzione
52
51
Soluzione di ax≡b (mod m)
Dati
Esercizio: versione iterativa di
Euclide-esteso (a,b)
Crittografia a Chiave Pubblica
Crittografia a Chiave Pubblica
1 0 1 2 3 4 5 6 7
2 0 2 4 6 0 2 4 6
3 0 3 6 1 4 7 2 5
4 0 4 0 4 0 4 0 4
5 0 5 2 7 4 1 6 3
6 0 6 4 2 0 6 4 2
7 0 7 6 5 4 3 2 1
Crittografia a Chiave Pubblica
53
•9
•Alfredo De Santis
•04/04/2002
Soluzione di ax≡b (mod m)
Soluzione di ax≡1 (mod m)
gg == gcd
gcd(a,m)
(a,m)
gcd(a,m)
q Ha soluzioni se e solo se g|b
q Se g|b ci sono esattamente g distinte
q Ha soluzioni se e solo se gcd
gcd(a,m)
(a,m) =1
q Se gcd
gcd(a,m)
(a,m) =1 l’unica soluzione mod n è:
x´
soluzioni mod m:
x'
dove
b m
+i
g
g
dove
per i = 0,1,…, g-1
g = ax′+my (da Euclide-esteso (a,m) )
Crittografia a Chiave Pubblica
54
Soluzione di ax≡1 (mod 8)
3 = 3 -1 mod 8
5 = 5 -1 mod 8
7 = 7 -1 mod 8
4 0 4 0 4 0 4 0 4
5 0 5 2 7 4 1 6 3
3 = 5 -1 mod 7
Crittografia a Chiave Pubblica
56
Esempio: calcolo di 5-1 mod 7
3=
mod 7
•Corso di Sicurezza su Reti
2 = 4 -1 mod 7
6 = 6 -1 mod 7
0
0
0
0
0
0
0
0
1
0
1
2
3
4
5
6
2
0
2
4
6
1
3
5
3
0
3
6
2
5
1
4
4
0
4
1
5
2
6
3
5
0
5
3
1
6
4
2
Crittografia a Chiave Pubblica
6
0
6
5
4
3
2
1
57
Efficienza delle computazioni
Come effettuare le computazioni?
– Elevazione a potenza modulare
7
5
d
1
x y
-2 3
5
2
1
1 -2
2
1
1
0
1
0
1
1
Crittografia a Chiave Pubblica
0
1
2
3
4
5
6
4 = 2 -1 mod 7
5 = 3 -1 mod 7
6 0 6 4 2 0 6 4 2
7 0 7 6 5 4 3 2 1
d = x·a + y·b
1 = -2·7 + 3·5
1 = 1-1 mod 7
1 0 1 2 3 4 5 6 7
2 0 2 4 6 0 2 4 6
3 0 3 6 1 4 7 2 5
Euclide-esteso
Euclide-esteso (a,b)
(a,b)
if
if bb == 00 then
then return
return (a,
(a, 1,
1, 0)
0)
(d´,
(d´, x´,
x´, y´)
y´) ←
← Euclide-esteso
Euclide-esteso (b,
(b, aamod
modb)
b)
(d,
(d, x,
x, y)
y) ←
← (d´,
(d´, y´,
y´, x´
x´-- a/b
a/b y´)
y´)
return
a b
return (d,
(d, x,
x, y)
y)
55
Ha soluzioni se e solo se gcd
gcd(a,7)
(a,7) =1
0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 = 1-1 mod 8
Crittografia a Chiave Pubblica
Soluzione di ax≡1 (mod 7)
Ha soluzioni se e solo se gcd
gcd(a,8)
(a,8) =1
5 -1
1 = ax′+my (da Euclide-esteso (a,m) )
q Tale soluzione viene denotata con a -1 mod m
1
– Generazione e,d
generazione di e
d ← e-1 mod (p-1)(q-1)
– Generazione numeri primi
0
58
Crittografia a Chiave Pubblica
59
•10
•Alfredo De Santis
•04/04/2002
Generazione chiavi
Generazione chiavi
(comunemente usata in pratica)
1.
1. Input
Input LL (lunghezza
(lunghezza modulo)
modulo)
2.
2. Genera
Genera 22 primi
primi di
di lunghezza
lunghezza L/2
L/2
3.
3. nn ←
← pp ·q
·q
4.
4. Scegli
Scegli aa caso
caso ee
1.
1. Input
Input LL (lunghezza
(lunghezza modulo)
modulo)
16+1
2.
2. ee ←
← 33 oppure
oppure ee ←
← 2216
+1 (=
(= 65.537)
65.537)
3.
3. Genera
Genera 22 primi
primi di
di lunghezza
lunghezza L/2
L/2
4.
4. nn ←
← pp ·q
·q
5.
5. If
If gcd
gcd (( e,
e, (p-1)(q-1)
(p-1)(q-1) )) == 11
-1 mod
then
then dd ←
← ee-1
mod(p-1)(q-1)
(p-1)(q-1)
else
else goto
goto 3.
3.
5.
5. If
If gcd
gcd (( e,
e, (p-1)(q-1)
(p-1)(q-1) )) == 11
-1 mod
then
d
then d ←
← ee-1
mod (p-1)(q-1)
(p-1)(q-1)
else
goto
4.
else goto 4.
Crittografia a Chiave Pubblica
60
Generazione di un primo ‘grande’
1.
1. Genera
Genera aa caso
caso un
un dispari
dispari pp di
di grandezza
grandezza appropriata
appropriata
2.
2. Testa
Testa se
se pp èè primo
primo
3.
3. Se
Se pp èè composto,
composto, go
go to
to 1.
1.
Crittografia a Chiave Pubblica
61
Generazione di un primo ‘grande’
1.
1. Genera
Genera aa caso
caso un
un dispari
dispari pp di
di grandezza
grandezza appropriata
appropriata
2.
2. Testa
Testa se
se pp èè primo
primo
3.
3. Se
Se pp èè composto,
composto, go
go to
to 1.
1.
Variante
Variante con
con sequenza
sequenza di
di ricerca
ricerca
1.
1. Genera
Genera aa caso
caso un
un dispari
dispari pp di
di grandezza
grandezza appropriata
appropriata
2.
2. Testa
Testa se
se pp èè primo
primo
3.
3. Se
Se pp èè composto,
composto, pp ←
← p+2,
p+2, go
go to
to 2.
2.
Crittografia a Chiave Pubblica
62
Crittografia a Chiave Pubblica
Distribuzione dei numeri primi
Scelta di un primo di 512 bit
q Scelto un intero in [2,2512] la probabilità che sia
primo è circa 1 su ln 2512 (ln 2512 ≈ 354,89)
q π(x) = numero di primi in [2,x]
q Teorema dei numeri primi: lim
x→ ∞
p (x)
=1
x/ln x
q Numero medio di tentativi ≈ 354,89
q Se si scelgono solo dispari dimezza ≈ 177,44
q Esempio: π(1010) = 455.052.511
1010/ ln 1010 ≈ 434.294.481,9 (4% in meno)
q Se si scelgono dispari in [2511 ,2512] probabilità è
≈
q Per x ≥ 17
x
x
< p (x) < 1.25506
ln x
ln x
Crittografia a Chiave Pubblica
•Corso di Sicurezza su Reti
63
1 …
64
…
(ln22
512
512
−
2511
ln 2511
) 2 1 2 ≈ 1771,79
511
… 1
510 bit scelti a caso
Crittografia a Chiave Pubblica
65
•11
•Alfredo De Santis
•04/04/2002
Scelta di un primo di 1024 bit
q Scelto un intero in [2,21024] la probabilità che sia
primo è circa 1 su ln 21024 (ln 21024 ≈ 709,78)
Test di primalità
qIl miglior algoritmo deterministico è una
q Numero medio di tentativi ≈ 709,78
variante di Cohen e H. Lenstra del test
q Se si scelgono solo dispari dimezza ≈ 354,89
di Adleman, Pomerance e Rumely [1983]
q Se si scelgono dispari in [21023 ,21024] probabilità
≈
1 …
(ln22
…
1024
1024
−
21023
ln 21023
) 2 1 2 ≈ 3551,23
qComplessità (lg p)O(lg lg lg p)
1023
… 1
1022 bit scelti a caso
Crittografia a Chiave Pubblica
66
primo
Test
Test Primalità
Primalità
Probabilmente!
Probabilmente!
Certamente!
Certamente!
– dato a∈[0, p-1] è facile verificare se a∈W(p)
– se p è primo allora W(p) è vuoto
Scelgo
Scelgo aa
– se p è composto allora |W(p)| ≥ p/2
Crittografia a Chiave Pubblica
68
Test di primalità probabilistici
q Test di Solovay-Strassen
– Probabilità di errore ≤ (1/2)t
volte allora la probabilità di errore ≤ (1/2)t
Crittografia a Chiave Pubblica
69
Test di Solovay-Strassen
q Sia n un numero composto dispari.
|{a : gcd(a,n) = 1 and a(n-1)/2 = (a|n) mod n} | ≤ φ(n)/2
q Test di Miller-Rabin
– Il più usato in pratica
q Insieme di witness di Eulero
– Il più veloce
W E(n) = {a : gcd(a,n)>1 oppure a(n-1)/2 ≠ (a|n) mod n}
(1/4)t
Crittografia a Chiave Pubblica
•Corso di Sicurezza su Reti
q Se il test viene ripetuto indipendentemente t
q (a|n) simbolo di Jacobi
q Criterio di Eulero: Sia n un primo dispari.
gcd(a,n) = 1 ⇒ a(n-1)/2 = (a|n) mod n
– Pubblicato nel 1977
– Probabilità di errore ≤
q Probabilità di errore (n è composto ma viene
dichiarato primo) di tale test ≤ 1/2
composto
Insieme di witness W(p)
67
Diminuizione della
probabilità di errore
Test di primalità probabilistici
p
Crittografia a Chiave Pubblica
70
Crittografia a Chiave Pubblica
71
•12
•Alfredo De Santis
•04/04/2002
Simbolo di Jacobi
q (a|n) = (a|p1) e1 (a|p2 ) e2... (a|pk) ek
(a|p) =
Simbolo di Jacobi
Simbolo di Legendre
p primo
(a|p) = a(p-1)/2 mod p
0 se p divide a
1 se a è un quadrato mod p
-1 se a non è un quadrato mod p
fattorizzazione dispari n = p1e 1 p2e 2... pk e k , pi primo, ei ≥ 0
q Può essere computato con O((log n) 2) operazioni su bit
– (a|n) = 0 ⇔ gcd(a,n) > 1
– a = b mod n ⇒ (a|n) = (b|n)
– (ab|n) = (a|n) (b|n)
2
– (2|n) = (-1)(n -1)/8
– (m|n) = (n|m) (-1)(n-1)(m -1)/4
Crittografia a Chiave Pubblica
72
s
n-1
n-1 == 22srr con
con rr dispari
dispari
q Se n è un primo dispari
W MR(n) è vuoto
W MR (91) = {a : a45 ≠ 1 mod 91 and
j
a2 ·45 ≠ -1 mod 91 per ogni j∈[0,0]}
q Se n è un numero composto dispari
| W MR (n) | ≥ (3/4) ·φ(n)
Sono 18 = φ(91)/4 elementi
74
Witness di Miller-Rabin
n=105
105 = 3·5
3 5 ·77
105 = 3·5 ·7
3
105-1
105-1 == 223··13
13
j∈[0,2]
1
91-1
91-1 == 221··45
45
{1,9,10,12,16,17,22,29,38,53,62,69,74,75,79,81,82,90}
Crittografia a Chiave Pubblica
}
q Strong liars: elementi in {1,2,…,104} / W MR (105)
{1,104}
Crittografia a Chiave Pubblica
75
Fattorizzazione
Dato n calcolare l’unica fattorizzazione
e
e
e
n = p1 1 p2 2... pk k
con pi primo ed ei ≥ 0
Splitting di n: calcolare due interi a,b >1
Sono solo 2 < 12 = φ(105)/4 elementi
In genere strong liars molto meno di φ(n)/4
•Corso di Sicurezza su Reti
73
q Strong liars: elementi in {1,2,…,90} / W MR (91)
q Se n è un numero composto dispari (n ≠ 9)
| W MR(n) | ≥ (3/4) ·φ(n)
Crittografia a Chiave Pubblica
Crittografia a Chiave Pubblica
q Witness di Miller-Rabin
W MR(n) = {a : a r ≠ 1 mod n and
j
a 2 r ≠ -1 mod n per ogni j∈[0,s-1] }
W MR (105) = {a : a ≠ 1 mod 105 and
j
a2 ·13 ≠ -1 mod 105 per ogni
Esempio:
Esempio: (158|235)
(158|235) == (2|235)
(2|235) (79|235)
(79|235)
(78)(234)/4
== (-1)
(-1)(235|79)
(235|79)(-1)
(-1) (78)(234)/4
== (77|79)
(77|79)
(76)(78)/4
== (79|77)
(79|77) (-1)
(-1) (76)(78)/4
== (2|77)
(2|77)
== -1
-1
91 = 7·13
q Insieme di witness di Miller-Rabin
13
– (ab|n) = (a|n) (b|n)
2
– (2|n) = (-1)(n -1)/8
– (m|n) = (n|m) (-1)(n-1)(m -1)/4
Witness di Miller-Rabin
n=91
91 = 7·13
7 13
Test di Miller-Rabin
q Witness di Miller-Rabin
Può essere computato con O((log n) 2 ) operazioni su bit
– a = b mod n ⇒ (a|n) = (b|n)
76
(fattori non-triviali) tali che n = a·b
Crittografia a Chiave Pubblica
77
•13
•Alfredo De Santis
•04/04/2002
Fattorizzazione: un semplice algoritmo
Calcolo di un fattore primo:
Per tutti i primi p in [2,
Complessità di tempo sub-esponenziale in media
Lq[a,c] = O(e(c+o(1))(ln q)
n]
q General number field sieve : Ln[ 1/3, 1.923]
n ≈ 2 256
il più veloce
Crittografia a Chiave Pubblica
78
Crittografia a Chiave Pubblica
Quadratic sieve in pratica
q Quadratic sieve è migliore dell’algoritmo basato su
curve ellittiche
q Implementazioni del Quadratic sieve
1 mips per anno
13
≈ 3 ·10 istruzioni
RSA-- 129
RSA
1600 computer
per 8 mesi
factoring by e-mail
= 425 bit
Crittografia a Chiave Pubblica
80
Calcolo di fattori “piccoli”
q Algoritmo Rho di Pollard: tempo medio O(√p)
q Algoritmo basato su curve ellittiche: tempo medio
(√2+o(1))(l n q )1/2(lnln q)1/2
)
q General Number field sieve è migliore del Quadratic
sieve solo per interi di almeno 110-120 cifre decimali
q RSA-130, fattorizzato nel 1996 con 500 mips per
anno
q RSA-140, fattorizzato il 2 febbraio 1999, elapsed
time 9 settimane
q RSA-155, fattorizzato il 22 agosto 1999, con 8000
mips per anno, elapsed time 7,4 mesi
160
160
88
120
120
44
175-400
175-400MHz
MHzSGI
SGIand
andSun
Sunworkstations
workstations
250
250MHz
MHzSGI
SGIOrigin
Origin2000
2000 processors
processors
300-450
300-450MHz
MHzPentium
PentiumIIIIPCs
PCs
500
500MHz
MHzDigital/Compaq
Digital/Compaqboxes
boxes
512 bit!
Crittografia a Chiave Pubblica
81
Una strategia generale per fattorizzare
q Prova divisione per alcuni piccoli primi (2,3,5,7,…)
q Prova algoritmo Rho di Pollard
q Prova algoritmo basato su curve ellittiche
q Prova Quadratic sieve oppure
tipo
tipo nn == pq
pq con
con p,q
p,q primi
primi della
della stessa
stessa lunghezza
lunghezza
•Corso di Sicurezza su Reti
General Number field sieve in pratica
Cerca fattori “grandi”
II numeri
numeri più
più difficili
difficili da
da fattorizzare
fattorizzare sono
sono del
del
Crittografia a Chiave Pubblica
79
Cerca fattori “piccoli”
Algoritmi per calcolare un fattore p di n:
Lp[1/2, √2] = O(e
)
q Quadratic sieve: Ln[ 1/2, 1]
(accade se n = pq)
mips per anno
0.01
140
825
5000
(lnln q) 1-a
q Algoritmo basato su curve ellittiche: Ln[ 1/2, 1]
Complessità caso peggiore Θ( n )
anno numero digit
1984
71
1988
106
1993
120
1994
129
a
con c > 0 ed 0 < a < 1
Se p|n allora p è fattore di n
Se n ha 512 bit allora
Fattorizzazione: complessità algoritmi
82
General Number field sieve
Crittografia a Chiave Pubblica
83
•14
•Alfredo De Santis
•04/04/2002
Che modulo scegliere?
Intrattabilità della fattorizzazione
qAd oggi, i numeri più difficili da
fattorizzare sono del tipo n = p ·q con
p,q primi della stessa lunghezza
q… e di almeno (per essere tranquilli!)
– 768 bit ( = 230 digit) per uso personale
– 1024 bit per le aziende
– 2048 per chiavi “importanti”
ad esempio Autorità di Certificazione
Crittografia a Chiave Pubblica
La sicurezza di molte tecniche crittografiche si
basa sulla intrattabilità della fattorizzazione:
q crittosistema RSA, Rabin
q firme digitali RSA
q…
84
Crittografia a Chiave Pubblica
Sicurezza di RSA
Se
Sicurezza di RSA
potesse fattorizzare…
Se
86
Crittografia a Chiave Pubblica
Sicurezza di RSA
Se
potrebbe calcolare d ← e
n = pq
ϕ(n) = (p -1)(q-1)
Se
sostituendo
sostituendo pp == n/q
n/q
pp22-- (n(n-ϕ(n)+1)p
ϕ(n)+1)p ++ nn == 00
Due soluzioni: p,q
•Corso di Sicurezza su Reti
potesse computare ϕ(n) = (p-1)(q-1),
potrebbe calcolare d ← e-1 mod (p-1)(q-1)
mod (p-1)(q-1)
Crittografia a Chiave Pubblica
87
Sicurezza di RSA
potesse computare ϕ(n)=(p-1)(q-1),
-1
potesse computare ϕ(n)=(p-1)(q-1)
potrebbe calcolare d ← e-1 mod (p-1)(q-1)
1.
1. Fattorizza
Fattorizza nn
2.
2. Computa
Computa (p-1)(q-1)
(p-1)(q-1)
3.
3. Computa
Computa dd ←
← ee-1-1 mod
mod (p-1)(q-1)
(p-1)(q-1)
Crittografia a Chiave Pubblica
85
n = pq
ϕ(n) = (p -1)(q-1)
sostituendo
sostituendo pp == n/q
n/q
pp22-- (n(n-ϕ(n)+1)p
ϕ(n)+1)p ++ nn == 00
84.773.093 = pq pp22-- 18.426
18.426 pp ++ 84.773.093
84.773.093 == 00
84.754.668 = (p-1)(q-1)
radici: 9539 e 8887
88
Crittografia a Chiave Pubblica
89
•15
•Alfredo De Santis
•04/04/2002
Sicurezza di RSA
Se
Sicurezza di RSA
Se
potesse computare d …
potesse computare d … ma questo è
computazionalmente equivalente a fattorizzare!
Crittografia a Chiave Pubblica
90
91
Piccoli messaggi
Sicurezza di RSA
Se
Crittografia a Chiave Pubblica
q Posso cifrare un solo digit 0,1,… ,9 con RSA ?
potesse computare d … ma questo è
C ← Me mod n
computazionalmente equivalente a fattorizzare!
Esempio:
Un
Un algoritmo
algoritmo che
che computa
computa dd (con
(con input
input n,e)
n,e)
125 ← 53 mod 6.012.707
può
può essere
essere usato
usato come
come oracolo
oracolo in
in un
un algoritmo
algoritmo
Las
Las Vegas
Vegas che
che fattorizza
fattorizza nn con
con probabilità
probabilità ≥1/2
≥1/2
Crittografia a Chiave Pubblica
92
Piccoli messaggi
93
Proprietà moltiplicativa di RSA
q Posso cifrare un solo digit 0,1,… ,9 con RSA ?
C ← Me mod n
Esempio:
Crittografia a Chiave Pubblica
Proprietà di omomorfismo
C1 = M1 e mod n
(M1M2 ) e = M 1 e M2 e = C1 C2 mod n
C2 = M2 e mod n
125 ← 53 mod 6.012.707
q Se M < n 1/e allora
– uso di Digital Envelope
– salting del messaggio M
Crittografia a Chiave Pubblica
•Corso di Sicurezza su Reti
94
Crittografia a Chiave Pubblica
95
•16
•Alfredo De Santis
•04/04/2002
Proprietà moltiplicativa di RSA
C1 = M1e mod n
C2 = M2 e mod n
(M1M2 ) e = M 1e M2 e = C1C2 mod n
q Piccolo esponente pubblico (ad es., e = 3)
– Stesso messaggio inviato a più utenti
Chosen-ciphertext attack adattivo
Obiettivo: decifrare C (= Me mod n)
Decifrazione
Decifrazione
(d,n)
(d,n)
Attacchi ad RSA
q Attacchi ad implementazioni:
– Timing Attack
– Random Faults
– Attacco di Bleichenbacher [1998 ] su PKCS 1 (vecchia
versione): uso del Web browser come oracolo!
Scelgo x a caso
C' ← C ·xe mod n
M' ← (C') d mod n
02
02
M ← M' ·x-1 mod n
M' = (C') d =(C ·xe ) d = Cd ·x mod n
Crittografia a Chiave Pubblica
00
00
M
M
16 bit
96
Crittografia a Chiave Pubblica
Informazioni parziali per RSA
Dato C
Random
Random
97
Un bit “facile” per RSA
e
C
C == M
Me mod
modnn
e
C
C == M
Me mod
modnn
E’ facile calcolare il simbolo di
Jacobi del testo in chiaro
– potrebbero esserci informazioni parziali
sul messaggio M “facili” da ottenere
(senza dover decifrare C ! )
(C|n) = (Me |n) = (M|n) e = (M|n)
– e … “difficili” ?
hard bit : ultimi c ·loglog n bit
Crittografia a Chiave Pubblica
98
Crittografia a Chiave Pubblica
Un bit “difficile” per RSA
halfn,e(C) =
99
Un bit “difficile” per RSA
0 se M < n/2
halfn,e(C) =
1 se M > n/2
0 se M < n/2
1 se M > n/2
Calcolare halfn ,e( ·) è computazionalmente
equivalente ad invertire RSA
C
Calcola
Calcola
half
(·)
halfn,e
n,e (·)
Crittografia a Chiave Pubblica
•Corso di Sicurezza su Reti
100
half n,e (C)
C
Decifra
Decifrann,e
,e
M
Calcola
Calcola
half
(·)
halfn,e
n,e(·)
Crittografia a Chiave Pubblica
101
•17
•Alfredo De Santis
•04/04/2002
Un bit “difficile” per RSA
halfn,e(C) =
Un bit “difficile” per RSA
0 se M < n/2
1 se M > n/2
half n,e (C) =
0 se M < n/2
halfn,e(C) =
0
C ´←
1
C ·(2e
1 se M > n/2
C´= (2 ·M)e mod n
mod n)
half n,e (C´) = 0
M∈ 0
n/2
M∈ 0
Crittografia a Chiave Pubblica
102
halfn,e(C´´) =
M∈ 0
0
n/8
n/4
1
3n/8
0
n/2
1
0
3n/4
n
103
1
5n/8 3n/4 7n/8
Crittografia a Chiave Pubblica
Predicato
n/2
q Dopo log n chiamate ad halfn,e( ·)
l’intervallo consta di un solo valore
C´´= (4 ·M)e mod n
0
n/4
q Ricerca binaria
1 se M > n/2
1
1
Un bit “difficile” per RSA
0 se M < n/2
C´´← C ·(4e mod n)
0
Crittografia a Chiave Pubblica
Un bit “difficile” per RSA
halfn,e(C) =
1
n
n
104
parità
e
C
C == M
Me mod
modnn
paritàn,e(C) = bit meno significativo di M
I predicati paritàn,e( ·) e halfn,e( ·)
sono computazionalmente equivalenti
Crittografia a Chiave Pubblica
105
Crittografia probabilistica
Testo in chiaro
Testo cifrato
M = M1 M2 M3 …
C = C 1 C2 C3 …
Mi = predicato_difficile (Ci)
halfn,e(Me mod n) = paritàn,e((2M) e mod n)
e
half
(C) = parità n,e(( CC (2
halfn,e
(2e mod
mod n)
n) mod
mod nn ))
n,e(C) = paritàn,e
e
parità
(C) = half ,e(( CC ((2
paritàn,e
((2-1-1))emod
mod n)
n) mod
mod nn ))
n,e(C) = halfnn,e
Crittografia a Chiave Pubblica
•Corso di Sicurezza su Reti
106
Crittografia a Chiave Pubblica
107
•18
•Alfredo De Santis
•04/04/2002
Alcuni Crittosistemi
a chiave pubblica
q RSA [1977] (fattorizzazione)
q Merkle-Hellman [1978] (zaino 0 -1)
Funzioni one-way
rotto!
– Molte varianti… rotte! Resiste Chor-Rivest [1988]
q
q
q
q
“Facili” da calcolare e
Rabin [1979] (fattorizzazione)
McEliece [1978] (decodifica codici lineari)
El-Gamal [1984] (logaritmo discreto)
Uso di curve ellittiche [1985]
curve iperellittiche [1989]
automi cellulari [1985]
Crittografia a Chiave Pubblica
108
Funzioni one-way trapdoor
“Facili” da calcolare e
Crittografia a Chiave Pubblica
… a meno che si conosca
una “trapdoor”
110
109
Alcuni brevetti software (USA)
numero
3.962.539
4.200.770
4.218.582
4.424.414
4.405.829
4.748.668
4.850.017
5.140.634
5.231.668
5.214.703
5.276.737
“difficili” da invertire
Crittografia a Chiave Pubblica
“difficili” da invertire
oggetto
DES
Diffie-Hellman
Critt. chiave pubblica
Pohling-Hellman
RSA
Shamir-Fiat
Vettori di controllo
Guillou-Quisquater
DSA
IDEA
Fair Cryptosystems
inventore
Ehrsam ed al.
Hellman, Diffie, Merkle
Helman, Merkle
Hellman, Pohling
Rivest, Shamir, Adleman
Shamir, Fiat
Matyas, Meyer, Bracht
Guillou-Quisquater
Kravitz
Massey-Lai
Micali
Crittografia a Chiave Pubblica
scadenza
1993
1997
1997
3 gen 2001
20 sett 2000
2005
2006
2009
2010
2010
2011
111
Export dagli USA
International Traffic in Arms Regulations (ITAR)
q United States Munitions List
q Strong encryption
[1989]
– RSA ≥ 512 bit
– cifrari a blocco (DES, IDEA, RC6,…) ≥40 bit
q eccetto se limitato a
non deve essere facilmente
– controllo accessi (ad es., ATM)
utilizzabile per cifrare!
– autenticazione dati (ad es., MAC, firme)
q Permesso dal Department of Commerce,
ad es. Cybercash, cifratura RSA 768 bit per transazioni finanziarie
Crittografia a Chiave Pubblica
•Corso di Sicurezza su Reti
112
•19
Scarica

variante di cohen