Teoria dei Numeri - INTRANET - Dipartimento di...

19
Crittografia a Chiave Pubblica 0 Crittosistema a chiave pubblica file pubblico utente chiave pubblica utente chiave pubblica A A kpub chiave privata kpriv chiave privata chiave privata kpriv nnarella Crittografia a Chiave Pubblica 1 Cifratura iagio utente chiave pubblica utente chiave pubblica A A kpub Devo cifrare il messaggio M Devo cifrare il messaggio M ed inviarlo ad ed inviarlo ad A file pubblico Crittografia a Chiave Pubblica 2 Cifratura utente chiave pubblica utente chiave pubblica A A kpub Cifratura Cifratura di M per di M per A C CIFRA CIFRA (kpub, M) C file pubblico iagio Crittografia a Chiave Pubblica 3 Decifratura nnarella utente chiave pubblica utente chiave pubblica A A kpub Devo decifrare il messaggio cifrato C C ?? ?? C? C? file pubblico Crittografia a Chiave Pubblica 4 Decifratura utente chiave pubblica utente chiave pubblica A A kpub C Decifratura di C M DECIFRA DECIFRA (kpriv, C) chiave privata kpriv chiave privata chiave privata kpriv file pubblico nnarella Crittografia a Chiave Pubblica 5 Teoria dei Numeri Crittosistemi a chiave pubblica più comuni basati sulla Teoria dei Numeri “… 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

Transcript of Teoria dei Numeri - INTRANET - Dipartimento di...

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •1

Crittografia a Chiave Pubblica 0

Crittosistema a chiave pubblica

file pubblicoutente chiave pubblica

A kpub … …

utente chiave pubblicautente chiave pubblicaA A kpub … …

chiave privatakpriv

chiave privatachiave privatakpriv

nnarellaCrittografia a Chiave Pubblica 1

Cifratura

iagio

utente chiave pubblicaA kpub … …

utente chiave pubblicautente chiave pubblicaA A kpub … …

Devo cifrare il messaggio MDevo cifrare il messaggio Med inviarlo ad ed inviarlo ad AA

file pubblico

Crittografia a Chiave Pubblica 2

Cifratura

utente chiave pubblicaA kpub … …

utente chiave pubblicautente chiave pubblicaA A kpub … …

Cifratura Cifratura di M per di M per AAC ← CIFRA CIFRA (kpub, M)

CCfile pubblico

iagioCrittografia a Chiave Pubblica 3

Decifratura

nnarella

utente chiave pubblicaA kpub … …

utente chiave pubblicautente chiave pubblicaA A kpub … …

Devo decifrare il messaggio cifrato C

CC????C?C?

file pubblico

Crittografia a Chiave Pubblica 4

Decifratura

utente chiave pubblicaA kpub … …

utente chiave pubblicautente chiave pubblicaA A kpub … …

CC

Decifratura di CM ← DECIFRADECIFRA (kpriv , C)

chiave privatakpriv

chiave privatachiave privatakpriv

file pubblico

nnarellaCrittografia a Chiave Pubblica 5

Teoria dei NumeriCrittosistemi a chiave pubblica più comuni basati sulla Teoria dei Numeri

“… both Gauss and lesser mathematicians may be justified in rejoicing that there is one science at anyrate, and that their own, whose very remoteness from ordinary human activities keep it gentle and clean.”G. H. Hardy, A Mathematician’s Apology, 1940

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •2

Crittografia a Chiave Pubblica 6

RSA

Sicurezza basata sulla difficoltà di fattorizzare

Proposto nel 1978 da

Rivest Shamir Adleman

Crittografia a Chiave Pubblica 7

RSA

Shamir Rivest Adleman

Crittografia a Chiave Pubblica 8

Chiavi RSA

file pubblicoutente chiave pubblica

A (n,e) … …

utente chiave pubblicautente chiave pubblicaA A (n,e) … …

chiave privata(n,d)

chiave privatachiave privata(n,d)

n = pqp,q primi

ed = 1 mod (p-1)(q-1)

nnarellaCrittografia a Chiave Pubblica 9

Cifratura RSA

utente chiave pubblicaA (n,e) … …

utente chiave pubblicautente chiave pubblicaA A (n,e) … …

Devo cifrare il messaggio MDevo cifrare il messaggio M

ed inviarlo ad ed inviarlo ad AA

file pubblico

iagio

Crittografia a Chiave Pubblica 10

Cifratura RSA

utente chiave pubblicaA (n,e) … …

utente chiave pubblicautente chiave pubblicaA A (n,e) … …

Cifratura Cifratura di M per di M per AAC ← Me mod n

CC

iagio

file pubblico

Crittografia a Chiave Pubblica 11

Decifratura RSA

utente chiave pubblicaA (n,e) … …

utente chiave pubblicautente chiave pubblicaA A (n,e) … …

Devo decifrare il messaggio cifrato C

CC????C?C?

file pubblico

nnarella

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •3

Crittografia a Chiave Pubblica 12

Decifratura RSA

utente chiave pubblicaA (n,e) … …

utente chiave pubblicautente chiave pubblicaA A (n,e) … …

CCDecifratura di C

M ← Cd mod n

chiave privata(n,d)

chiave privatachiave privata(n,d)

nnarella

file pubblico

Crittografia a Chiave Pubblica 13

“Piccolo” esempio: Chiavi RSA

utente chiave pubblica A (n = 3337, e = 79) … …

utente chiave pubblica utente chiave pubblica A A (n = 3337, e = 79) … …

chiave privata(n=3337, d=1019)chiave privatachiave privata

(n=3337, d=1019)

ed = 79 ·1019 = 1 mod 3220(p-1)(q-1) = 46 ·70 = 3220

3337 = 47 ·71p = 47, q = 71

file pubblico

nnarella

Crittografia a Chiave Pubblica 14

Esempio: Cifratura RSA

utente chiave pubblica A (n = 3337, e = 79)

… …

utente chiave pubblica utente chiave pubblica A A (n = 3337, e = 79)

