RSA e questioni relative Rossella Ascione Il crittosistema RSA •Introduzione al crittosistema RSA •Firme digitali e RSA •Attacchi a RSA Il crittosistema RSA 1978 :Ron Rivest, Adi Shamir Leonard Adleman Crittosistema a Chiave Pubblica realizza un’intuizione rivoluzionaria di Diffie, Hellmann e Merkle che nel 1976 tentarono di inventare una tecnica di cifratura che non fosse a chiave simmetrica crittosistema a chiave pubblica ciascun utente sceglie una funzione crittografica Def: Una biezione f:AB viene detta che dipende da alcuni parametri, ma rende noti funzione unidirezionale se il calcolo di aєA solo quelli che permettono di codificare i è realizzabile con una complessità polinomiale messaggi a lui diretti, mantenendo segreti quelli -1 per tutti gli a єA , mentre il calcolo di f (b) non necessari alla decodifica lo è per quasi tutti i bєB l’inversione della funzione di cifratura fk e computazionalmente difficile per tutti, mittente compreso, ma non per il destinatario che possiede l’informazione necessaria (chiave di decifratura) per il calcolo efficiente di fk−1 . analogia della ”scatola a due lucchetti” Supponiamo che A desideri mandare un messaggio segreto a B. Allora: 1) A chiude il messaggio in una scatola con un lucchetto LA, di cui solo A ha la chiave, e invia la scatola a B. 2) Ricevuta la scatola, l’utente B aggiunge un lucchetto LB, di cui è il solo a possedere la chiave, e rinvia il tutto ad A. 3) Ricevuta la scatola chiusa con i due lucchetti LA e LB, l’utente A libera la scatola dal proprio lucchetto LA e la rinvia a B. 4) Ricevuta la scatola, l’utente B libera la scatola dal proprio lucchetto LB e legge il messaggio di A. Dalla precedente analogia della ”scatola con lucchetti”… Diffie, Hellmann e Merkle osservarono ”semplicemente” che un lucchetto si può chiudere senza usare alcuna chiave(!): 1) l’utente A progetta e costruisce un lucchetto e una chiave unica per aprirlo 2) A rende disponibili al pubblico copie del lucchetto, ma conserva la chiave; 3) un qualunque altro utente B che desidera potrà procurarsi una copia di tale lucchetto in un punto di distribuzione; 4) se B desidera inviare un messaggio ad A, allora chiude tale messaggio in una scatola chiusa con il lucchetto di A e la spedisce ad A. Idea base di RSA A sceglie due primi p, q distinti e sufficientemente grandi Calcola n= pq Calcola φ(n)=(p-1)(q-1)=n-p-q+1 Sceglie un numero casuale e di N coprimo con φ(n) Calcola d di Z*n l’inverso di e modulo φ(n) Rende nota la coppia (n, e) come sua chiave pubblica Tiene segreti la coppia (φ(n), d) come chiave privata Se B volesse mandare un messaggio ad A… Se un utente B desidera Ricevuto il messaggio mandare un messaggio l’utente A utilizza la segreto ad A deve calcolare funzione di decifratura solo La sicurezza del l’equivalente numerico x di a sistema lui nota: tale messaggio modulo n e 1 d dipende f A (x) y mod n utilizzare la funzione dalla n crittografica di difficoltà A che puòdi scomporre Cioè eleva il messaggio esere calcolatanei da suoi tutti gli fattoriricevuto primi a d modulo n.. utenti del sistema: Infatti poichè f A ( x) x mod n e Cioè eleva x ad e modulo n e lo invia ad A ed 1(mod (n )) Si ottiene x e d x ed x (mod n ) È possibile svelare φ(n)? Prop: Sia n=pq con p Dim: Se n è pari allora p=2 e e q primi. Allora q=n/2 e φ(n)=n/2-1 1. Noti p, q e n, Se n è dispari il calcolo di Per mantenere un corretto φ(n)=(p-1)(q-1)=n+1-(p+q) φ(n) ha complessità funzionamento del crittosistema, computazonale ogni utente deve tenere segreto, P+q=n+1-φ(n) . Quindi di p e q O(logn) conosciamo somma e prodotto parametri p, quindi q e pde qche ha sono soluzioni 2. oltre Noti nai e φ(n) il dell’eq:X2 –(p+q)x+n=0 calcolo di p e q scelto, anche φ(n) ha complessita Per ricavare p e q abbiamo quindi bisogno dell’estrazione della computazionale radice quadrata intera che ha O(log3n) complessita computazionale pari a O(log3n) Se conosco n, e e d La conoscenza di n, e e d consente di fattorizzare comunque efficientemente n mediante un determinato algoritmo probabilistico che basato sulla scelta casuale di un a Concludendo ogni utente deve Si dimostra che iterando u volte la scelta casuale Assolutamente tenere di a si ottiene un algoritmo Segreto di d fattorizzazione che termina con successo con probabilità maggiore o uguale di 1 2 u e complessità computazionale O(u log 3 n ) Estensione al caso (x,n)>1 Teorema: Sia nєN prodotto di primi distinti. Se m≡1 modφ(n) allora am ≡a mod n per ogni a єZ Si dimostra però Se che(n, la probabilità di x)≠1 trovare un tale x risulta molto bassa e che la complessità computazionale di osservare In particolare si può (n,x) potrebbe fornire un fattore non (n,x)=n tale attacco è maggiore di che un quello utente Bdegli potrebbe di banale di n consentendo determinare violare algoritmi di fattorizzazione dicompletamente n i fattori di n il generando casualmente un crittosistema numero sufficientemente grande di elementi x e verificando di volta in volta se (n, x) ≠1 Una versione leggermente diversa di RSA… ( n ) Funzione di Eulero (n ) Funzione di Carmichael A sceglie (se ci riesce) due primi p, q distinti e sufficientemente Vantaggiograndi) di tale metodo: Calcola n= pq Calcola φ(n)=(p-1)(q-1)=n-p-q+1 •Calcola λ(n)=φ(n)/(p-1,q-1) L’operazione di decifratura risulta •Sceglie un numero casuale e Sceglie un numero casuale e di N di N coprimo con λ(n) coprimo con φ(n)essere più veloce •Calcola d di Z*n l’inverso di e Calcola d di Z*n l’inverso e che nel dicaso standard modulo λ(n) modulo φ(n) Rende nota la coppia (n, e) come sua chiave pubblica Tiene segreti p, q e d cioè la coppia (φ(n), d) come chiave privata Il sistema appena presentato si è rivelato essere adatto a soddisfare tutti i requisiti minimi di base (riservatezza, integrità, autenticità, non-ripudiabilità) richiesti ad un buon sistema crittografico dal punto di vista pratico. Ciò grazie alla disponibilità di algoritmi ragionevolmente efficienti, affidabili e rapidi per: •generare le chiavi, private e non, degli utenti •per testare i parametri soddisfacenti particolari proprietà •per calcolare i valori della funzione crittografica •per testare il carattere unidirezionale della funzione crittografica Firma digitale e RSA Problema di certificare la nostra identità con una firma digitale CRITTOGRAFIA A CHIAVE PUBBLICA Schema generale di firma digitale A, B utenti di un sistema a chiave pubblica fA e fB funzioni di cifratura (pubbliche) fA-1 e fB-1 funzioni di decifratura (segrete) A desidera mandare un messaggio x a B •A manda fB(x) •Per certificare la propria identità invia la quantità fB(fA-1(sA)) con fA-1(sA) firma digitale di A e sA un nome convenzionale di A in cui si include un numero progressivo , tempo in cui è stato spedito il messaggio, numero IP della machina speditrice B decifra il messaggio x… •Utilizzando fB-1 e ottiene x •Per controllare che il mittente sia A applica alla funzione fB(fA-1(sA)) la funzione a lui nota fAfB-1 e ottiene sA Il sistema funziona bene poiché solo A può aver firmato il messaggio poiché solo A conosce fA-1 Rischi di tale sistema 1. Potrebbe esistere un utente intruso C che renda pubblica una chiave attribuendola ad A, divenendo automaticamente capace di spacciarsi per A Introduzione di un ENTE CERTIFICATORE Rischi di tale sistema 1. Potrebbe capitare che un intruso riesca ad identificare fA-1(sA) utilizzando un numero opportuno di messaggi intercettati Far dipendere la Firma digitale Dal messaggio stesso La firma digitale diviene fA-1(h(M)) h(M) IMPRONTA DI M è una sequenza di bit di lunghezza fissata detta IMPRONTA DI M che viene ottenuta da M mediante una opportuna funzione di hash h Sono funzioniviene che hanno Tale funzione messalaa caratteristica nonutenti consentire di disposizione di degli dall’ente risalire a M conoscendo solo certificatore, ne viene utilizzata h(M),e di avere unaglibuona una sola per tutti utenti del probabilità di non generare crittosistema collisioni Come funziona… Per accertarsi dell’assenza di manomissioni B dovrà Applicare a fA-1(h(M)) la fA e otterrà h(M) Ricalcolare l’impronta di M h(M) per mezzo della funzione di hash Firma digitale: certificazione dell’identità con RSA Problema: gli spazi dei messaggi cifrati sono a priori diversi poiché A lavora su ZnA e B lavora su ZnB in generale diversi. A sceglie una firma digitale sAє ZnA che rende pubblica Per convincere B della propria identità , in calce al proprio messaggio A invia una forma crittografica della firma, e precisamente mA=fB(fA-1(sA)) se nA<nB; mA=fA-1(fB(sA)) se nA>nB Per assicurarsi dell’identità di A, B calcola fA(fB-1 (mA)) se nA<nB; fB-1 (fA(mA)) se nA>nB Attacchi a RSA Chosen-ciphertext: Un intruso C vuole determinare il testo in chiaro M di una codifica C inviata ad A C Sceglie un intero casuale R e chiede ad A la decodifica del messaggio C1≡ReAC mod nA In questo modo C ottiene ReAdACdA mod nA alla quale applicando R-1 si ottiene M mai applicare la propria funzione di decifratura o la propria firma digitale ad un documento casuale Attacchi elementari: scelta dei possibili messaggi in chiaro troppo limitati •Scelta del modulo di n fissata per tutti gli utenti Si provano a codificare tutti i messaggi in chiaro fino a che non viene determinato quello la cui codifica è uguale al messaggio intercettato Poiché (e1, e2)=1 con 1. Se sa che si B calcola ha il suo stesso l’algoritmo di Aeuclide n, allora conosce p, q, φ(n) e r,sєZ tali che re1+se 2=1 e poi calcolare d di B Cr1 Cs2≡Mre1+se2=M mod n 2. Un intruso può ricavare da due codifiche C1 e C2 ricavate dueutilizzata chiavi pubbliche ) e (n, ogni n nonmediante deve essere da piu’ di(n,une1utente e2) con (e1,e2)=1, il messaggio M stesso Punti fissi: I messaggi da trasmettere non devono essere dei punti fissi della funzione di cifratura, cioè non deve accadere f(M)≡M mod n Messaggio cifrato = Messaggio in chiaro Per non avere molti punti fissi si dimostra che e deve essere scelto in modo tale che (e-1, p-1, q-1) sia piccolo Cycling attack: Funzione di cifratura con periodo troppo corto Il più piccolo k tale che: M M mod n ek Sia “piccolo” Teorema: Sia (n,e) una chiave pubblica RSA e MєZ*n. Sia r il più grande divisore primo di p-1 e l sia il più grande divisore primo di r-1. Allora P(k≥l) ≥(1-l/r)(1-1/l) Per diminuire la possibilità di cycling attack bisogna scegliere p e q in modo tale che sia r che l siano grandi Attacco causato da una chiave privata troppo piccola: d n 1 4 Teorema(Wiener): Sia p<q<2p, n=pq, 6 . Dati n ed e tali che ed≡1modφ(n),esiste un algoritmo deterministico polinomiale in logn che consente di determinare d Due metodi per non intercorrere in questo tipo di attacco 1. Scegliere e>n3/2 con un conseguente aumento del tempo di cifratura 2. Usare il teorema cinese del resto per ottenere una decifratura “veloce” senza dover scegliere d piccolo Attacco a partire da una conoscenza parziale della chiave privata(e “piccolo”) Teorema (Boneh, Durfee e Frankel): Sia n≡3mod4, n1/2/2<q<p<2n1/2 e sia d una chiave privata di RSA. Siano note le [log2n]/4 cifre meno significative di d. Sia inoltre e<2[log2n]/4-3. Allora esiste un algoritmo che determina completamente d con complessita polinomiale in logn I seguenti risultati affermano che è possibile ricostruire completamente d nel caso in cui e sia piccolo, a partire da una conoscenza di una frazione dei bit costituenti l’espansione binaria di d.