Sei sulla pagina 1di 16

Alfredo De Santis 03/04/2001

Crittosistema a chiave pubblica Cifratura


file pubblico file pubblico
chiave privata
kpriv utente
utente chiave
chiavepubblica
pubblica utente
utente chiave
chiavepubblica
pubblica
AA kpub
kpub AA kpub
kpub




Devo cifrare il messaggio M


ed inviarlo ad A

iagio
nnarella
Crittografia a Chiave Pubblica 0 Crittografia a Chiave Pubblica 1

Cifratura Decifratura
file pubblico file pubblico
utente Devo decifrare il
utente chiave
chiavepubblica
pubblica utente
utente chiave
chiavepubblica
pubblica
AA kpub
kpub messaggio cifrato C AA kpub
kpub

C




??
C?

Cifratura di M per A
nnarella
C
C CIFRA (kpub, M) iagio
Crittografia a Chiave Pubblica 2 Crittografia a Chiave Pubblica 3

Decifratura Crittografia a chiave pubblica


ed a chiave privata
file pubblico
chiave privata
utente
utente chiave
chiavepubblica
pubblica Vantaggi della crittografia a chiave pubblica
kpriv
AA kpub
kpub Chiavi private mai trasmesse


Possibile la firma digitale
Decifratura di C Vantaggi della crittografia a chiave privata
M DECIFRA (kpriv, C) 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

nnarella
Crittografia a Chiave Pubblica
C 4
(ad esempio, applicazioni per singolo utente)

Crittografia a Chiave Pubblica 5

Corso di Sicurezza su Reti 1


Alfredo De Santis 03/04/2001

Digital Envelope Digital Envelope: Decifratura


file pubblico file pubblico
chiave privata
utente
utente chiave
chiavepubblica
pubblica kpriv
utente
utente chiave
chiavepubblica
pubblica
C1,C2 AA

kpub
kpub

AA

kpub
kpub


Decifratura di C1,C2
k DECIFRA (kpriv, C1)
Cifratura di M per A M D (k, C2)
k genera chiave sessione
C1 CIFRA (kpub, k) C1,C2
C2 E (k, M) iagio nnarella
Crittografia a Chiave Pubblica 6 Crittografia a Chiave Pubblica 7

Digital Envelope: vantaggi Teoria dei Numeri


Crittosistemi a chiave pubblica pi comuni basati sulla
 Chiave di sessione solo per uno o Teoria dei Numeri

pochi messaggi both Gauss and lesser mathematicians may be


 Molto pi veloce della sola justified in rejoicing that there is one science at any
rate, and that their own, whose very remoteness
crittografia a chiave pubblica from ordinary human activities keep it gentle and
clean.
G. H. Hardy, A Mathematicians Apology, 1940

Crittografia a Chiave Pubblica 8 Crittografia a Chiave Pubblica 9

RSA Chiavi RSA


Proposto nel 1978 da chiave privata file pubblico
(n,d) utente
utente chiave
chiavepubblica
pubblica
AA (n,e)
(n,e)



n = pq
p,q primi
Rivest Shamir Adleman
ed = 1 mod (p-1)(q-1)
Sicurezza basata sulla difficolt di fattorizzare
nnarella
Crittografia a Chiave Pubblica 10 Crittografia a Chiave Pubblica 11

Corso di Sicurezza su Reti 2


Alfredo De Santis 03/04/2001

Cifratura RSA Cifratura RSA


file pubblico file pubblico
utente
utente chiave
chiavepubblica
pubblica utente
utente chiave
chiavepubblica
pubblica
AA (n,e)
(n,e) AA (n,e)
(n,e)



C

Devo cifrare il messaggio M


ed inviarlo ad A
Cifratura di M per A
iagio C M mod n
e iagio
Crittografia a Chiave Pubblica 12 Crittografia a Chiave Pubblica 13

Decifratura RSA Decifratura RSA


file pubblico file pubblico
chiave privata
Devo decifrare il utente
utente chiave
chiavepubblica
pubblica (n,d)
utente
utente chiave
chiavepubblica
pubblica
messaggio cifrato C AA (n,e)
(n,e) AA (n,e)
(n,e)





??
Decifratura di C
C? M Cd mod n

C C
nnarella nnarella
Crittografia a Chiave Pubblica 14 Crittografia a Chiave Pubblica 15