… … 1570

Cifratura di M = 688 per AA1570 ← 6887 9 mod 3337

file pubblico

iagioCrittografia a Chiave Pubblica 15

Esempio: Decifratura RSA

utente chiave pubblica A (n = 3337, e = 79) … …

utente chiave pubblica utente chiave pubblica A A (n = 3337, e = 79) … …

1570

Decifratura di C = 1570688 ← 15701019 mod 3337

chiave privata(n=3337, d=1019)chiave privatachiave privata

(n=3337, d=1019)

nnarella

file pubblico

Crittografia a Chiave Pubblica 16

“Piccolo” esempio: Chiavi RSA

utente chiave pubblica A (n = 55, e = 3) … …

utente chiave pubblica utente chiave pubblica A A (n = 55, e = 3) … …

chiave privata(n=55, d=27)

chiave privatachiave privata(n=55, d=27)

ed = 3 · 27 = 1 mod 40(p-1)(q-1) = 10 · 4 = 40

55 = 11 ·5p = 11, q = 5

file pubblico

nnarellaCrittografia a Chiave Pubblica 17

Esempio: Cifratura RSA

utente chiave pubblica A (n = 55, e = 3)

… …

utente chiave pubblica utente chiave pubblica A A (n = 55, e = 3)

… … 15

Cifratura di M = 5 per AA15 ← 53 mod 55

file pubblico

iagio

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •4

Crittografia a Chiave Pubblica 18

Esempio: Decifratura RSA

utente chiave pubblica A (n = 55, e = 3) … …

utente chiave pubblica utente chiave pubblica A A (n = 55, e = 3) … …

15

Decifratura di C = 155 ← 1527 mod 55

chiave privata(n=55, d=27)

chiave privatachiave privata(n=55, d=27)

nnarella

file pubblico

Crittografia a Chiave Pubblica 19

Esempio: Cifratura RSA

utente chiave pubblica A (n = 55, e = 3)

… …

utente chiave pubblica utente chiave pubblica A A (n = 55, e = 3)

… … 47

Cifratura di M = 5718 per AA47 ← 57183 mod 55

file pubblico

iagio

Crittografia a Chiave Pubblica 20

Esempio: Decifratura RSA

utente chiave pubblica A (n = 55, e = 3) … …

utente chiave pubblica utente chiave pubblica A A (n = 55, e = 3) … …

47

Decifratura di C = 4753 ← 4727 mod 55

chiave privata(n=55, d=27)

chiave privatachiave privata(n=55, d=27)

nnarella

file pubblico

Crittografia a Chiave Pubblica 21

Esempio: Decifratura RSA

utente chiave pubblica A (n = 55, e = 3) … …

utente chiave pubblica utente chiave pubblica A A (n = 55, e = 3) … …

47

Decifratura di C = 4753 ← 4727 mod 55

chiave privata(n=55, d=27)

chiave privatachiave privata(n=55, d=27)

nnarella

file pubblico

5353≠≠57185718

Crittografia a Chiave Pubblica 22

Esempio: Decifratura RSA

utente chiave pubblica A (n = 55, e = 3) … …

utente chiave pubblica utente chiave pubblica A A (n = 55, e = 3) … …

47

Decifratura di C = 4753 ← 4727 mod 55

chiave privata(n=55, d=27)

chiave privatachiave privata(n=55, d=27)

nnarella

file pubblico

57185718≡≡53 53 mod mod 5555

Crittografia a Chiave Pubblica 23

Esempio corretto

utente chiave pubblica A (n = 55, e = 3)

… …

utente chiave pubblica utente chiave pubblica A A (n = 55, e = 3)

… …

15,13,2

Cifratura di 001010011110010001010011110010

15 ← 53 mod 55 13 ← 73 mod 552 ← 183 mod 55

file pubblico

iagio

011110110100010011110110100010

55=11011155=11011122

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •5

Crittografia a Chiave Pubblica 24

Esempio corretto

utente chiave pubblica A (n = 55, e = 3)

… …

utente chiave pubblica utente chiave pubblica A A (n = 55, e = 3)

… …

15,13,2

Cifratura di M = 5718 per AA15 ← 53 mod 55 13 ← 73 mod 552 ← 183 mod 55

file pubblico

iagio

011110110100010011110110100010

Crittografia a Chiave Pubblica 25

Esempio: Decifratura RSA

utente chiave pubblica A (n = 55, e = 3) … …

utente chiave pubblica utente chiave pubblica A A (n = 55, e = 3) … …

15,13,2

Decifratura di C = 15,13,25 ← 1527 mod 557 ← 1327 mod 5518 ← 227 mod 55

chiave privata(n=55, d=27)

chiave privatachiave privata(n=55, d=27)

nnarella

file pubblico

Crittografia a Chiave Pubblica 26

EsercizioSvolgere altro “piccolo” esempio RSA

– Calcolo p, q– Calcolo n– Calcolo e, d– Calcolo cifratura– Calcolo decifratura

Crittografia a Chiave Pubblica 27

Crittografia a chiave pubblica ed a chiave privata

qVantaggi della crittografia a chiave pubblica– Chiavi private mai trasmesse– Possibile la firma digitale

qVantaggi della crittografia a chiave privata– 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)

Crittografia a Chiave Pubblica 28

iagio

Digital Envelope

utente chiave pubblicaA kpub … …

utente chiave pubblicautente chiave pubblicaA A kpub … …

Cifratura Cifratura di M per di M per A A k ← genera chiave sessioneC1 ← CIFRA CIFRA (kpub, k) C2 ← E E (k, M)

CC11,C,C22

file pubblico

Crittografia a Chiave Pubblica 29

Digital Envelope: Decifratura

utente chiave pubblicaA kpub … …

utente chiave pubblicautente chiave pubblicaA A kpub … …

chiave privatakpriv

chiave privatachiave privatakpriv

DecifraturaDecifratura di di CC11,C,C22k ← DECIFRA DECIFRA (kpriv , C1)M ← D (k, C2)

