Crittografia a chiave pubblica - Dipartimento di Informatica

• Elementi di Crittografia
• 16-05-2016
Crittografia a
chiave pubblica
Barbara Masucci
Dipartimento di Informatica
Università di Salerno
[email protected]
http://www.di.unisa.it/professori/masucci
Costruzioni
Vedremo alcune costruzioni basate
sul problema RSA
§  Plain RSA (non CPA-sicuro)
§  Padded-RSA e PKCS#1 v.5 (non CPA-sicuro)
§  Cifratura di bit singoli mediante predicati
hard-core per il problema RSA (CPA-sicura)
§  RSA-OAEP e PKCS#1 v.2.0 (CCA-sicuro)
Barbara Masucci - DI – Università di Salerno
1
Costruzioni
Vedremo alcune costruzioni basate
sul problema RSA
§  Plain RSA (non CPA-sicuro)
Barbara Masucci - DI – Università di Salerno
2
• 1
• Elementi di Crittografia
• 16-05-2016
Plain RSA
Proposto nel 1978 da
Rivest
Shamir
Adleman
3
Barbara Masucci - DI – Università di Salerno
Plain RSA: Chiavi
file pubblico
chiave privata
(N,d)
utente chiave pubblica
Alice
(N,e)
…
…
N = pq
p,q primi
gcd(e, (p-1)(q-1))=1
ed = 1 mod (p-1)(q-1)
Alice
4
Barbara Masucci - DI – Università di Salerno
Plain RSA: Cifratura
chiave privata
(N,d)
file pubblico
utente chiave pubblica
Alice
…
Alice
canale
(N,e)
…
insicu
ro
Devo cifrare il messaggio m ∈ ZN*
ed inviarlo ad Alice
Barbara Masucci - DI – Università di Salerno
Bob
5
• 2
• Elementi di Crittografia
• 16-05-2016
Plain RSA: Cifratura
chiave privata
(N,d)
file pubblico
utente chiave pubblica
Alice
(N,e)
…
canale
Alice
…
c
insicu
ro
Cifratura di m per Alice
Bob
c ← me mod N
6
Barbara Masucci - DI – Università di Salerno
Plain RSA: Decifratura
file pubblico
Devo decifrare il
messaggio cifrato c
Alice
utente chiave pubblica
Alice
(N,e)
…
…
c
??
c?
7
Barbara Masucci - DI – Università di Salerno
Plain RSA: Decifratura
chiave privata
(N,d)
file pubblico
utente chiave pubblica
Alice
(N,e)
…
Decifratura di c
m ← c d mod N
Alice
Barbara Masucci - DI – Università di Salerno
…
c
8
• 3
• Elementi di Crittografia
• 16-05-2016
Plain RSA
Correttezza decifratura
cd mod N = (me)d mod N
ed = 1 mod (p-1)(q-1)
= med mod N
= m1+k(p-1)(q-1) mod N
= m·(m(p-1)(q-1))k Teorema di Eulero
*
=1 mod N
= m mod N m∈ZN ⇒ m
=m
(p-1)(q-1)
poichè 0≤m<N
Barbara Masucci - DI – Università di Salerno
9
Plain RSA: Sicurezza
Lo schema Plain RSA è sicuro?
Barbara Masucci - DI – Università di Salerno
10
Plain RSA:
Sicurezza generazione chiavi
Conoscendo la chiave pubblica (N,e)
vuole calcolare la chiave privata
d=e-1 mod (p-1)(q-1)
Barbara Masucci - DI – Università di Salerno
11
• 4
• Elementi di Crittografia
• 16-05-2016
Attacco
Se
potesse fattorizzare N, saprebbe
computare d
1. Fattorizza N
2. Computa ϕ(N)=(p-1)(q-1)
3. Computa d ← e-1 mod (p-1)(q-1)
12
Barbara Masucci - DI – Università di Salerno
Fattorizzazione
§  Dato N, calcolare due primi p, q >1 tali che
N=p·q
§  Per valori grandi di N è un problema ritenuto
computazionalmente difficile
§  Complessità di tempo sub-esponenziale in
media
§  Running time O(2o(k)), dove k è la taglia dell’input
§  f(n)=o(g(n)) se lim
n →∞
§ 
f(n)
=0
g(n)
13
Barbara Masucci - DI – Università di Salerno
Fattorizzazione:
un semplice algoritmo
Calcolo di un fattore primo di N:
Per tutti i primi p in [2,
N]
Se p|N allora p è fattore di N
Complessità caso peggiore Θ( N ) = Θ(21/2 log N)
(esponenziale nella lunghezza dell’input)
Se N ha 512 bit allora
N ≈2
Barbara Masucci - DI – Università di Salerno
256
14
• 5
• Elementi di Crittografia
• 16-05-2016
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
§  Algoritmo basato su curve ellittiche: LN[ 1/2, 1]
§  Quadratic sieve: LN[ 1/2, 1]
§  General number field sieve: LN[ 1/3, 1.923]
il più veloce
Barbara Masucci - DI – Università di Salerno
15
GenModulus(1n)
§  Sia GenModulus un algoritmo ppt che
su input 1n dà in output (N,p,q), dove
§  p, q primi di n bit e N=p·q
§  Generalmente
§  sceglie uniformemente due interi p,q di n
bit
§  testa se sono primi
§  se lo sono, calcola N=p·q e dà in output
(N,p,q)
Barbara Masucci - DI – Università di Salerno
16
Esperimento FactorA,GenModulus(n)
§  (N,p,q)ßGenModulus(1n)
§  Su input N, A dà in output p’, q’
§  L’output dell’esperimento è
§  1 se p’·q’= N
§  0 altrimenti
Nota: se l’output è 1, allora {p’,q’}={p,q}
Barbara Masucci - DI – Università di Salerno
17
• 6
• Elementi di Crittografia
• 16-05-2016
Esperimento FactorA,GenModulus(n)
A ha successo se l’output di
FactorA,GenModulus(n) è 1
Il vantaggio di A è definito come
AdvFactor,GenModulusA(n) = Pr[FactorA,GenModulus(n) = 1]
Barbara Masucci - DI – Università di Salerno
18
Esperimento FactorA,GenModulus(n)
Il problema Factor è difficile
rispetto a GenModulus se:
per ogni avversario A polinomiale esiste una
funzione trascurabile negl tale che
AdvFactorA,GenModulus(n) ≤ negl(n)
Barbara Masucci - DI – Università di Salerno
19
Factoring Assumption
Esiste un algoritmo GenModulus
rispetto a cui il
problema Factor è difficile
Barbara Masucci - DI – Università di Salerno
20
• 7
• Elementi di Crittografia
• 16-05-2016
Fattorizzazione: sfide
§  Nel 1977 gli inventori di RSA
§  Pubblicarono una sfida
§  Rompere RSA con una chiave di 428 bit, premio 100 $
§  Stimarono il tempo richiesto: 40 quadrilioni di anni
§  Nel 1994: task force di Internet ha
reclamato il premio dopo 9 mesi di lavoro
§  RSA Laboratories
§  Altre sfide con chiavi di varia lunghezza
§  Ultima sfida vinta (nel 2009): chiave con 768 bit
21
Barbara Masucci - DI – Università di Salerno
Fattorizzazione: progressi
1 mips per anno
≈ 3 ·1013 istruzioni
RSA-193
5 mesi
RSA-129
1600 computer per 8 mesi
RSA-232
3 anni
Barbara Masucci - DI – Università di Salerno
22
Che modulo scegliere?
§  Ad oggi, i numeri più difficili da fattorizzare
sono del tipo N = p ·q con p, q primi della
stessa lunghezza
§  Il NIST raccomanda l’utilizzo di moduli RSA
di almeno 2048 bit (ritenuti sicuri fino al
2030)
Barbara Masucci - DI – Università di Salerno
23
• 8
• Elementi di Crittografia
• 16-05-2016
Fattorizzazione e
altri problemi
§  Il problema Factor è stato studiato
per centinaia di anni
§  Non è stato trovato un algoritmo
efficiente per risolverlo in generale
§  Nel frattempo sono stati proposti altri
problemi ad esso relati
§  Il più noto di essi è il problema RSA,
proposto nel 1978 da Rivest, Shamir e
Adleman
Barbara Masucci - DI – Università di Salerno
24
Algoritmo GenRSA
Sia GenRSA un algoritmo ppt che su input
1n dà in output (N,e,d), dove
§  N=p·q è il prodotto di due primi di n bit
§  N modulo RSA
§  gcd(e, ϕ(N))=1
§  e esponente pubblico
§  ed=1 mod ϕ(N)
§  d esponente privato
Barbara Masucci - DI – Università di Salerno
25
Problema RSA
Dati (N,e,y)
§  con N=p·q, p,q non noti
§  gcd(e, ϕ(N))=1
§  y ∈ ZN*
computare y1/e mod N
Barbara Masucci - DI – Università di Salerno
26
• 9
• Elementi di Crittografia
• 16-05-2016
Esperimento RSA-invA,GenRSA(n)
§  Sia A un avversario
§  Sia (N,e,d) l’output di GenRSA(1n)
§  Sia y un elemento scelto a caso
uniformemente in ZN*
§  Su input (N,e,y), A dà in output un
elemento x in ZN*
§  L’output dell’esperimento è
§  1 se xe=y mod N
§  0 altrimenti
Barbara Masucci - DI – Università di Salerno
27
Esperimento RSA-invA,GenRSA(n)
A ha successo se l’output di
RSA-invA,GenRSA(n) è 1
Il vantaggio di A è definito come
AdvRSA-invA,GenRSA(n) = Pr[RSA-invA,GenRSA(n) = 1]
Barbara Masucci - DI – Università di Salerno
28
Esperimento RSA-invA,GenRSA(n)
Il problema RSA è difficile
rispetto a GenRSA se:
per ogni avversario A polinomiale esiste una
funzione trascurabile negl tale che
AdvRSA-invA,GenRSA(n) ≤ negl(n)
Barbara Masucci - DI – Università di Salerno
29
• 10
• Elementi di Crittografia
• 16-05-2016
Assunzione RSA
Esiste un algoritmo GenRSA
rispetto a cui
il problema RSA è difficile
Barbara Masucci - DI – Università di Salerno
30
Algoritmo GenRSA:
una costruzione
1. Input 1n
2. (N,p,q)ßGenModulus(1n )
3. Scegli a caso e
4. If gcd ( e, (p-1)(q-1) ) = 1
then d ← e-1 mod (p-1)(q-1)
else goto 3.
Barbara Masucci - DI – Università di Salerno
31
Scelta esponente pubblico
§  Minimizzare operazioni per elevazione a
potenza
§  e ← 3
§  e ← 216+1
§  decimale 65.537
§  binario 10000000000000001
Barbara Masucci - DI – Università di Salerno
32
• 11
• Elementi di Crittografia
• 16-05-2016
Algoritmo GenRSA
comunemente usato
1. Input 1n
2. e ← 3 oppure e ← 216+1 (= 65.537)
3. (N,p,q)ßGenModulus(1n )
4. If gcd ( e, (p-1)(q-1) ) = 1
then d ← e-1 mod (p-1)(q-1)
else goto 3.
Barbara Masucci - DI – Università di Salerno
33
Relazioni
Se il problema RSA è difficile
rispetto a GenRSA,
allora
il problema Factor
è difficile rispetto a GenModulus
Barbara Masucci - DI – Università di Salerno
34
Plain RSA:
Sicurezza cifratura
Conoscendo la chiave pubblica (N,e) e il
messaggio cifrato c ← me mod N
vuole calcolare il messaggio m
Barbara Masucci - DI – Università di Salerno
35
• 12
• Elementi di Crittografia
• 16-05-2016
Plain RSA:
Sicurezza cifratura
Se
potesse fattorizzare N saprebbe
computare m
1. Fattorizza N
2. Computa ϕ(N)=(p-1)(q-1)
3. Computa d ← e-1 mod (p-1)(q-1)
4. Ricava m decifrando c
Barbara Masucci - DI – Università di Salerno
36
Relazioni
§  Problema aperto: l’implicazione inversa non è nota
§  Potrebbero esistere degli algoritmi efficienti per
rompere RSA senza fattorizzare N
§  Sarebbe possibile rompere RSA calcolando d da
(N,e)?
§  Possiamo mostrare che calcolare d su input (N,e) è
tanto difficile quanto fattorizzare
§  L’assunzione RSA è più forte dell’assunzione
Factoring
Barbara Masucci - DI – Università di Salerno
37
Computare d
Se
potesse computare d saprebbe
fattorizzare N
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
Barbara Masucci - DI – Università di Salerno
38
• 13
• Elementi di Crittografia
• 16-05-2016
Algoritmo Las Vegas
per fattorizzare
(N,e) Calcola
d
(N,e)
d
Fattorizza N
Calcola
d
(p,q)
prob 1/2
nessuna
risposta
prob 1/2
Barbara Masucci - DI – Università di Salerno
39
Plain RSA:
Sicurezza generazione chiavi
Fattorizza N à Computa d
Computa d
à Fattorizza N
Computare d è equivalente a fattorizzare N
Barbara Masucci - DI – Università di Salerno
40
Plain RSA è sicuro?
§  Sappiamo che
§ 
§ 
E’ difficile calcolare d da (N,e)
E’ difficile calcolare m (scelto uniformemente
in ZN*) da c=me mod N ed (N,e)
§  Garanzie deboli, lontane dal livello di
sicurezza desiderato!
§ 
§ 
Un attaccante potrebbe calcolare m quando
non è scelto uniformemente in ZN*
Un attaccante potrebbe ottenere
informazioni parziali su m
Barbara Masucci - DI – Università di Salerno
41
• 14
• Elementi di Crittografia
• 16-05-2016
Plain RSA e Sicurezza CPA
§  Plain RSA è deterministico, quindi non
può essere CPA-sicuro
§  Di seguito, vedremo alcuni attacchi a
Plain RSA
§  Ricerca esaustiva in O(2n)
§  Attacco in O(2n/2)
§  Attacco in poly(|N|)
Barbara Masucci - DI – Università di Salerno
42
Attacchi a Plain RSA:
Ricerca esaustiva
§  Dato c=me mod N, con m<B, possibile
risalire a m in tempo O(B)
§  Se B=2n, tempo richiesto O(2n)
§  Nel caso dei cifrari ibridi, il messaggio è
una chiave di n bit, quindi m<2n
§  Esiste un attacco più efficiente che
impiega O(2n/2)
Barbara Masucci - DI – Università di Salerno
43
Attacchi a Plain RSA:
Miglioramento quadratico
§  Input: (N,e,c)
§  Output: m<2n : me=c mod N
§  Algoritmo
§ 
§ 
§ 
§ 
Sia α∈ (1/2,1) una costante
For r=1 to 2αn, xrß c/re mod N
Ordina le coppie (r,xr) sulla seconda componente
For s=1 to 2αn
if xr=se mod N per qualche r
return r·s mod N
Barbara Masucci - DI – Università di Salerno
44
• 15
• Elementi di Crittografia
• 16-05-2016
Attacchi a Plain RSA:
Miglioramento quadratico
§  La complessità è O(n·2αn)
§  Dominata dal tempo necessario per ordinare
le 2αn coppie (r,xr)
§  Perché l’output è m con alta probabilità?
§  Per appropriate scelte di α, se m è un intero
uniforme di n bit, con alta probabilità
esistono r ed s con 1<r≤s≤2αn tali che
m=r·s
§  Quindi c=me =(r·s)e=re·se mod N, da cui
xr=c/re=se mod N, con r,s<2αn
45
Barbara Masucci - DI – Università di Salerno
Attacchi a Plain RSA:
Low Exponent
§  L’attacco visto calcola m<B in tempo O(B1/2)
§  Se B≤N1/e, possibile farlo in tempo poly(|N|)
§  Idea: quando m<N1/e, me mod N=me
§  Dato c=me mod N, possiamo determinare m=c1/e sugli
interi e non mod N!
§  Si può fare in poly(|N|) sugli interi, mentre è difficile
mod N
§  Per e piccoli, l’attacco rappresenta un serio problema
46
Barbara Masucci - DI – Università di Salerno
Attacchi a Plain RSA:
Common message
§  Stesso e per diverse chiavi pubbliche
§  Chiave Alice: (N1,3), chiave Bob: (N2,3), chiave Eva: (N3,3)
§  gcd(Ni,Nj)=1, i≠j
§  Stesso messaggio m inviato ai vari utenti
§  Cifratura per Alice: c1=m3 mod N1
§  Cifratura per Bob: c2=m3 mod N2
§  Cifratura per Eva: c3=m3 mod N3
§  E’ semplice risalire ad m
Usa Teorema cinese del resto per calcolare la soluzione di
x≡c1 mod N1
x≡c2 mod N2
x≡c3 mod N3
Barbara Masucci - DI – Università di Salerno
x=m3 mod N1·N2·N3
poi calcola
m=x1/3
47
• 16
• Elementi di Crittografia
• 16-05-2016
Costruzioni
Vedremo alcune costruzioni basate
sul problema RSA
§  Plain RSA (non CPA-sicuro)
§  Padded-RSA e PKCS#1 v.5 (non CPA-sicuro)
Barbara Masucci - DI – Università di Salerno
48
RSA con padding
§  Come cifrare messaggi in {0,1}* ?
§  Possiamo usare un mapping reversibile
da {0,1}* a ZN* e poi usare Plain RSA
§  Il mapping deve essere randomizzato
§  Se è deterministico, cifratura non CPAsicura!
§  Idea: usare un padding random, di
appropriata lunghezza, prima della
cifratura
Barbara Masucci - DI – Università di Salerno
49
RSA con padding
§  Siano l ≤ 2n-4 e m ∈ {0,1}|N|-l-2
§  Cifratura
§  Scegli r ∈ {0,1}l e ottieni M = r||m (padding)
§  Interpreta M come elemento di ZN* (M<N)
§  C=Me mod N
§  Decifratura
§  M=Cd mod N
§  Output: gli |N|-l-2 bit meno significativi di M
Barbara Masucci - DI – Università di Salerno
50
• 17
• Elementi di Crittografia
• 16-05-2016
RSA con padding
§  La sicurezza dipende da l (lunghezza padding)
§  Ricerca esaustiva: O(2l)
§  Insicuro se l=O(log n)
§  Se l ha lunghezza massima e m è di un solo
bit, CPA-sicuro sotto l’assunzione RSA
§  Per altri valori di l, non sono noti risultati
Barbara Masucci - DI – Università di Salerno
51
RSA PKCS#1 v1.5
§  Standard creato nel 1993 da RSA Laboratories
§  Usa una variante di RSA con padding
§  Siano:
§ 
§ 
§ 
§ 
k: lunghezza in byte del modulo N (28(k-1)≤N<28k)
D: lunghezza in byte di m (D≤k-11)
r: random padding di k-D-3≥8 byte diversi da 00
M=00||02||r||00||m messaggio con padding (k byte)
§ 
Convertito in intero, M è minore di N
Barbara Masucci - DI – Università di Salerno
52
RSA PKCS#1 v1.5:
Sicurezza
§  Non è CPA-sicuro
§  Padding troppo corto
§  Un attaccante può determinare la porzione iniziale
di un messaggio m che termina con molti 0
§  Per evitare l’attacco, padding con lunghezza
almeno |N|/e
§  Se il padding ha lunghezza |N|/2, lo schema
potrebbe essere CPA-sicuro (prova non nota)
§  Essendo però non CCA-sicuro, nuove versioni dello
standard sono state introdotte
Barbara Masucci - DI – Università di Salerno
53
• 18
• Elementi di Crittografia
• 16-05-2016
Bibliografia
§  Introduction to Modern Cryptography
by J. Katz e Y. Lindell (2nd ed.)
§  cap. 11 (11.5: 11.5.1, 11.5.2)
Barbara Masucci - DI – Università di Salerno
54
• 19