Piccolo esempio: Chiavi RSA Esempio: Cifratura RSA

chiave privata
file pubblico file pubblico
(n=3337, d=1019) utente
utente chiave
chiavepubblica
pubblica utente
utente chiave
chiavepubblica
pubblica
AA (n
(n==3337,
3337,ee==79)
79) 1570 AA (n
(n==3337,
3337,ee==79)
79)





3337 = 47 71
p = 47, q = 71

ed = 79 1019 = 1 mod 3220 Cifratura di M = 688 per A


(p-1)(q-1) = 46 70 = 3220 1570 68879 mod 3337

nnarella
iagio
Crittografia a Chiave Pubblica 16 Crittografia a Chiave Pubblica 17

Corso di Sicurezza su Reti 3


Alfredo De Santis 03/04/2001

Esempio: Decifratura RSA Esercizio


chiave privata
file pubblico Svolgere piccolo esempio RSA
utente chiave
chiavepubblica
(n=3337, d=1019) utente
(n
pubblica
Calcolo p, q
AA (n==3337,
3337,ee==79)
79)


Calcolo n
Decifratura di C = 1570
1019
Calcolo e, d
688 1570 mod 3337
Calcolo cifratura
Calcolo decifratura
1570
nnarella
Crittografia a Chiave Pubblica 18 Crittografia a Chiave Pubblica 19

Correttezza decifratura RSA Funzione di Eulero


 (n) = cardinalit di Zn* = { x | 0<x<n tali che gcd(x,n)=1}
Cd mod n = (Me)d mod n  (p) = p-1 se p primo
ed = 1 mod (p-1)(q-1)
= Mde mod n  (pq) = (p-1)(q-1) se p,q primi

= M1+r(p-1)(q-1) mod n 1 1 1
 (n) = n 1 1  1
= M mod n p1 p 2 p k
e e e
Teorema di Eulero fattorizzazione n = p1 1 p2 2... pk k, pi primo, ei 0
=M xZ * x(p-1)(q-1)=1 mod n
n  Teorema di Eulero: x Zn* x(n) = 1 mod n
Prova
Provaper pertutti
tuttigli
glixxmediante
mediante
poich 0M<n ililteorema
teoremadel
delresto
restocinese
cinese
Crittografia a Chiave Pubblica 20 Crittografia a Chiave Pubblica 21

Efficienza delle computazioni Elevazione a potenza modulare


Metodo naive
Come effettuare le computazioni? Calcolo di xy mod z

Elevazione a potenza modulare Potenza_Modulare_naive (x, y, z)


a1
Generazione numeri primi for i = 1 to y do
a (a x) mod z
generazione di e return a
Generazione e,d
d e-1 mod (p-1)(q-1)
Crittografia a Chiave Pubblica 22 Crittografia a Chiave Pubblica 23

Corso di Sicurezza su Reti 4


Alfredo De Santis 03/04/2001

Elevazione a potenza modulare Elevazione a potenza modulare


Metodo naive Metodo left-to-right
Calcolo di xy mod z y = y020+ y121 + +yt2t
Calcolo di xy mod z
Idea: y = y0+2(y1+ +2(yt-1+2yt)))))
Potenza_Modulare_naive (x, y, z) xy = xy0 ( (xyt-1(xyt)2)2 )2
a1
for i = 1 to y do Esempio: x40
a (a x) mod z
return a 40 = 020 + 021 + 022 + 123 + 024 + 125
40 = 0 + (2 (0 + 2 (0 + (2 (1 + 2 (0 + 21))))))
Se y di 512 bit, occorrono 2512 operazioni
Crittografia a Chiave Pubblica 24 Crittografia a Chiave Pubblica 25

Elevazione a potenza modulare Elevazione a potenza modulare


Metodo left-to-right Metodo left-to-right
Calcolo di xy mod z y = y020+ y121 + +yt2t Calcolo di xy mod z y = y020+ y121 + +yt2t
Idea: y = y0+2(y1+ +2(yt-1+2yt))))) Idea: y = y0+2(y1+ +2(yt-1+2yt)))))
xy = xy0 ( (xyt-1(xyt)2)2 )2 xy = xy0 ( (xyt-1(xyt)2)2 )2
Esempio: x40 Potenza_Modulare (x, y, z) left-to-right
40 = 020 + 021 + 022 + 123 + 024 + 125 a1
for i = t downto 0 do
40 = 0 + (2 (0 + 2 (0 + (2 (1 + 2 (0 + 21)))))) a (a a) mod z
if yi = 1 then a (a x) mod z
x40 = x0 ( x0 (x0 (x1 (x0 (x1)2 )2 )2 )2 )2 return a
Crittografia a Chiave Pubblica 26 Crittografia a Chiave Pubblica 27