CC11,C,C22

file pubblico

nnarella

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •6

Crittografia a Chiave Pubblica 30

Digital Envelope: vantaggi

q Chiave di sessione solo per uno o pochi messaggiq Molto più veloce della sola

crittografia a chiave pubblica

Crittografia a Chiave Pubblica 31

Correttezza decifratura RSA

Cd mod n = (Me)d mod n = Mde mod n= M1+r(p-1)(q-1) mod n= M mod n = M

poichè 0≤M<n

Teorema di Eulerox∈Zn

* ⇒ x(p-1)(q-1)=1 mod n

Prova per tutti gli x mediante il teorema del resto cinese

Prova per tutti gli x mediante Prova per tutti gli x mediante il il teorema del resto cineseteorema del resto cinese

ed = 1 mod (p-1)(q-1)

Crittografia a Chiave Pubblica 32

Funzione di Euleroq φ(n) = cardinalità di Zn* = { x | 0<x<n tali che gcd(x,n)=1}q φ(p) = p-1 se p primoq φ(pq) = (p-1)(q-1) se p,q primi

q φ(n) =

fattorizzazione n = p1e1 p2

e2... pkek, pi primo, ei ≥ 0

q Teorema di Eulero: x ∈ Zn* ⇒ xφ(n) = 1 mod n

−⋅

−⋅

k21 p1

1p1

1p1

1n L

Crittografia a Chiave Pubblica 33

Efficienza delle computazioni

Come effettuare le computazioni?

– Elevazione a potenza modularegenerazione di e

– Generazione e,dd ← e-1 mod (p-1)(q-1)

– Generazione numeri primi

Crittografia a Chiave Pubblica 34

Elevazione a potenza modulareMetodo naive

Potenza_Modulare_naive (x, y, z)a ← 1for i = 1 to y do

a ← (a ·x) mod zreturn a

Potenza_Modulare_naive (x, y, z)a ← 1for i = 1 to y do

a ← (a ·x) mod zreturn a

Calcolo di xy mod z

Crittografia a Chiave Pubblica 35

Elevazione a potenza modulareMetodo naive

Potenza_Modulare_naive (x, y, z)a ← 1for i = 1 to y do

a ← (a · x) mod zreturn a

Potenza_Modulare_naive (x, y, z)a ← 1for i = 1 to y do

a ← (a · x) mod zreturn a

Calcolo di xy mod z

Se y è di 512 bit, occorrono ≈ 2512 operazioni

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •7

Crittografia a Chiave Pubblica 36

Elevazione a potenza modulareMetodo left-to-right

Calcolo di xy mod z y = y020+ y121 +… +yt2t

Idea: y = y0+2(y1+ 2(y2+… +2(yt-1+2yt)))))

Esempio:Esempio:40 = 0·20 + 0·21 + 0·22 + 1·23 + 0·24 + 1·25

40 = 0 + (2 (0 + 2 (0 + (2 (1 + 2 (0 + 2·1))))))

Crittografia a Chiave Pubblica 37

Elevazione a potenza modulareMetodo left-to-right

Calcolo di xy mod z y = y020+ y121 +… +yt2t

Idea:Idea: y = y0+2(y1+ 2(y2+… +2(yt-1+2yt)))))

xy = xy0+2(y 1+2(y 2+…+2(y t-1+2y t)))))

= xy0x2(y 1+2(y 2+…+2(y t-1+2y t)))))

= xy0(xy1+2(y 2+…+2(y t-1+2y t))))))2

= xy0(xy1(xy2+…+2(y t-1+2y t))))))2)2

= xy0 (xy1( … (xy t-1(xy t)2)2… )2

Crittografia a Chiave Pubblica 38

Elevazione a potenza modulareMetodo left-to-right

Esempio:Esempio: x40

40 = 0·20 + 0·21 + 0·22 + 1·23 + 0·24 + 1·25

40 = 0 + (2 (0 + 2 (0 + (2 (1 + 2 (0 + 2·1))))))

x40 = x0 ( x0 (x0 (x1 (x0 (x1)2 )2 )2 )2 )2

Calcolo di xy mod z y = y020+ y121 +… +yt2t

Idea: y = y0+2(y1+… +2(yt-1+2yt)))))

xy = xy0 (… (xy t-1(xy t)2)2… )2

Crittografia a Chiave Pubblica 39

Elevazione a potenza modulareMetodo left-to-right

Calcolo di xy mod z y = y020+ y121 +… +yt2t

Idea: y = y0+2(y1+… +2(yt-1+2yt)))))

xy = xy0 (… (xy t-1(xy t)2)2… )2

Potenza_Modulare (x, y, z)a ← 1for i = t downto 0 do

a ← (a · a) mod zif yi = 1 then a ← (a · x) mod z

return a

Potenza_Modulare (x, y, z)a ← 1for i = t downto 0 do

a ← (a · a) mod zif yi = 1 then a ← (a · x) mod z

return a

left-to-right

Crittografia a Chiave Pubblica 40

Elevazione a potenza modulareMetodo right-to-left

Calcolo di xy mod z y = y020+ y121 +… +yt2t

Idea:Idea: xy = x20y0+21y1…+2ty t

= x20y0 · x21y1 · … · x2 ty t

= (x20)y0 · (x21)y1 · … · (x2t)y t

Crittografia a Chiave Pubblica 41

Elevazione a potenza modulareMetodo right-to-left

Esempio:Esempio: x40

40 = 0·20+ 0·21 +0·22 + 1·23 + 0·24 + 1·25

x40 = (x1)0 · (x2)0 · (x4)0 · (x8)1 · (x16)0 · (x32)1

Calcolo di xy mod z y = y020+ y121 +… +yt2t

Idea:Idea: xy = (x20)y0 · (x21)y1 · … · (x2t)y t

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •8

Crittografia a Chiave Pubblica 42

Elevazione a potenza modulareMetodo right-to-left

Esempio:Esempio: x40

