Crittografia a Chiave Pubblica 0 Crittosistema a chiave pubblica file pubblico utente chiave pubblica A kpub … … chiave privata kpriv nnarella Crittografia a Chiave Pubblica 1 Cifratura iagio utente chiave pubblica A kpub … … Devo cifrare il messaggio M ed inviarlo ad A file pubblico Crittografia a Chiave Pubblica 2 Cifratura utente chiave pubblica A kpub … … Cifratura di M per A C ← CIFRA (kpub, M) C file pubblico iagio Crittografia a Chiave Pubblica 3 Decifratura nnarella utente chiave pubblica A kpub … … Devo decifrare il messaggio cifrato C C ?? C? file pubblico Crittografia a Chiave Pubblica 4 Decifratura utente chiave pubblica A kpub … … C Decifratura di C M ← DECIFRA (kpriv, C) 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
20
Embed
Teoria dei Numeri - INTRANET - Dipartimento di Informaticaads/corso-security/www/CORSO-0304/public-key... · Teoria dei Numeri Crittosistemi a chiave pubblica più comuni basati sulla
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
•Alfredo De Santis •06/04/2004
•Corso di Sicurezza su Reti •1
Crittografia a Chiave Pubblica 0
Crittosistema a chiave pubblica
file pubblicoutente chiave pubblica
A kpub… …
chiave privatakpriv
nnarellaCrittografia a Chiave Pubblica 1
Cifratura
iagio
utente chiave pubblicaA kpub
… …
Devo cifrare il messaggio Med inviarlo ad A
file pubblico
Crittografia a Chiave Pubblica 2
Cifratura
utente chiave pubblicaA kpub… …
Cifratura di M per AC ← CIFRA (kpub, M)
Cfile pubblico
iagioCrittografia a Chiave Pubblica 3
Decifratura
nnarella
utente chiave pubblicaA kpub… …
Devo decifrare il messaggio cifrato C
C??
C?
file pubblico
Crittografia a Chiave Pubblica 4
Decifratura
utente chiave pubblicaA kpub… …
C
Decifratura di CM ← DECIFRA (kpriv, C)
chiave 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 bejustified in rejoicing that there is one science at anyrate, and that their own, whose very remotenessfrom ordinary human activities keep it gentle and clean.”G. H. Hardy, A Mathematician’s Apology, 1940
•Alfredo De Santis •06/04/2004
•Corso di Sicurezza su Reti •2
Crittografia a Chiave Pubblica 6
RSA
Shamir Rivest Adleman
Sicurezza basata sulla difficoltà di fattorizzare
1978
Crittografia a Chiave Pubblica 7
RSA nel 2003
Crittografia a Chiave Pubblica 8
Chiavi RSA
file pubblicoutente chiave pubblica
A (n,e) … …
chiave 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)
… …
Devo cifrare il messaggio M
ed inviarlo ad A
file pubblico
iagio
Crittografia a Chiave Pubblica 10
Cifratura RSA
utente chiave pubblicaA (n,e) … …
Cifratura di M per AC ← Me mod n
C
iagio
file pubblico
Crittografia a Chiave Pubblica 11
Decifratura RSA
utente chiave pubblicaA (n,e)
… …
Devo decifrare il messaggio cifrato C
C??
C?
file pubblico
nnarella
•Alfredo De Santis •06/04/2004
•Corso di Sicurezza su Reti •3
Crittografia a Chiave Pubblica 12
Decifratura RSA
utente chiave pubblicaA (n,e) … …
CDecifratura di C
M ← Cd mod n
chiave privata(n,d)
nnarella
file pubblico
Crittografia a Chiave Pubblica 13
“Piccolo” esempio: Chiavi RSA
utente chiave pubblica A (n = 3337, e = 79) … …
chiave 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)
… … 1570
Cifratura di M = 688 per A1570 ← 68879 mod 3337
file pubblico
iagioCrittografia a Chiave Pubblica 15
Esempio: Decifratura RSA
utente chiave pubblica A (n = 3337, e = 79) … …
1570
Decifratura di C = 1570688 ← 15701019 mod 3337
chiave 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) … …
chiave 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)
… … 15
Cifratura di M = 5 per A15 ← 53 mod 55
file pubblico
iagio
•Alfredo De Santis •06/04/2004
•Corso di Sicurezza su Reti •4
Crittografia a Chiave Pubblica 18
Esempio: Decifratura RSA
utente chiave pubblica A (n = 55, e = 3) … …
15
Decifratura di C = 155 ← 1527 mod 55
chiave privata(n=55, d=27)
nnarella
file pubblico
Crittografia a Chiave Pubblica 19
Esempio: Cifratura RSA
utente chiave pubblica A (n = 55, e = 3)
… … 47
Cifratura di M = 5718 per A47 ← 57183 mod 55
file pubblico
iagio
Crittografia a Chiave Pubblica 20
Esempio: Decifratura RSA
utente chiave pubblica A (n = 55, e = 3) … …
47
Decifratura di C = 4753 ← 4727 mod 55
chiave privata(n=55, d=27)
nnarella
file pubblico
Crittografia a Chiave Pubblica 21
Esempio: Decifratura RSA
utente chiave pubblica A (n = 55, e = 3) … …
47
Decifratura di C = 4753 ← 4727 mod 55
chiave privata(n=55, d=27)
nnarella
file pubblico
53≠5718
Crittografia a Chiave Pubblica 22
Esempio: Decifratura RSA
utente chiave pubblica A (n = 55, e = 3) … …
47
Decifratura di C = 4753 ← 4727 mod 55
chiave privata(n=55, d=27)
nnarella
file pubblico
5718≡53 mod 55
Crittografia a Chiave Pubblica 23
Esempio corretto
utente chiave pubblica A (n = 55, e = 3)
… …
15,13,2
Cifratura di 00101001111001015 ← 53 mod 55
13 ← 73 mod 552 ← 183 mod 55
file pubblico
iagio
011110110100010
55=1101112
•Alfredo De Santis •06/04/2004
•Corso di Sicurezza su Reti •5
Crittografia a Chiave Pubblica 24
Esempio corretto
utente chiave pubblica A (n = 55, e = 3)
… …
15,13,2
Cifratura di M = 5718 per A15 ← 53 mod 55
13 ← 73 mod 552 ← 183 mod 55
file pubblico
iagio
011110110100010
Crittografia a Chiave Pubblica 25
Esempio: Decifratura RSA
utente chiave pubblica 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)
nnarella
file pubblico
Crittografia a Chiave Pubblica 26
Esercizio
Svolgere 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… …
Cifratura di M per A k ← genera chiave sessioneC1 ← CIFRA (kpub, k) C2 ← E (k, M)
C1,C2
file pubblico
Crittografia a Chiave Pubblica 29
Digital Envelope: Decifratura
utente chiave pubblicaA kpub… …
chiave privatakpriv
Decifratura di C1,C2k ← DECIFRA (kpriv, C1)M ← D (k, C2)
C1,C2
file pubblico
nnarella
•Alfredo De Santis •06/04/2004
•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
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
−
−⋅
−⋅
k21 p1
1p1
1p1
1n L
qTeorema di Eulerox ∈ Zn* ⇒ xφ(n) = 1 mod n
Leonhard Euler
1707-1783Crittografia a Chiave Pubblica 33
Efficienza delle computazioni
Come effettuare le computazioni?
– Elevazione a potenza modulare
generazione di e – Generazione e,d
d ← 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
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
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)
Crittografia a Chiave Pubblica 52
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)
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 modulare
generazione di e – Generazione e,d
d ← e-1 mod (p-1)(q-1)– Generazione numeri primi
•Alfredo De Santis •06/04/2004
•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.
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.
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.
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.
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.
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
xlnx
1.25506(x)xln
x 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 … … … 1
510 bit scelti a caso
•Alfredo De Santis •06/04/2004
•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 … … … 1
1022 bit scelti a caso Crittografia a Chiave Pubblica 67
Test di primalità
qAdleman, Pomerance e Rumely [1983]
– Complessità (lg p)O(lg lg lg p)
qAgrawal, Kayal, Saxena [Agosto 2002]
– Complessità del caso peggiore
(lg p)12 poly((lglg 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àp primo
composto
Certamente!
Probabilmente!
Scelgo 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 •06/04/2004
•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 ≥ 0q 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