Elevazione a potenza modulare Elevazione a potenza modulare


Metodo right-to-left Metodo right-to-left
Calcolo di xy mod z y = y020+ y121 + +yt2t Calcolo di xy mod z y = y020+ y121 + +yt2t
xy = (x2 )y0 (x2 )y1 (x2 )yt xy = (x2 )y0 (x2 )y1 (x2 )yt
0 1 t 0 1 t
Idea: Idea:

Esempio: x40 Esempio: x40

40 = 020+ 021 +022 + 123 + 024 + 125 40 = 020+ 021 +022 + 123 + 024 + 125

x40 = (x1)0 (x2)0 (x4)0 (x8)1 (x16)0 (x32)1 x40 = (x1)0 (x2)0 (x4)0 (x8)1 (x16)0 (x32)1
=1 =1 =1
=1
x1 x2 x4 x8 x16 x32
Crittografia a Chiave Pubblica 28 Crittografia a Chiave Pubblica 29

Corso di Sicurezza su Reti 5


Alfredo De Santis 03/04/2001

Elevazione a potenza modulare Elevazione a potenza modulare


Metodo right-to-left Metodo right-to-left
Calcolo di xy mod z y = y020+ y121 + +yt2t Potenza_Modulare (x, y, z)
if y = 0 then return 1
(x2 )y0 (x2 )y1 (x2 )yt
0 1 t
Idea: xy = X x; P 1
if y0 = 1 then X x
Esempio: x40 for i = 1 to t do
40 = 020+ 021 +022 + 123 + 024 + 125 X X X mod z
if yi=1 then P P X mod z 55596
596mod 1234
mod 1234
x40 = (x1)0 (x2)0 (x4)0 (x8)1 (x16)0 (x32)1 return P i 0 1 2 3 4 5 6 7 8 9
=1 =1 =1 yi 0 0 1 0 1 0 1 0 0 1
=1
x40 = x8 x32 X 5 25 625 681 1011 369 421 779 947 925
P 1 1 625 625 67 67 1059 1059 1059 1013
Crittografia a Chiave Pubblica 30 Crittografia a Chiave Pubblica 31

Decifratura RSA Algoritmo di Euclide


Pentium 90MHz, toolkit BSAFE 3.0 Descritto negli Elementi di Euclide (circa 300 A. C.)

modulo 512 bit 1024 bit Euclide (a,b)


throughput kbit/s 21,6 7,4 if b = 0 then return a
else return Euclide (b, a mod b)
RSA hardware [1993]
Teorema
Teorema della
della ricorsione
ricorsione deldel gcd
gcd
modulo 512 bit 970 bit Per
Per tutti
tutti gli
gli interi
interi aa 00 ee bb >> 00
throughput kbit/s 300 185 gcd(a,b)
gcd(a,b) == gcd(b,a
gcd(b,a mod
mod b)b)
Crittografia a Chiave Pubblica 32 Crittografia a Chiave Pubblica 33

Algoritmo di Euclide: Esempi Algoritmo di Euclide: complessit

Euclide (30,21) = Euclide (21,9) Assumiamo a b


= Euclide (9,3)
Al massimo log b chiamate
= Euclide (3,0) = 3
Per ogni chiamata O( (log a)2 ) operazioni su bit
Euclide (4864,3458) = Euclide (3458,1406) Totale: al massimo O( (log a)3 ) operazioni su bit
= Euclide (1406,646) Euclide (a,b) richiede al massimo O( (log a)2 )
= Euclide (646,114) operazioni su bit
= Euclide (114,76)
= Euclide (76,38)
= Euclide (38,0) = 38
Crittografia a Chiave Pubblica 34 Crittografia a Chiave Pubblica 35

Corso di Sicurezza su Reti 6


Alfredo De Santis 03/04/2001