40 = 0·20+ 0·21 +0·22 + 1·23 + 0·24 + 1·25

x40 = (x1)0 · (x2)0 · (x4)0 · (x8)1 · (x16)0 · (x32)1

x1 x2 x4 x8 x16 x32

Calcolo di xy mod z y = y020+ y121 +… +yt2t

Idea:Idea: xy = (x20)y0 · (x21)y1 · … · (x2t)y t

=1=1 =1=1 =1=1 =1=1

Crittografia a Chiave Pubblica 43

Elevazione a potenza modulareMetodo right-to-left

Esempio:Esempio: x40

40 = 0·20+ 0·21 +0·22 + 1·23 + 0·24 + 1·25

x40 = (x1)0 · (x2)0 · (x4)0 · (x8)1 · (x16)0 · (x32)1

x40 = x8 · x32

Calcolo di xy mod z y = y020+ y121 +… +yt2t

Idea:Idea: xy = (x20)y0 · (x21)y1 · … · (x2t)y t

=1=1 =1=1 =1=1 =1=1

Crittografia a Chiave Pubblica 44

Elevazione a potenza modulareMetodo right-to-left

Potenza_Modulare (x, y, z)if y = 0 then return 1X ← x; P ← 1if y0 = 1 then X ← xfor i = 1 to t do

X ← X ·X mod zif yi=1 then P ← P ·X mod z

return P

Potenza_Modulare (x, y, z)if y = 0 then return 1X ← x; P ← 1if y0 = 1 then X ← xfor i = 1 to t do

X ← X ·X mod zif yi=1 then P ← P ·X mod z

return P 5596mod 123455596596mod 1234mod 1234i 0 1 2 3 4 5 6 7 8 9

yi 0 0 1 0 1 0 1 0 0 1X 5 25 625 681 1011 369 421 779 947 925P 1 1 625 625 67 67 1059 1059 1059 1013

Crittografia a Chiave Pubblica 45

Scelta esponente pubblico

qMinimizzare operazioni per elevazione a potenzaq e ← 3 q e ← 216+1

decimale 65.537binario 10000000000000001

Crittografia a Chiave Pubblica 46

RSA Performance

qCeleron 450, Windows 2000, Crypto++,

27decifratura1024 bit1cifratura1024 bit4decifratura512 bit

0,2cifratura512 bit

ms/operazione

Crittografia a Chiave Pubblica 47

Efficienza delle computazioni

Come effettuare le computazioni?

– Elevazione a potenza modularegenerazione di e

– Generazione e,dd ← e-1 mod (p-1)(q-1)

– Generazione numeri primi

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •9

Crittografia a Chiave Pubblica 48

Teorema della ricorsione del gcdPer tutti gli interi a ≥ 0 e b > 0

gcd(a,b) = gcd(b,a mod b)

Teorema della ricorsione del gcdPer tutti gli interi a ≥ 0 e b > 0

gcd(a,b) = gcd(b,a mod b)

Algoritmo di EuclideDescritto negli Elementi di Euclide (circa 300 A. C.)

Euclide (a,b)if b = 0 then return a

else return Euclide (b, a mod b)

Euclide (a,b)if b = 0 then return a

else return Euclide (b, a mod b)

Crittografia a Chiave Pubblica 49

Algoritmo di Euclide: Esempi

Euclide (30,21) = Euclide (21,9) = Euclide (9,3) = Euclide (3,0) = 3

Euclide (4864,3458) = Euclide (3458,1406) = Euclide (1406,646) = Euclide (646,114) = Euclide (114,76)= Euclide (76,38)= Euclide (38,0) = 38

Crittografia a Chiave Pubblica 50

Algoritmo di Euclide: complessità

qAssumiamo a ≥ b qAl massimo log b chiamateqPer ogni chiamata O( (log a)2 ) operazioni su bit qTotale: al massimo O( (log a)3 ) operazioni su bit qEuclide (a,b) richiede al massimo O( (log a)2 )

operazioni su bit

Crittografia a Chiave Pubblica 51

Algoritmo di Euclide Esteso

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

q Stesso running time asintotico di Euclide (a,b)

Euclide-esteso (a,b)if b = 0 then return (a, 1, 0)(d , x , y´) ← Euclide-esteso (b, a mod b)(d, x, y) ← (d´, y´, x - a/b y )return (d, x, y)

Euclide-esteso (a,b)if b = 0 then return (a, 1, 0)(d , x , y´) ← Euclide-esteso (b, a mod b)(d, x, y) ← (d´, y´, x - a/b y )return (d, x, y)

Crittografia a Chiave Pubblica 52

Euclide_iterativo (a,b)while b ≠ 0 do

r ← a mod b; a ← b; b ← r;return a

Euclide_iterativo (a,b)while b ≠ 0 do

r ← a mod b; a ← b; b ← r;return a

Algoritmo di Euclide (iterativo)

Esercizio: versione iterativa di Euclide-esteso (a,b)

Crittografia a Chiave Pubblica 53

Soluzione di ax≡b (mod m)

Esempi:

3x≡7 (mod 8) soluzione 5

2x≡4 (mod 8) soluzione 2,6

4x≡2 (mod 8) nessuna soluzione12345670724602460636147250540404040452741630364206420276543210100000000076543210

Dati a, b, m calcolare x

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •10

Crittografia a Chiave Pubblica 54

Soluzione di ax≡b (mod m)

g = gcd(a,m)g = g = gcdgcd(a,m)(a,m)q Ha soluzioni se e solo se g|b

q Se g|b ci sono esattamente g distinte

soluzioni mod m:

per i = 0,1,…, g-1

dove g = ax′+my (da Euclide-esteso (a,m) ) gm

igb

x' +

Crittografia a Chiave Pubblica 55

Soluzione di ax≡1 (mod m)

q Ha soluzioni se e solo se gcdgcd(a,m) =1(a,m) =1

q Se gcdgcd(a,m) =1 (a,m) =1 l’unica soluzione mod n è:x´

