• 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