Algoritmo di Euclide Esteso Algoritmo di Euclide (iterativo)

Euclide-esteso (a,b) Euclide_iterativo (a,b)


if b = 0 then return (a, 1, 0) while b 0 do
(d, x, y) Euclide-esteso (b, a mod b) r a mod b; a b; b r;
(d, x, y) (d, y, x- a/b y) return a
return (d, x, y)

 Computa interi d, x, y tali che d = gcd(a,b) = ax+by


Esercizio: versione iterativa di
Euclide-esteso (a,b)
 Stesso running time asintotico di Euclide (a,b)

Crittografia a Chiave Pubblica 36 Crittografia a Chiave Pubblica 37

Soluzione di ax
b (mod n) Soluzione di ax
1 (mod n)

 Ha soluzioni se e solo se g|b g = gcd(a,n)


gcd(a,n)  Ha soluzioni se e solo se gcd(a,n)
gcd(a,n) =1

 Se g|b ci sono esattamente g distinte  Se gcd(a,n)


gcd(a,n) =1 lunica soluzione mod n :
soluzioni mod n: x
b n dove 1 = ax+ny (da Euclide-esteso (a,n) )
x' + i per i = 0,1,, g-1
g g  Tale soluzione viene denotata con a-1 mod n
dove g = ax+ny (da Euclide-esteso (a,n) )

Crittografia a Chiave Pubblica 38 Crittografia a Chiave Pubblica 39

Generazione chiavi
Generazione chiavi (comunemente usata in pratica)
1. Input L (lunghezza modulo)
2. Genera 2 primi di lunghezza L/2 1. Input L (lunghezza modulo) solo due 1
3. n p q 2. e 3 oppure e 216+1 (= 65.537) in binario!
4. Scegli a caso e 3. Genera 2 primi di lunghezza L/2
5. If gcd ( e, (p-1)(q-1) ) = 1 4. n p q
then d e-1 mod (p-1)(q-1) 5. If gcd ( e, (p-1)(q-1) ) = 1
else goto 4. then d e-1 mod (p-1)(q-1)
else goto 3.

Crittografia a Chiave Pubblica 40 Crittografia a Chiave Pubblica 41

Corso di Sicurezza su Reti 7


Alfredo De Santis 03/04/2001

Generazione di un primo grande Generazione di un primo grande


1.
1. Genera
Genera aa caso
caso unun dispari
dispari pp di
di grandezza
grandezza appropriata
appropriata 1. Genera
1. Genera aa caso
casoun
un dispari
dispari pp di
di grandezza
grandezza appropriata
appropriata
2.
2. Testa
Testa se se pp primo
primo 2. Testa se p primo
2. Testa se p primo
3.
3. Se
Se pp composto,
composto, go go to
to 1.
1.
3. Se
3. Sepp composto,
composto, gogototo1.
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. Testa se p primo
2. Testa se p primo
3.
3. Se
Se pp composto,
composto, pp p+2,
p+2, gogo to
to 2.
2.

Crittografia a Chiave Pubblica 42 Crittografia a Chiave Pubblica 43

Distribuzione dei numeri primi Scelta di un primo di 512 bit


 (x) = numero di primi in [2,x] Scelto un intero in [2,2512] la probabilit che sia
(x) primo circa 1 su ln 2512 (ln 2512 354.89)
 Teorema dei numeri primi: lim =1
x x/ln x Numero medio di tentativi 354.89
 Esempio: (1010) = 455.052.511 Se si scelgono solo dispari dimezza 177.44
1010/ln 1010 434.294.481,9 (4% in meno) Se si scelgono dispari in [2511,2512] probabilit
 Per x 17
x x
( 2512
ln 2 512

2511
ln 2511
) 1
2511 2
1
177.79
< (x) < 1.25506
ln x ln x 1 1
Crittografia a Chiave Pubblica 44 510 bit scelti a caso Crittografia a Chiave Pubblica 45

Test di primalit Test di primalit probabilistici

Probabilmente!
Il miglior algoritmo deterministico una p primo
Probabilmente!
Test
Test Primalit
Primalit
variante di Cohen e H. Lenstra del test composto

di Adleman, Pomerance e Rumely [1983] Certamente!