dove 1 = ax′+my (da Euclide-esteso (a,m) )q Tale soluzione viene denotata con a -1 mod m

Crittografia a Chiave Pubblica 56

Soluzione di ax≡1 (mod 8)

Ha soluzioni se e solo se gcdgcd(a,8) =1(a,8) =1

1 = 1-1 mod 8

3 = 3-1 mod 8

5 = 5-1 mod 8

7 = 7-1 mod 812345670724602460636147250540404040452741630364206420276543210100000000076543210

Crittografia a Chiave Pubblica 57

Soluzione di ax≡1 (mod 7)

Ha soluzioni se e solo se gcdgcd(a,7) =1(a,7) =11 = 1-1 mod 7 4 = 2-1 mod 75 = 3-1 mod 72 = 4-1 mod 73 = 5-1 mod 76 = 6-1 mod 7

123456062461350536251404415263035316420265432101000000006543210

Crittografia a Chiave Pubblica 58

Euclide-esteso (a,b)if b = 0 then return (a, 1, 0)(d , x , y´) ← Euclide-esteso (b, a mod b)(d, x, y) ← (d´, y´, x - a/b y )return (d, x, y)

Euclide-esteso (a,b)if b = 0 then return (a, 1, 0)(d , x , y´) ← Euclide-esteso (b, a mod b)(d, x, y) ← (d´, y´, x - a/b y )return (d, x, y)

Esempio: calcolo di 5-1 mod 7

0110110112-211253-2157yxdba

1 = -2·7 + 3·5

3 = 5-1 mod 7

d = x·a + y·b

Crittografia a Chiave Pubblica 59

Efficienza delle computazioni

Come effettuare le computazioni?

– Elevazione a potenza modularegenerazione di e

– Generazione e,dd ← e-1 mod (p-1)(q-1)

– Generazione numeri primi

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •11

Crittografia a Chiave Pubblica 60

Generazione chiavi

1. Input L (lunghezza modulo)2. Genera 2 primi di lunghezza L/23. n ← p ·q4. Scegli a caso e5. If gcd ( e, (p-1)(q-1) ) = 1

then d ← e-1 mod (p-1)(q-1)else goto 4.

1. Input L (lunghezza modulo)2. Genera 2 primi di lunghezza L/23. n ← p ·q4. Scegli a caso e5. If gcd ( e, (p-1)(q-1) ) = 1

then d ← e-1 mod (p-1)(q-1)else goto 4.

Crittografia a Chiave Pubblica 61

Generazione chiavi (comunemente usata in pratica)

1. Input L (lunghezza modulo)2. e ← 3 oppure e ← 216+1 (= 65.537)3. Genera 2 primi di lunghezza L/24. n ← p ·q5. If gcd ( e, (p-1)(q-1) ) = 1

then d ← e-1 mod (p-1)(q-1)else goto 3.

1. Input L (lunghezza modulo)2. e ← 3 oppure e ← 216+1 (= 65.537)3. Genera 2 primi di lunghezza L/24. n ← p ·q5. If gcd ( e, (p-1)(q-1) ) = 1

then d ← e-1 mod (p-1)(q-1)else goto 3.

Crittografia a Chiave Pubblica 62

1. Genera a caso un dispari p di grandezza appropriata2. Testa se p è primo3. Se p è composto, go to 1.

1. Genera a caso un dispari p di grandezza appropriata2. Testa se p è primo3. Se p è composto, go to 1.

Generazione di un primo ‘grande’

Crittografia a Chiave Pubblica 63

Variante con sequenza di ricerca1. Genera a caso un dispari p di grandezza appropriata2. Testa se p è primo3. Se p è composto, p ← p+2, go to 2.

Variante con sequenza di ricerca1. Genera a caso un dispari p di grandezza appropriata2. Testa se p è primo3. Se p è composto, p ← p+2, go to 2.

Generazione di un primo ‘grande’

1. Genera a caso un dispari p di grandezza appropriata2. Testa se p è primo3. Se p è composto, go to 1.

1. Genera a caso un dispari p di grandezza appropriata2. Testa se p è primo3. Se p è composto, go to 1.

Crittografia a Chiave Pubblica 64

Distribuzione dei numeri primi

q π(x) = numero di primi in [2,x]

q Teorema dei numeri primi:

q Esempio: π(1010) = 455.052.511

1010/ln 1010 ≈ 434.294.481,9 (4% in meno)

q Per x ≥ 17

xlnx1.25506(x)

xlnx p <<

1xx/ln

(x)lim

px

=∞→

Crittografia a Chiave Pubblica 65

Scelta di un primo di 512 bit

qScelto un intero in [2,2512] la probabilità che sia primo è circa 1 su ln 2512 (ln 2512 ≈ 354,89)qNumero medio di tentativi ≈ 354,89qSe si scelgono solo dispari dimezza ≈ 177,44qSe si scelgono dispari in [2511,2512] probabilità è

79,1771

221

2ln2

2ln2

511511

511

512