Certamente!
Insieme di witness W(p)
Complessit (lg p)O(lg lg lg p) dato a[0, p-1] facile verificare se aW(p)
se p primo allora W(p) vuoto
se p composto allora |W(p)| p/2
Scelgo
Scelgo aa

Crittografia a Chiave Pubblica 46 Crittografia a Chiave Pubblica 47

Corso di Sicurezza su Reti 8


Alfredo De Santis 03/04/2001

Diminuizione della
Test di primalit probabilistici
probabilit di errore
Probabilit di errore (n composto ma viene  Test di Solovay-Strassen
dichiarato primo) di tale test 1/2 Pubblicato nel 1977
Probabilit di errore (1/2)t
Se il test viene ripetuto indipendentemente t
 Test di Miller-Rabin
volte allora la probabilit di errore (1/2)t Il pi usato in pratica
Il pi veloce
Probabilit di errore (1/4)t

Crittografia a Chiave Pubblica 48 Crittografia a Chiave Pubblica 49

Test di Solovay-Strassen Simbolo di Jacobi


 (a|n) simbolo di Jacobi  (a|n) = (a|p1)e1 (a|p2)e2... (a|pk)ek
Simbolo di Legendre
 Criterio di Eulero: Sia n un primo dispari. 0 se p divide a p primo
(a|p) = 1 se a un quadrato mod p
gcd(a,n) = 1 a(n-1)/2 = (a|n) mod n -1 se a non un quadrato mod p (a|p) = a(p-1)/2 mod p
fattorizzazione dispari n = p1e1 p2e2... pkek, pi primo, ei 0
 Sia n un numero composto dispari.
 Pu essere computato con O((log n)2) operazioni su bit
|{a : gcd(a,n) = 1 and a(n-1)/2 = (a|n) mod n}| (n)/2 (a|n) = 0 gcd(a,n) > 1
a = b mod n (a|n) = (b|n)
 Insieme di witness di Eulero (ab|n) = (a|n) (b|n)
WE(n) = {a : gcd(a,n)>1 oppure a(n-1)/2 (a|n) mod n}
2
(2|n) = (-1)(n -1)/8
(m|n) = (n|m) (-1)(n-1)(m-1)/4

Crittografia a Chiave Pubblica 50 Crittografia a Chiave Pubblica 51

Simbolo di Jacobi Test di Miller-Rabin


2
Pu essere computato con O((log n) ) operazioni su bit
a = b mod n (a|n) = (b|n)  Insieme di witness di Miller-Rabin
(ab|n) = (a|n) (b|n) n-1 = 2 sr con r dispari s
WMR(n) = {a : ar 1 mod n and n-1 = 2 r con r dispari
2
(2|n) = (-1)(n -1)/8
(m|n) = (n|m) (-1)(n-1)(m-1)/4 a2 r -1 mod n per ogni j[0,s-1]}
j

 Se n un primo dispari
Esempio:
Esempio: (158|235)
(158|235)== (2|235)
(2|235) (79|235)
(79|235)
== (-1) WMR(n) vuoto
(-1) (235|79)
(235|79) (-1)
(78)(234)/4
(-1)(78)(234)/4
== (77|79)
(77|79)  Se n un numero composto dispari (n 9)
== (79|77)
(79|77) (-1) | WMR(n) | (3/4) (n)
(76)(78)/4
(-1)(76)(78)/4
== (2|77)
(2|77)
== -1
-1
Crittografia a Chiave Pubblica 52 Crittografia a Chiave Pubblica 53

Corso di Sicurezza su Reti 9


Alfredo De Santis 03/04/2001

Witness di Miller-Rabin Witness di Miller-Rabin


n=91 91 = 7 13
13
n=105 105 = 3 5
5 7
7
91 = 7 13  Witness di Miller-Rabin 105 = 3 5 7
 Witness di Miller-Rabin 1 3
WMR(105) = {a : a13 1 mod 105 and
91-1
91-1==22145
45 105-1
105-1==22313
13
WMR(91) = {a : a45 1 mod 91 and a2 13 -1 mod 105 per ogni j[0,2]}
j

a2 45 -1 mod 91 per ogni j[0,0]}


j

 Strong liars: elementi in {1,2,,104} / WMR(105)


 Se n un numero composto dispari
| WMR(n) | (3/4) (n) {1,104}
Sono solo 2 < 12 = (105)/4 elementi
 Strong liars: elementi in {1,2,,90} / WMR(91)
{1,9,10,12,16,17,22,29,38,53,62,69,74,75,79,81,82,90} In genere strong liars molto meno di (n)/4
Sono 18 = (91)/4 elementi

Crittografia a Chiave Pubblica 54 Crittografia a Chiave Pubblica 55

Fattorizzazione Fattorizzazione: un semplice algoritmo

Dato n calcolare lunica fattorizzazione Calcolo di un fattore primo:


n = p1e1 p2e2... pkek
con pi primo ed ei 0 Per tutti i primi p in [2, n]
Se p|n allora p fattore di n
Splitting di n: calcolare due interi a,b >1
Complessit caso peggiore ( n )
(fattori non-triviali) tali che n = ab
(accade se n = pq)

Se n ha 512 bit allora n 2256


Crittografia a Chiave Pubblica 56 Crittografia a Chiave Pubblica 57

Fattorizzazione: complessit algoritmi Quadratic sieve in pratica


Complessit di tempo sub-esponenziale in media  Quadratic sieve migliore dellalgoritmo basato su
(c+o(1))(ln q)a(lnln q)1-a curve ellittiche
Lq[a,c] = O(e )  Implementazioni del Quadratic sieve 1 mips per anno
con c > 0 ed 0 < a < 1 3 1013 istruzioni

anno numero digit mips per anno


 Algoritmo basato su curve ellittiche: Ln[ 1/2, 1] 1984 71 0.01
1988 106 140
 Quadratic sieve: Ln[ 1/2, 1] 1993 120 825 RSA-
RSA-129
1994 129 5000 1600 computer
 General Number field sieve: Ln[ 1/3, 1.923] per 8 mesi
factoring by e-mail
il pi veloce = 425 bit
Crittografia a Chiave Pubblica 58 Crittografia a Chiave Pubblica 59

Corso di Sicurezza su Reti 10


Alfredo De Santis 03/04/2001

General Number field sieve in pratica Calcolo di fattori piccoli


 General Number field sieve migliore del Quadratic
sieve solo per interi di almeno 110-120 cifre decimali Algoritmi per calcolare un fattore p di n:
 RSA-130, fattorizzato nel 1996 con 500 mips per
anno  Algoritmo Rho di Pollard: tempo medio O(p)
 RSA-140, fattorizzato il 2 febbraio 1999, elapsed  Algoritmo basato su curve ellittiche: tempo medio
time 9 settimane 1/2(lnln q)1/2
 RSA-155, fattorizzato il 22 agosto 1999, con 8000 Lp[1/2, 2] = O(e(2+o(1))(ln q) )
mips per anno, elapsed time 7.4 mesi
160
160 175-400
175-400MHz
MHzSGI
SGIand
andSun
Sunworkstations
workstations
II numeri
numeri pi
pi difficili
difficili da
da fattorizzare
fattorizzare sono
sono del
del
88 250
250MHz
MHzSGI
SGIOrigin
Origin2000
2000processors
processors
120
120 300-450 MHz Pentium II PCs
300-450 MHz Pentium II PCs
512 bit! tipo
tipo nn == pq
pq con
con p,q
p,q primi
primi della
della stessa
stessa lunghezza
lunghezza
44 500
500MHz
MHzDigital/Compaq
Digital/Compaqboxes
boxes
Crittografia a Chiave Pubblica 60 Crittografia a Chiave Pubblica 61

Una strategia generale per fattorizzare Che modulo scegliere?


Cerca fattori piccoli Ad oggi, i numeri pi difficili da
 Prova divisione per alcuni piccoli primi (2,3,5,7,) fattorizzare sono del tipo n = p q con
 Prova algoritmo Rho di Pollard p,q primi della stessa lunghezza
 Prova algoritmo basato su curve ellittiche  e di almeno (per essere tranquilli!)
Cerca fattori grandi 768 bit ( = 230 digit) per uso personale
 Prova Quadratic sieve oppure 1024 bit per le aziende
General Number field sieve 2048 per chiavi importanti
ad esempio Autorit di Certificazione
Crittografia a Chiave Pubblica 62 Crittografia a Chiave Pubblica 63

Intrattabilit della fattorizzazione Sicurezza di RSA