512 )( ≈≈ −

1 … … … 11 … … … 1

510 bit scelti a caso510 bit scelti a caso

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •12

Crittografia a Chiave Pubblica 66

Scelta di un primo di 1024 bit

qScelto un intero in [2,21024] la probabilità che sia primo è circa 1 su ln 21024 (ln 21024 ≈ 709,78)qNumero medio di tentativi ≈ 709,78qSe si scelgono solo dispari dimezza ≈ 354,89qSe si scelgono dispari in [21023,21024] probabilità

23,3551

221

2ln2

2ln2

10231023

1023

1024

1024 )( ≈≈ −

1 … … … 11 … … … 1

1022 bit scelti a caso1022 bit scelti a caso Crittografia a Chiave Pubblica 67

Test di primalità

qIl miglior algoritmo deterministico è una

variante di Cohen e H. Lenstra del test

di Adleman, Pomerance e Rumely [1983]

qComplessità (lg p)O(lg lg lg p)

Crittografia a Chiave Pubblica 68

Test di primalità probabilistici

Insieme di witness W(p)– dato a∈[0, p-1] è facile verificare se a∈W(p)– se p è primo allora W(p) è vuoto– se p è composto allora |W(p)| ≥ p/2

Test PrimalitàTest Test PrimalitàPrimalitàpp primo primo

compostocomposto

Certamente!Certamente!Certamente!

Probabilmente!Probabilmente!Probabilmente!

Scelgo aScelgo aScelgo a

Crittografia a Chiave Pubblica 69

Diminuizione della probabilità di errore

qProbabilità di errore (n è composto ma viene

dichiarato primo) di tale test ≤ 1/2

qSe il test viene ripetuto indipendentemente t

volte allora la probabilità di errore ≤ (1/2)t

Crittografia a Chiave Pubblica 70

Test di primalità probabilistici

q Test di Solovay-Strassen– Pubblicato nel 1977– Probabilità di errore ≤ (1/2)t

q Test di Miller-Rabin– Il più usato in pratica – Il più veloce – Probabilità di errore ≤ (1/4)t

Crittografia a Chiave Pubblica 71

Test di Solovay-Strassenq (a|n) simbolo di Jacobiq Criterio di Eulero: Sia n un primo dispari.

gcd(a,n) = 1 ⇒ a(n-1)/2 = (a|n) mod n

q Sia n un numero composto dispari.|{a : gcd(a,n) = 1 and a(n-1)/2 = (a|n) mod n}| ≤ φ(n)/2

q Insieme di witness di EuleroWE(n) = {a : gcd(a,n)>1 oppure a(n-1)/2 ≠ (a|n) mod n}

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •13

Crittografia a Chiave Pubblica 72

Simbolo di Jacobiq (a|n) = (a|p1)

e1 (a|p2)e2... (a|pk)

ek

0 se p divide a(a|p) = 1 se a è un quadrato mod p

-1 se a non è un quadrato mod pfattorizzazione dispari n = p1

e1 p2e2... pk

ek , 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|n) = (-1)(n2-1)/8

– (m|n) = (n|m) (-1)(n-1)(m-1)/4

Simbolo di Legendrep primo

(a|p) = a(p-1)/2 mod p

Crittografia a Chiave Pubblica 73

Simbolo di JacobiPuò essere computato con O((log n) 2) operazioni su bit

– a = b mod n ⇒ (a|n) = (b|n)– (ab|n) = (a|n) (b|n)– (2|n) = (-1)(n2-1)/8

– (m|n) = (n|m) (-1)(n-1)(m-1)/4

Esempio: (158|235) = (2|235) (79|235)= (-1) (235|79) (-1)(78)(234)/4

= (77|79) = (79|77) (-1)(76)(78)/4

= (2|77) = -1

Esempio: (158|235) = (2|235) (79|235)= (-1) (235|79) (-1)(78)(234)/4

= (77|79) = (79|77) (-1)(76)(78)/4

= (2|77) = -1

Crittografia a Chiave Pubblica 74

Test di Miller-Rabinq Insieme di witness di Miller-Rabin

WMR(n) = {a : ar ≠ 1 mod n anda2jr ≠ -1 mod n per ogni j∈[0,s-1]}

q Se n è un primo dispariWMR(n) è vuoto

q Se n è un numero composto dispari (n ≠ 9)| WMR(n) | ≥ (3/4) ·φ(n)

n-1 = 2s r con r disparin-1 = 2s r con r dispari

Crittografia a Chiave Pubblica 75

Witness di Miller-Rabin n=91

q Witness di Miller-Rabin

WMR(91) = {a : a45 ≠ 1 mod 91 anda2j·45 ≠ -1 mod 91 per ogni j∈[0,0]}

q Se n è un numero composto dispari| WMR(n) | ≥ (3/4) ·φ(n)

q 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}

Sono 18 = φ(91)/4 elementi

91-1 = 21 · 4591-1 = 21 · 45

91 = 7·1391 = 791 = 7·1313

Crittografia a Chiave Pubblica 76

Witness di Miller-Rabin n=105

q Witness di Miller-RabinWMR(105) = {a : a13 ≠ 1 mod 105 and

a2j·13 ≠ -1 mod 105 per ogni j∈[0,2]}q Strong liars: elementi in {1,2,…,104} / WMR(105)

{1,104}

Sono solo 2 < 12 = φ(105)/4 elementi

In genere strong liars molto meno di φ(n)/4

105-1 = 23 · 13105-1 = 23 · 13

105 = 3·5 ·7105 = 3105 = 3·55 ·77

Crittografia a Chiave Pubblica 77

Fattorizzazione

Dato n calcolare l’unica fattorizzazionen = p1

e1 p2e2... pk

ek

con pi primo ed ei ≥ 0

Splitting di n: calcolare due interi a,b >1

(fattori non-triviali) tali che n = a·b

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •14

Crittografia a Chiave Pubblica 78

Fattorizzazione: un semplice algoritmo

Complessità caso peggiore Θ( )

(accade se n = pq)

Se n ha 512 bit allora

nPer tutti i primi p in [2, ]

Se p|n allora p è fattore di n

n

2n 256≈

Calcolo di un fattore primo:

Crittografia a Chiave Pubblica 79

Fattorizzazione: complessità algoritmi

Complessità di tempo sub-esponenziale in media

Lq[a,c] = O(e(c+o(1))(ln q)a(lnln q)1-a)

con c > 0 ed 0 < a < 1

q Algoritmo basato su curve ellittiche: Ln[ 1/2, 1]

q Quadratic sieve: Ln[ 1/2, 1]

q General number field sieve : Ln[ 1/3, 1.923]il più veloceil più veloce

Crittografia a Chiave Pubblica 80

Quadratic sieve in pratica

qQuadratic sieve è migliore dell’algoritmo basato su curve ellittiche

q Implementazioni del Quadratic sieve

anno numero digit mips per anno1984 71 0.011988 106 1401993 120 8251994 129 5000

RSARSA--1291291600 computer

per 8 mesifactoring by e-mail