La sicurezza di molte tecniche crittografiche si
Se potesse fattorizzare
basa sulla intrattabilit della fattorizzazione:
 crittosistema RSA, Rabin
 firme digitali RSA
1. Fattorizza n
 2. Computa (p-1)(q-1)
3. Computa d e-1 mod (p-1)(q-1)

Crittografia a Chiave Pubblica 64 Crittografia a Chiave Pubblica 65

Corso di Sicurezza su Reti 11


Alfredo De Santis 03/04/2001

Sicurezza di RSA Sicurezza di RSA


Se potesse computare (n)=(p-1)(q-1),
Se potesse computare (n)=(p-1)(q-1)
potrebbe calcolare d e-1 mod (p-1)(q-1)
potrebbe calcolare d e-1 mod (p-1)(q-1)
n = pq sostituendo
sostituendo pp == n/q
n/q
22
(n) = (p-1)(q-1) pp -- (n-
(n-(n)+1)p + n == 00
(n)+1)p + n
Due soluzioni: p,q

Crittografia a Chiave Pubblica 66 Crittografia a Chiave Pubblica 67

Sicurezza di RSA Sicurezza di RSA


Se potesse computare (n) = (p-1)(q-1),
potrebbe calcolare d e-1 mod (p-1)(q-1) Se potesse computare d

n = pq sostituendo
sostituendo pp == n/q n/q
(n) = (p-1)(q-1) 22
(n-(n)+1)p
pp -- (n- (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
Crittografia a Chiave Pubblica 68 Crittografia a Chiave Pubblica 69

Sicurezza di RSA Sicurezza di RSA

Se potesse computare d ma questo Se potesse computare d ma questo


computazionalmente equivalente a fattorizzare! computazionalmente equivalente a fattorizzare!

Un
Un algoritmo
algoritmo che
che computa
computa dd (con
(con input
input n,e)
n,e)
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 70 Crittografia a Chiave Pubblica 71

Corso di Sicurezza su Reti 12


Alfredo De Santis 03/04/2001

Piccoli messaggi Piccoli messaggi


 Posso cifrare un solo digit 0,1, ,9 con RSA ?  Posso cifrare un solo digit 0,1, ,9 con RSA ?

C Me mod n C Me mod n

Esempio: 125 53 mod 6.012.707 Esempio: 125 53 mod 6.012.707

 Se M < n1/e allora


uso di Digital Envelope
salting del messaggio M

Crittografia a Chiave Pubblica 72 Crittografia a Chiave Pubblica 73

Propriet moltiplicativa di RSA Propriet moltiplicativa di RSA


C1 = M1e mod n (M1M2)e = M1e M2e = C1C2 mod n
Propriet di omomorfismo C2 = M2e mod n
C1 = M1e mod n (M1M2)e = M1e M2e = C1C2 mod n
e
C2 = M2 mod n Chosen-ciphertext attack adattivo
Obiettivo: decifrare C (= Me mod n) Scelgo x a caso
C' C xe mod n
Decifrazione
Decifrazione
M' (C')d mod n
(d,n)
(d,n)

M' = (C')d =(C xe )d = Cd x mod n M M' x-1 mod n


Crittografia a Chiave Pubblica 74 Crittografia a Chiave Pubblica 75

Attacchi ad RSA Informazioni parziali per RSA


Piccolo esponente pubblico (ad es., e = 3)
Dato C
e
C
C == M
Me mod
mod nn
Stesso messaggio inviato a pi utenti
Attacchi ad implementazioni: potrebbero esserci informazioni parziali
Timing Attack sul messaggio M facili da ottenere
Random Faults (senza dover decifrare C ! )
Attacco di Bleichenbacher [1998 ] su PKCS 1 (vecchia
versione): uso del Web browser come oracolo! e difficili ?

02
02 Random
Random 00
00 M
M
hard bit : ultimi c loglog n bit
16 bit
Crittografia a Chiave Pubblica 76 Crittografia a Chiave Pubblica 77

Corso di Sicurezza su Reti 13


Alfredo De Santis 03/04/2001

Un bit facile per RSA Un bit difficile per RSA

C
C == M
e
Me mod
mod nn 0 se M < n/2
halfn,e(C) =
E facile calcolare il simbolo di 1 se M > n/2
Jacobi del testo in chiaro
(C|n) = (Me|n) = (M|n)e = (M|n)

Crittografia a Chiave Pubblica 78 Crittografia a Chiave Pubblica 79

Un bit difficile per RSA Un bit difficile per RSA

0 se M < n/2 0 se M < n/2


halfn,e(C) = halfn,e(C) =
1 se M > n/2 1 se M > n/2
Calcolare halfn,e( ) computazionalmente
equivalente ad invertire RSA halfn,e(C) = 0 1

C Calcola halfn,e(C)
Calcola M 0 n/2 n
Decifra
Decifrann,e M
halfn,en,e(())
half C ,e
Calcola
Calcola
halfn,en,e(())
half
Crittografia a Chiave Pubblica 80 Crittografia a Chiave Pubblica 81

Un bit difficile per RSA Un bit difficile per RSA

0 se M < n/2 0 se M < n/2


halfn,e(C) = halfn,e(C) =
1 se M > n/2 1 se M > n/2
C C (2e mod n) C= (2 M)e mod n C C (4e mod n) C= (4 M)e mod n

halfn,e(C) = 0 1 0 1 halfn,e(C) = 0 1 0 1 0 1 0 1

M 0 n/4 n/2 3n/4 n M 0 n/8 n/4 3n/8 n/2 5n/8 3n/4 7n/8 n
Crittografia a Chiave Pubblica 82 Crittografia a Chiave Pubblica 83

Corso di Sicurezza su Reti 14


Alfredo De Santis 03/04/2001

Un bit difficile per RSA Predicato parit


e
C
C == M
Me mod
mod nn
 Ricerca binaria
paritn,e(C) = bit meno significativo di M
 Dopo log n chiamate ad halfn,e( )
lintervallo consta di un solo valore I predicati paritn,e( ) e halfn,e( )
sono computazionalmente equivalenti
paritn,e(C) = halfn,e(y)
y = C (2-1 )e mod n
= (M 2-1)e mod n
Crittografia a Chiave Pubblica 84 Crittografia a Chiave Pubblica 85

Alcuni Crittosistemi
Crittografia probabilistica
a chiave pubblica
Testo in chiaro M = M1 M2 M3  RSA [1977] (fattorizzazione)
 Merkle-Hellman [1978] (zaino 0-1) rotto!
Testo cifrato C = C1 C2 C3
Molte varianti rotte! Resiste Chor-Rivest [1988]
 Rabin [1979] (fattorizzazione)
Mi = predicato_difficile (Ci)  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 86 Crittografia a Chiave Pubblica 87

Funzioni one-way Funzioni one-way trapdoor

Facili da calcolare e
Facili da calcolare e
difficili da invertire
difficili da invertire

a meno che si conosca


una trapdoor
Crittografia a Chiave Pubblica 88 Crittografia a Chiave Pubblica 89

Corso di Sicurezza su Reti 15


Alfredo De Santis 03/04/2001

Alcuni brevetti software (USA) Export dagli USA


numero oggetto inventore scadenza International Traffic in Arms Regulations (ITAR) [1989]
3.962.539 DES Ehrsam ed al. 1993  United States Munitions List
 Strong encryption
4.200.770 Diffie-Hellman Hellman, Diffie, Merkle 1997
4.218.582 Critt. chiave pubblica Helman, Merkle 1997
4.424.414 Pohling-Hellman Hellman, Pohling 3 gen 2001 RSA 512 bit
4.405.829 RSA Rivest, Shamir, Adleman 20 sett 2000 cifrari a blocco (DES, IDEA, RC6,) 40 bit
4.748.668 Shamir-Fiat Shamir, Fiat 2005  eccetto se limitato a
4.850.017 Vettori di controllo Matyas, Meyer, Bracht 2006 non deve essere facilmente
controllo accessi (ad es., ATM) utilizzabile per cifrare!
5.140.634 Guillou-Quisquater Guillou-Quisquater 2009
5.231.668 DSA Kravitz 2010 autenticazione dati (ad es., MAC, firme)
5.214.703 IDEA Massey-Lai 2010  Permesso dal Department of Commerce,
5.276.737 Fair Cryptosystems Micali 2011
ad es. Cybercash, cifratura RSA 768 bit per transazioni finanziarie

Crittografia a Chiave Pubblica 90 Crittografia a Chiave Pubblica 91

Corso di Sicurezza su Reti 16