1 1 mips mips per anno per anno ≈≈ 3 ·103 ·101313 istruzioni istruzioni

= 425 bit= 425 bitCrittografia a Chiave Pubblica 81

General Number field sieve in praticaq General Number field sieve è migliore del Quadratic

sieve solo per interi di almeno 110-120 cifre decimaliq RSA-130, fattorizzato nel 1996 con 500 mips per

anno q RSA-140, fattorizzato il 2 febbraio 1999, elapsed

time 9 settimaneq RSA-155, fattorizzato il 22 agosto 1999, con 8000

mips per anno, elapsed time 7,4 mesi

512 bit!512 bit!160 175-400 MHz SGI and Sun workstations

8 250 MHz SGI Origin 2000 processors120 300-450 MHz Pentium II PCs

4 500 MHz Digital/Compaq boxes

160 175-400 MHz SGI and Sun workstations8 250 MHz SGI Origin 2000 processors

120 300-450 MHz Pentium II PCs4 500 MHz Digital/Compaq boxes

Crittografia a Chiave Pubblica 82

I numeri più difficili da fattorizzare sono del

tipo n = pq con p,q primi della stessa lunghezza

I numeri più difficili da fattorizzare sono del

tipo n = pq con p,q primi della stessa lunghezza

Calcolo di fattori “piccoli”

Algoritmi per calcolare un fattore p di n:q Algoritmo Rho di Pollard : tempo medio O(√p)

q Algoritmo basato su curve ellittiche: tempo medio

Lp[1/2, √2] = O(e(√2+o(1))(ln q)1/2(lnln q)1/2)

Crittografia a Chiave Pubblica 83

Una strategia generale per fattorizzare

Cerca fattori “piccoli”q Prova divisione per alcuni piccoli primi (2,3,5,7,…) q Prova algoritmo Rho di Pollardq Prova algoritmo basato su curve ellittiche

Cerca fattori “grandi”q Prova Quadratic sieve oppure

General Number field sieve

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •15

Crittografia a Chiave Pubblica 84

Che modulo scegliere?

qAd oggi, i numeri più difficili da fattorizzare sono del tipo n = p ·q con p,q primi della stessa lunghezzaq… 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 85

Intrattabilità della fattorizzazione

La sicurezza di molte tecniche crittografiche si basa sulla intrattabilità della fattorizzazione:

q crittosistema RSA, Rabinq firme digitali RSA q…

Crittografia a Chiave Pubblica 86

Sicurezza di RSA

1. Fattorizza n2. Computa (p-1)(q-1)3. Computa d ← e-1 mod (p-1)(q-1)

1.1. Fattorizza n2.2. Computa (p-1)(q-1)3.3. Computa d ← e-1 mod (p-1)(q-1)

Se potesse fattorizzare…

Crittografia a Chiave Pubblica 87

Sicurezza di RSA

Se potesse computare ϕ(n)=(p-1)(q-1)

potrebbe calcolare d ← e-1 mod (p-1)(q-1)

Crittografia a Chiave Pubblica 88

Se potesse computare ϕ(n)=(p-1)(q-1),

potrebbe calcolare d ← e-1 mod (p-1)(q-1)

n = pq ϕ(n) = (p-1)(q-1)

Due soluzioni: p,q

Sicurezza di RSA

sostituendo p = n/qp2- (n-ϕ(n)+1)p + n = 0

sostituendo p = n/qp2- (n-ϕ(n)+1)p + n = 0

Crittografia a Chiave Pubblica 89

84.773.093 = pq84.754.668 = (p-1)(q-1)

radici: 9539 e 8887

Se potesse computare ϕ(n) = (p-1)(q-1),

potrebbe calcolare d ← e-1 mod (p-1)(q-1)

n = pq ϕ(n) = (p-1)(q-1)

Sicurezza di RSA

sostituendo p = n/qp2- (n-ϕ(n)+1)p + n = 0

sostituendo p = n/qp2- (n-ϕ(n)+1)p + n = 0

p2- 18.426 p + 84.773.093 = 0p2- 18.426 p + 84.773.093 = 0

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •16

Crittografia a Chiave Pubblica 90

Sicurezza di RSA

Se potesse computare d …

Crittografia a Chiave Pubblica 91

Sicurezza di RSA

Se potesse computare d … ma questo è

computazionalmente equivalente a fattorizzare!

Crittografia a Chiave Pubblica 92

Un algoritmo che computa d (con input n,e)

può essere usato come oracolo in un algoritmo

Las Vegas che fattorizza n con probabilità ≥1/2

Un algoritmo che computa d (con input n,e)

può essere usato come oracolo in un algoritmo

Las Vegas che fattorizza n con probabilità ≥1/2

Sicurezza di RSA

Se potesse computare d … ma questo è

computazionalmente equivalente a fattorizzare!

Crittografia a Chiave Pubblica 93

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

C ← Me mod n

Esempio: 125 ← 53 mod 6.012.707

Crittografia a Chiave Pubblica 94

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

C ← Me mod n

Esempio: 125 ← 53 mod 6.012.707

q Se M < n1/e allora– uso di Digital Envelope– salting del messaggio M

Crittografia a Chiave Pubblica 95

Proprietà moltiplicativa di RSA

Proprietà di omomorfismoC1 = M1

e mod n (M1M2)e = M1e M2

e = C1C2 mod nC2 = M2

e mod n

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •17

Crittografia a Chiave Pubblica 96

Decifrazione(d,n)

DecifrazioneDecifrazione(d,n)(d,n)

Proprietà moltiplicativa di RSA

Chosen-ciphertext attack adattivoObiettivo: decifrare C (= Me mod n)

C' ← C ·xe mod n

M' ← (C')d mod n

M ← M' ·x-1 mod n

Scelgo x a caso

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

C1 = M1e mod n (M1M2)e = M1

e M2e = C1C2 mod n

C2 = M2e mod n

Crittografia a Chiave Pubblica 97

Attacchi ad RSA

qPiccolo esponente pubblico (ad es., e = 3)– Stesso messaggio inviato a più utenti

qAttacchi ad implementazioni:– Timing Attack– Random Faults– Attacco di Bleichenbacher [1998 ] su PKCS 1 (vecchia

versione): uso del Web browser come oracolo!

02 Random 00 M02 02 Random Random 00 M00 M

16 bit16 bit

Crittografia a Chiave Pubblica 98

Informazioni parziali per RSA

Dato C– potrebbero esserci informazioni parziali

sul messaggio M “facili” da ottenere (senza dover decifrare C ! )

– e … “difficili” ?

hard bit : ultimi c ·loglog n bit

C = Me mod nC = Me mod n

Crittografia a Chiave Pubblica 99

Un bit “facile” per RSA

E’ facile calcolare il simbolo di Jacobi del testo in chiaro

(C|n) = (Me|n) = (M|n)e = (M|n)

C = Me mod nC = Me mod n

Crittografia a Chiave Pubblica 100

Un bit “difficile” per RSA

0 se M < n/2halfn,e(C) =

1 se M > n/2

Crittografia a Chiave Pubblica 101

Un bit “difficile” per RSA

0 se M < n/2halfn,e(C) =

1 se M > n/2

Calcolare halfn,e( ·) è computazionalmente equivalente ad invertire RSA

Calcolahalfn,e(·)CalcolaCalcolahalfn,e(·)

halfn,e(C)CDecifran,eDecifraDecifrann,e,e MC

Calcolahalfn,e( ·)CalcolaCalcolahalfn,e( ·)

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •18

Crittografia a Chiave Pubblica 102

Un bit “difficile” per RSA

0 se M < n/2halfn,e(C) =

1 se M > n/2

00 n/2n/2 nn

halfn,e(C) = 00 11

M∈

Crittografia a Chiave Pubblica 103

Un bit “difficile” per RSA

0 se M < n/2halfn,e(C) =

1 se M > n/2

C ← C ·(2e mod n) C´= (2 ·M)e mod n

00 n/4n/4 n/2n/2 3n/43n/4 nn

halfn,e(C´) = 00 00 1111

M∈

Crittografia a Chiave Pubblica 104

Un bit “difficile” per RSA

0 se M < n/2halfn,e(C) =

1 se M > n/2

C´´← C ·(4e mod n) C´´= (4 ·M)e mod n

00 n/4n/4 n/2n/2 3n/43n/4 nn

halfn,e(C´´) = 00 00 1111

M∈ n/8n/8 3n/83n/8 5n/85n/8 7n/87n/8

00 00 1111

Crittografia a Chiave Pubblica 105

Un bit “difficile” per RSA

q Ricerca binaria

q Dopo log n chiamate ad halfn,e( ·)l’intervallo consta di un solo valore

Crittografia a Chiave Pubblica 106

Predicato paritàparitàn,e(C) = bit meno significativo di MI predicati paritàn,e( ·) e halfn,e( ·)sono computazionalmente equivalenti

halfn,e(Me mod n) = paritàn,e((2M)e mod n)

C = Me mod nC = Me mod n

halfn,e(C) = paritàn,e( C (2e mod n) mod n )

paritàn,e(C) = halfn,e( C ((2-1)e mod n) mod n )

halfn,e(C) = paritàn,e( C (2e mod n) mod n )

paritàn,e(C) = halfn,e( C ((2-1)e mod n) mod n ) Crittografia a Chiave Pubblica 107

Crittografia probabilistica

Testo in chiaro M = M1 M2 M3 … Testo cifrato C = C1 C2 C3 …

Mi = predicato_difficile (Ci)

•Alfredo De Santis •04/04/2002

•Corso di Sicurezza su Reti •19

Crittografia a Chiave Pubblica 108

Alcuni Crittosistemi a chiave pubblica

q RSA [1977] (fattorizzazione)q Merkle-Hellman [1978] (zaino 0-1)

– Molte varianti… rotte! Resiste Chor-Rivest [1988]q Rabin [1979] (fattorizzazione)q McEliece [1978] (decodifica codici lineari) q El-Gamal [1984] (logaritmo discreto)q Uso di curve ellittiche [1985]

curve iperellittiche [1989]automi cellulari [1985]

rotto!rotto!

Crittografia a Chiave Pubblica 109

Funzioni one-way

“Facili” da calcolare e

“difficili” da invertire

Crittografia a Chiave Pubblica 110

Funzioni one-way trapdoor

“Facili” da calcolare e

“difficili” da invertire

… a meno che si conoscauna “trapdoor”

Crittografia a Chiave Pubblica 111

Alcuni brevetti software (USA)

numero oggetto inventore scadenza3.962.539 DES Ehrsam ed al. 19934.200.770 Diffie-Hellman Hellman, Diffie, Merkle 19974.218.582 Critt. chiave pubblica Helman, Merkle 19974.424.414 Pohling-Hellman Hellman, Pohling 3 gen 20014.405.829 RSA Rivest, Shamir, Adleman 20 sett 20004.748.668 Shamir-Fiat Shamir, Fiat 20054.850.017 Vettori di controllo Matyas, Meyer, Bracht 20065.140.634 Guillou-Quisquater Guillou-Quisquater 20095.231.668 DSA Kravitz 20105.214.703 IDEA Massey-Lai 20105.276.737 Fair Cryptosystems Micali 2011

Crittografia a Chiave Pubblica 112

Export dagli USAInternational Traffic in Arms Regulations (ITAR) [1989]q United States Munitions Listq Strong encryption

– RSA ≥ 512 bit– cifrari a blocco (DES, IDEA, RC6,…) ≥40 bit

q eccetto se limitato a – controllo accessi (ad es., ATM)– autenticazione dati (ad es., MAC, firme)

q Permesso dal Department of Commerce, ad es. Cybercash, cifratura RSA 768 bit per transazioni finanziarie

non deve essere facilmente non deve essere facilmente utilizzabile per cifrare!utilizzabile per cifrare!