La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

RSA Monica Bianchini Dipartimento di Ingegneria dellInformazione Università di Siena.

Presentazioni simili


Presentazione sul tema: "RSA Monica Bianchini Dipartimento di Ingegneria dellInformazione Università di Siena."— Transcript della presentazione:

1 RSA Monica Bianchini Dipartimento di Ingegneria dellInformazione Università di Siena

2 Introduzione 1 Nella crittografia classica, Alice e Bob scelgono segretamente una chiave k, che viene utilizzata per costruire una funzione di codifica e k ed una funzione di decodifica d k (uguale a e k o direttamente derivabile da essa): crittosistemi di questo tipo sono detti a chiave privata, dato che la conoscenza di e k li rende vulnerabiliNella crittografia classica, Alice e Bob scelgono segretamente una chiave k, che viene utilizzata per costruire una funzione di codifica e k ed una funzione di decodifica d k (uguale a e k o direttamente derivabile da essa): crittosistemi di questo tipo sono detti a chiave privata, dato che la conoscenza di e k li rende vulnerabili Lo svantaggio principale dei metodi a chiave privata è che richiedono la comunicazione della chiave fra Alice e Bob, su un canale sicuro, prima della trasmissione di qualsiasi messaggio cifrato… potrebbe essere molto difficile da realizzare!Lo svantaggio principale dei metodi a chiave privata è che richiedono la comunicazione della chiave fra Alice e Bob, su un canale sicuro, prima della trasmissione di qualsiasi messaggio cifrato… potrebbe essere molto difficile da realizzare! Per esempio, se Alice e Bob vivono lontani e decidono di comunicare via , non avranno accesso a nessun canale ragionevolmente sicuro per lo scambio della chiavePer esempio, se Alice e Bob vivono lontani e decidono di comunicare via , non avranno accesso a nessun canale ragionevolmente sicuro per lo scambio della chiave

3 Introduzione 2 I crittosistemi a chiave pubblica rendono il calcolo di d k, a partire da e k, computazionalmente irrealizzabileI crittosistemi a chiave pubblica rendono il calcolo di d k, a partire da e k, computazionalmente irrealizzabile e k può essere resa pubblica e k può essere resa pubblica Alice potrà inviare il messaggio cifrato a Bob utilizzando e k, ma solo Bob sarà in grado di decifrarlo, poiché sarà lunico a conoscere d kAlice potrà inviare il messaggio cifrato a Bob utilizzando e k, ma solo Bob sarà in grado di decifrarlo, poiché sarà lunico a conoscere d k Lidea dei crittosistemi a chiave pubblica è dovuta a Diffie e Hellman (1976), mentre la prima realizzazione pratica si ha lanno successivo, ad opera di Rivest, Shamir e Adleman, che formularono RSALidea dei crittosistemi a chiave pubblica è dovuta a Diffie e Hellman (1976), mentre la prima realizzazione pratica si ha lanno successivo, ad opera di Rivest, Shamir e Adleman, che formularono RSA Da allora, sono stati formalizzati molti e diversi crittosistemi a chiave pubblica, la cui sicurezza è affidata alla difficoltà di risoluzione di problemi matematici distintiDa allora, sono stati formalizzati molti e diversi crittosistemi a chiave pubblica, la cui sicurezza è affidata alla difficoltà di risoluzione di problemi matematici distinti

4 Introduzione 3 RSA: la sicurezza è basata sulla difficoltà di fattorizzazione di interi grandi RSA: la sicurezza è basata sulla difficoltà di fattorizzazione di interi grandi Merkle-Hellman Knapsack: la sicurezza del sistema, e di altri correlati, è basata sulla NP-completezza del problema della somma di sottoinsiemi; tutti i sistemi di questo tipo si sono, tuttavia, rivelati insicuri, tranne il crittosistema di Chor-Rivest Merkle-Hellman Knapsack: la sicurezza del sistema, e di altri correlati, è basata sulla NP-completezza del problema della somma di sottoinsiemi; tutti i sistemi di questo tipo si sono, tuttavia, rivelati insicuri, tranne il crittosistema di Chor-Rivest McEliece: è basato sulla teoria algebrica dei codici, ed è a tuttoggi ritenuto sicuro; la sicurezza è basata sulla difficoltà del problema di decodificare un codice lineare (che è NP completo) McEliece: è basato sulla teoria algebrica dei codici, ed è a tuttoggi ritenuto sicuro; la sicurezza è basata sulla difficoltà del problema di decodificare un codice lineare (che è NP completo) ElGamal: la sicurezza è basata sulla difficoltà del calcolo del logaritmo discreto in campi finiti ElGamal: la sicurezza è basata sulla difficoltà del calcolo del logaritmo discreto in campi finiti Curve ellittiche: sono crittosistemi che traggono origine da sistemi tipo ElGamal, ma operano sulle curve ellittiche piuttosto che sui campi finiti. Sono i sistemi più sicuri, anche per chiavi piccole Curve ellittiche: sono crittosistemi che traggono origine da sistemi tipo ElGamal, ma operano sulle curve ellittiche piuttosto che sui campi finiti. Sono i sistemi più sicuri, anche per chiavi piccole

5 Una osservazione molto importante è che i sistemi a chiave pubblica non possono garantire la sicurezza incondizionata, poiché una spia, essendo venuta in possesso di un testo cifrato y, può codificare ogni possibile testo in chiaro x, utilizzando e k che è pubblica, fino a trovare lunico x tale che y=e k (x) Una osservazione molto importante è che i sistemi a chiave pubblica non possono garantire la sicurezza incondizionata, poiché una spia, essendo venuta in possesso di un testo cifrato y, può codificare ogni possibile testo in chiaro x, utilizzando e k che è pubblica, fino a trovare lunico x tale che y=e k (x) Per i sistemi a chiave pubblica, è sensato studiare la sicurezza computazionale Per i sistemi a chiave pubblica, è sensato studiare la sicurezza computazionale A questo scopo, può essere concettualmente utile pensare ad un sistema a chiave pubblica, in termini astratti, come ad una funzione unidirezionale A questo scopo, può essere concettualmente utile pensare ad un sistema a chiave pubblica, in termini astratti, come ad una funzione unidirezionale La funzione pubblica di codifica, e k, deve essere semplice da calcolare, ma difficile da invertire, per tutti tranne che per Bob: una funzione siffatta è una funzione one-way (unidirezionale) La funzione pubblica di codifica, e k, deve essere semplice da calcolare, ma difficile da invertire, per tutti tranne che per Bob: una funzione siffatta è una funzione one-way (unidirezionale) e k deve essere una funzione iniettiva one-way e k deve essere una funzione iniettiva one-way Introduzione 4

6 Introduzione 5 Le funzioni unidirezionali giocano un ruolo fondamentale nella crittografia, sia per la costruzione di crittosistemi a chiave pubblica, sia in altri contestiLe funzioni unidirezionali giocano un ruolo fondamentale nella crittografia, sia per la costruzione di crittosistemi a chiave pubblica, sia in altri contesti Sfortunatamente, anche se vi sono varie classi di funzioni che sono ritenute unidirezionali, non esiste per nessuna di esse una prova certaSfortunatamente, anche se vi sono varie classi di funzioni che sono ritenute unidirezionali, non esiste per nessuna di esse una prova certa Sia n il prodotto di due numeri primi grandi, p e q, e sia b un intero positivo. : Z n Z n definita daSia n il prodotto di due numeri primi grandi, p e q, e sia b un intero positivo. : Z n Z n definita da (x) = x b (mod n) (x) = x b (mod n) è ritenuta essere una funzione unidirezionale (e, di fatto, è la funzione di codifica in RSA) è ritenuta essere una funzione unidirezionale (e, di fatto, è la funzione di codifica in RSA) Tuttavia, lessere one-way non è una proprietà sufficiente per, poiché Bob deve essere in grado di decifrare i messaggi in maniera efficienteTuttavia, lessere one-way non è una proprietà sufficiente per, poiché Bob deve essere in grado di decifrare i messaggi in maniera efficiente Bob deve possedere una trapdoor una sorta di canale preferenziale che gli permetta di accedere rapidamente allinformazione codificata, cioè Bob può decifrare facilmente il testo codificato perché possiede informazione aggiuntiva su kBob deve possedere una trapdoor una sorta di canale preferenziale che gli permetta di accedere rapidamente allinformazione codificata, cioè Bob può decifrare facilmente il testo codificato perché possiede informazione aggiuntiva su k e k deve essere iniettiva, trapdoor, one-way e k deve essere iniettiva, trapdoor, one-way

7 Ricordiamo che Z n è un anello, per ogni intero positivo n. Inoltre, ogni b Z n tale che MCD(b,n)=1 ammette un inverso in Z n, con (n) numero degli interi positivi minori di n e primi con nRicordiamo che Z n è un anello, per ogni intero positivo n. Inoltre, ogni b Z n tale che MCD(b,n)=1 ammette un inverso in Z n, con (n) numero degli interi positivi minori di n e primi con n Sia Z n * linsieme dei residui modulo n che sono primi con n. Z n * è un gruppo abeliano rispetto alla moltiplicazioneSia Z n * linsieme dei residui modulo n che sono primi con n. Z n * è un gruppo abeliano rispetto alla moltiplicazione Loperazione di moltiplicazione modulo n è associativa e commutativa, e 1 è lelemento neutroLoperazione di moltiplicazione modulo n è associativa e commutativa, e 1 è lelemento neutro Ogni elemento in Z n * ammette inversoOgni elemento in Z n * ammette inverso Z n * è chiuso rispetto alloperazione di moltiplicazione, poiché se x e y sono primi con n, tale è anche il loro prodotto xyZ n * è chiuso rispetto alloperazione di moltiplicazione, poiché se x e y sono primi con n, tale è anche il loro prodotto xy Sappiamo che, b Z n * esiste b -1, ma non conosciamo un algoritmo efficiente per calcolarlo: tale algoritmo è noto come algoritmo di Euclide esteso Sappiamo che, b Z n * esiste b -1, ma non conosciamo un algoritmo efficiente per calcolarlo: tale algoritmo è noto come algoritmo di Euclide esteso Ancora sulla Teoria dei Numeri 1

8 Lalgoritmo di Euclide 1 Descriviamo lalgoritmo di Euclide, nella formulazione di base, utilizzata per calcolare il più grande divisore comune di due interi positivi, r 0 e r 1, con r 0 > r 1Descriviamo lalgoritmo di Euclide, nella formulazione di base, utilizzata per calcolare il più grande divisore comune di due interi positivi, r 0 e r 1, con r 0 > r 1 Lalgoritmo di Euclide consiste nellesecuzione delle seguenti divisioniLalgoritmo di Euclide consiste nellesecuzione delle seguenti divisioni r 0 =q 1 r 1 + r 2 0

9 Poiché lalgoritmo di Euclide calcola il più grande divisore comune, può essere utilizzato per determinare se un intero positivo b

10 Lalgoritmo di Euclide 3 La sequenza di numeri t 0,t 1,…,t m viene calcolata con lalgoritmo di Euclide, contemporaneamente a q j,r jLa sequenza di numeri t 0,t 1,…,t m viene calcolata con lalgoritmo di Euclide, contemporaneamente a q j,r j 1.n 0 =n 2.b 0 =b 3.t 0 =0 4.t=1 5.q= n 0 /b 0 5.q= n 0 /b 0 6.r=n 0 -q b 0 7.while r>0 do 8. temp=t 0 -q t 9. if temp 0 then temp=temp (mod n) 10. if temp<0 then temp=n – ((-temp) (mod n)) 11. t 0 =t 12. t=temp 13. n 0 =b b 0 =r 15. q= n 0 /b q= n 0 /b r=n 0 -q b 0 17.if b 0 1 then b non ammette inverso modulo n b non ammette inverso modulo n else else b -1 =t (mod n) b -1 =t (mod n)

11 NoteNote oNellalgoritmo descritto, non viene utilizzato nessun vettore per tenere traccia dei successivi q j,r j e t j, dato che in tutti i calcoli sono coinvolti soltanto gli ultimi due termini delle diverse successioni oNel passo 10., lespressione per il calcolo di temp è stata scritta in modo tale che la riduzione modulo n venga eseguita con argomento positivo (e fornisca un risultato positivo) Esempio 1Esempio 1 Si vuole calcolare (mod 75). Lalgoritmo di Euclide esteso svolge i seguenti passi (mod 75)= (mod 75)=67 Lalgoritmo di Euclide 4

12 Il teorema Cinese dei Resti è un metodo per risolvere certi sistemi di congruenzeIl teorema Cinese dei Resti è un metodo per risolvere certi sistemi di congruenze Siano m 1,…,m r interi positivi primi fra loro ed a 1,…,a r interi; si consideri il sistema di congruenze:Siano m 1,…,m r interi positivi primi fra loro ed a 1,…,a r interi; si consideri il sistema di congruenze: x a 1 (mod m 1 ) x a 2 (mod m 2 ) x a r (mod m r ) Il teorema Cinese dei Resti asserisce che il sistema ha ununica soluzione modulo M= m 1 m 2 … m rIl teorema Cinese dei Resti asserisce che il sistema ha ununica soluzione modulo M= m 1 m 2 … m r Si consideri la funzione : Z M Z m Z m … Z mSi consideri la funzione : Z M Z m Z m … Z m (x)=(x (mod m 1 ),…,x (mod m r )) (x)=(x (mod m 1 ),…,x (mod m r )) Esempio 2Esempio 2 Siano r=2, m 1 =5, m 2 =3 M=15, e la funzione assume i valori… Il teorema Cinese dei Resti r

13 Provare il teorema del Cinese dei Resti equivale a provare che la funzione è una bi-iezione (è il caso dellesempio precedente, in cui è facile calcolare -1 )Provare il teorema del Cinese dei Resti equivale a provare che la funzione è una bi-iezione (è il caso dellesempio precedente, in cui è facile calcolare -1 ) Per 1 i r, si definisca M i =M/m i MCD(M i,m i )=1, iPer 1 i r, si definisca M i =M/m i MCD(M i,m i )=1, i Per 1 i r, si definisca y i =M i (mod m i ): linverso esiste perché MCD(M i,m i )=1 e può essere calcolato con lalgoritmo di EuclidePer 1 i r, si definisca y i =M i (mod m i ): linverso esiste perché MCD(M i,m i )=1 e può essere calcolato con lalgoritmo di Euclide Si noti che M i y i 1 (mod m i ), per 1 i rSi noti che M i y i 1 (mod m i ), per 1 i r Definiamo : Z m Z m … Z m Z M comeDefiniamo : Z m Z m … Z m Z M come (a 1,…a r )= a i M i y i (mod M) (a 1,…a r )= a i M i y i (mod M) Mostreremo che = -1, il che fornisce una formula esplicita per la risoluzione del sistema di congruenze originaleMostreremo che = -1, il che fornisce una formula esplicita per la risoluzione del sistema di congruenze originale Il teorema Cinese dei Resti r i=1 r

14 Definiamo X= (a 1,…a r ) e sia 1 j rDefiniamo X= (a 1,…a r ) e sia 1 j r Consideriamo il termine a i M i y i, ridotto modulo m j : se i=j, a i M i y i a i (mod m j ); se i j, invece, a i M i y i 0 (mod m j ), poiché M i è divisibile per m i. Pertanto…Consideriamo il termine a i M i y i, ridotto modulo m j : se i=j, a i M i y i a i (mod m j ); se i j, invece, a i M i y i 0 (mod m j ), poiché M i è divisibile per m i. Pertanto… X a i M i y i (mod m j ) a j (mod m j ) X è una soluzione del sistema di congruenze X è una soluzione del sistema di congruenze Inoltre, la funzione mappa domini di ugual cardinalità M e poiché si è appena dimostrato che è suriettiva, deve essere anche iniettiva, cioè è una bi-iezione e -1 =Inoltre, la funzione mappa domini di ugual cardinalità M e poiché si è appena dimostrato che è suriettiva, deve essere anche iniettiva, cioè è una bi-iezione e -1 = -1 è una funzione lineare degli argomenti a 1,…a r -1 è una funzione lineare degli argomenti a 1,…a r Il teorema Cinese dei Resti 3 i=1 r

15 Esempio 3Esempio 3 Siano r=3, m 1 =7, m 2 =11, m 3 =13 M=1001. Di conseguenza, M 1 =143, M 2 =91, M 3 =77 e y 1 =5, y 2 =4, y 3 =12. Pertanto, -1 : Z 7 Z 11 Z 13 Z 1001 è definita da -1 (a 1,a 2,a 3 )=715a a a 3 (mod 1001) -1 (a 1,a 2,a 3 )=715a a a 3 (mod 1001) Se x 5 (mod 7), x 3 (mod 11), x 10 (mod 13), x= (mod 1001) =13907 (mod 1001)=894 (mod 1001) =13907 (mod 1001)=894 (mod 1001) che può essere provato riducendo 894 modulo 7,11,13 Teorema 2 (Teorema Cinese dei Resti )Teorema 2 (Teorema Cinese dei Resti ) Siano m 1,…,m r interi positivi primi fra loro ed a 1,…,a r interi. Il sistema delle r conguenze x a i (mod m i ), per 1 i r, ammette soluzione unica modulo M=m 1 m 2 … m r, X a i M i y i (mod M) con M i =M/m i, y i =M i (mod m i ), per 1 i r Il teorema Cinese dei Resti 4 i=1 r

16 Un altro risultato della Teoria dei Gruppi, noto come Teorema di Lagrange, è rilevante per la descrizione delle proprietà del crittosistema RSAUn altro risultato della Teoria dei Gruppi, noto come Teorema di Lagrange, è rilevante per la descrizione delle proprietà del crittosistema RSA Per un gruppo moltiplicativo finito G, si definisce ordine di un elemento g G il più piccolo intero positivo m, tale che g m =1Per un gruppo moltiplicativo finito G, si definisce ordine di un elemento g G il più piccolo intero positivo m, tale che g m =1 Teorema 3 (Teorema di Lagrange )Teorema 3 (Teorema di Lagrange ) Sia G un gruppo moltiplicativo di ordine n e sia g G. Allora, lordine di g è un divisore di n Corollario 2 (Teorema di Eulero )Corollario 2 (Teorema di Eulero ) Se b Z n *, allora b (n) 1 (mod n) Infatti… Infatti… Z n * è un gruppo moltiplicativo di ordine (n ) Z n * è un gruppo moltiplicativo di ordine (n ) Corollario 3 (Teorema di Fermat )Corollario 3 (Teorema di Fermat ) Sia p un numero primo e b Z p. Allora, b p b (mod p) Infatti… Se p è primo, (p)=p-1. Pertanto, per b 0 (mod p), il risultato segue dal Corollario 2. Se b 0 (mod p), il risultato è ancora vero perché 0 p 0 (mod p) Altri risultati 1 /

17 Pertanto, se p è primo, Z p * è un gruppo di ordine p-1, ed ogni elemento in Z p * ha ordine che divide p-1. Comunque, se p è primo, il gruppo Z p * è ciclico: esiste un elemento Z p * che ha ordine uguale a p-1 Pertanto, se p è primo, Z p * è un gruppo di ordine p-1, ed ogni elemento in Z p * ha ordine che divide p-1. Comunque, se p è primo, il gruppo Z p * è ciclico: esiste un elemento Z p * che ha ordine uguale a p-1 Teorema 4 Teorema 4 Se p è primo, Z p * è un gruppo ciclico Un elemento di ordine p-1 è un elemento primitivo modulo p Un elemento di ordine p-1 è un elemento primitivo modulo p Un elemento è primitivo se e solo se { i : 0 i p-2}=Z p * Un elemento è primitivo se e solo se { i : 0 i p-2}=Z p * Supponiamo che p sia primo ed sia un elemento primitivo modulo p. Ogni elemento Z p * può essere riscritto come = i, con 0 i p-2, in maniera univoca; lordine di = i è p-1/MCD(p-1,i) è esso stesso un elemento primitivo se e solo se MCD(p-1,i)=1 il numero degli elementi primitivi modulo p è (p-1) Supponiamo che p sia primo ed sia un elemento primitivo modulo p. Ogni elemento Z p * può essere riscritto come = i, con 0 i p-2, in maniera univoca; lordine di = i è p-1/MCD(p-1,i) è esso stesso un elemento primitivo se e solo se MCD(p-1,i)=1 il numero degli elementi primitivi modulo p è (p-1) Altri risultati 2

18 Esempio 4 Esempio 4 Sia p=13. Calcolando le successive potenze del 2, si può verificare che 2 è un elemento primitivo modulo 13: 2 0 mod 13=1 2 1 mod 13=2 2 2 mod 13=4 2 3 mod 13=8 2 4 mod 13=3 2 5 mod 13=6 2 6 mod 13= mod 13= mod 13=9 2 9 mod 13= mod 13= mod 13=7 Lelemento 2 i è primitivo se e solo se MCD(i,12)=1, cioè sse i=1,5,7,11 gli elementi primitivi modulo 13 sono 2,6,7,11 Altri risultati 3

19 RSA è realizzato in Z n, dove n è il prodotto di due numeri primi distinti p e q (n )=(p-1)(q-1) RSA è realizzato in Z n, dove n è il prodotto di due numeri primi distinti p e q (n )=(p-1)(q-1) Le operazioni di codifica e decodifica sono inverse. Infatti, poiché ab 1 (mod (n)), ab=t (n)+1, per qualche intero t 1. Sia x Z n *, allora… Le operazioni di codifica e decodifica sono inverse. Infatti, poiché ab 1 (mod (n)), ab=t (n)+1, per qualche intero t 1. Sia x Z n *, allora… (x b ) a x t (n)+1 (mod n) (x (n) ) t x (mod n) (x b ) a x t (n)+1 (mod n) (x (n) ) t x (mod n) 1 t x (mod n) x (mod n) 1 t x (mod n) x (mod n) Il crittosistema RSA 1 Sia n =pq, con p e q numeri primi. Siano P = C = Z n Sia K ={(n,p,q,a,b): n =pq, p,q primi, ab 1 (mod (n ))} Per k=(n,p,q,a,b): e k (x) = x b (mod n) d k (y) = y a (mod n) x,y Z n I valori di n e b sono pubblici, p,q ed a segreti

20 Esempio 5: Un piccolo crittosistema RSA insicuro Esempio 5: Un piccolo crittosistema RSA insicuro Supponiamo che Bob abbia scelto p=101 e q=113 n=11413 e (n)= = Poiché 11200= , un intero b può essere utilizzato quale esponente di codifica se e solo se b non è divisibile per 2, 5 o 7 In pratica, Bob non fattorizzerà (n), verificherà solo che MCD( (n),b)=1 utilizzando lalgoritmo di Euclide In pratica, Bob non fattorizzerà (n), verificherà solo che MCD( (n),b)=1 utilizzando lalgoritmo di Euclide Supponiamo che Bob scelga b=3533; allora lalgoritmo di Euclide calcola b -1 =6597 (mod 11200) lesponente di codifica è a=6597 Supponiamo che Bob scelga b=3533; allora lalgoritmo di Euclide calcola b -1 =6597 (mod 11200) lesponente di codifica è a=6597 Bob pubblica n=11413 e b=3533. Supponiamo che Alice voglia inviare il testo in chiaro 9726, Alice calcolerà Bob pubblica n=11413 e b=3533. Supponiamo che Alice voglia inviare il testo in chiaro 9726, Alice calcolerà (mod 11413)=5761 ed invierà il testo cifrato 5761 sul canale Quando Bob riceve y=5761, utilizza lesponente di decifratura segreto a per calcolare Quando Bob riceve y=5761, utilizza lesponente di decifratura segreto a per calcolare (mod 11413)=9726 Il crittosistema RSA 2

21 La sicurezza del crittosistema RSA è basata sulla speranza che e k (x)=x b (mod n) sia one- way, così da rendere computazionalmente impossibile, per una spia, decrittare il testo cifrato La sicurezza del crittosistema RSA è basata sulla speranza che e k (x)=x b (mod n) sia one- way, così da rendere computazionalmente impossibile, per una spia, decrittare il testo cifrato La scappatoia (trapdoor) che permette a Bob di decifrare il codice cifrato è costituita dalla conoscenza della fattorizzazione di n=pq La scappatoia (trapdoor) che permette a Bob di decifrare il codice cifrato è costituita dalla conoscenza della fattorizzazione di n=pq Dato che Bob conosce p e q, può calcolare (n)=(p-1)(q-1) e quindi lesponente di decifratura a, utilizzando lalgoritmo di Euclide esteso Dato che Bob conosce p e q, può calcolare (n)=(p-1)(q-1) e quindi lesponente di decifratura a, utilizzando lalgoritmo di Euclide esteso Sicurezza di RSA

22 Ci sono diversi aspetti del crittosistema RSA che devono essere approfonditi, quali i dettagli implementativi, lefficienza delle operazioni di codifica/decodifica, la sicurezza Ci sono diversi aspetti del crittosistema RSA che devono essere approfonditi, quali i dettagli implementativi, lefficienza delle operazioni di codifica/decodifica, la sicurezza Per realizzare il crittosistema, Bob… Per realizzare il crittosistema, Bob… 1.Genera due numeri primi grandi, p e q 2.Calcola n =pq e (n)=(p-1)(q-1) 3.Sceglie in maniera casuale un intero positivo 0 b (n) tale che MCD(b, (n))=1 4.Calcola a=b -1 (mod (n)) utilizzando lalgoritmo di Euclide 5.Rende nota la chiave pubblica k p =(n,b) Lattacco più ovvio che può essere sferrato a RSA consiste quindi nel tentativo di fattorizzare n. Se la fattorizzazione di n può essere calcolata facilmente, allora altrettanto facilmente si può calcolare (n) e quindi lesponente a di decifratura (così come fa Bob) Lattacco più ovvio che può essere sferrato a RSA consiste quindi nel tentativo di fattorizzare n. Se la fattorizzazione di n può essere calcolata facilmente, allora altrettanto facilmente si può calcolare (n) e quindi lesponente a di decifratura (così come fa Bob) Implementazione di RSA 1

23 Si congettura che il problema di violare RSA sia polinomialmente equivalente al problema di fattorizzare n, ma non esiste a tuttoggi una prova certa Si congettura che il problema di violare RSA sia polinomialmente equivalente al problema di fattorizzare n, ma non esiste a tuttoggi una prova certa Comunque… affinché RSA sia sicuro occorre certamente che n=pq sia sufficientemente grande da rendere la fattorizzazione computazionalmente irrealizzabile Comunque… affinché RSA sia sicuro occorre certamente che n=pq sia sufficientemente grande da rendere la fattorizzazione computazionalmente irrealizzabile Gli algoritmi di fattorizzazione sono in continua evoluzione (parallelamente allevoluzione dellhardware): Gli algoritmi di fattorizzazione sono in continua evoluzione (parallelamente allevoluzione dellhardware): oSupponiamo che un algoritmo di fattorizzazione sia in grado di fattorizzare numeri aventi fino a 130 cifre decimali per garantire la sicurezza, occorre scegliere p e q a 100 cifre così che n abbia almeno 200 cifre oSi osservi inoltre che, un eventuale implementazione hardware di RSA a 512 bit, sarebbe in grado di realizzare interi con 154 cifre decimali (poiché il numero di bit nella rappresentazione binaria è circa log 2 10 volte il numero delle cifre decimali) Implementazione di RSA 2

24 Per quanto riguarda le operazioni di codifica/decodifica, entrambe presuppongono un elevamento a potenza modulo n Per quanto riguarda le operazioni di codifica/decodifica, entrambe presuppongono un elevamento a potenza modulo n Dato che n è molto grande, occorre utilizzare unaritmetica di alta precisione per effettuare i calcoli in Z n, ed il tempo impiegato per i calcoli dipenderà dal numero di bit della rappresentazione binaria di n Dato che n è molto grande, occorre utilizzare unaritmetica di alta precisione per effettuare i calcoli in Z n, ed il tempo impiegato per i calcoli dipenderà dal numero di bit della rappresentazione binaria di n Supponiamo che n sia rappresentabile con k bit, cioè k= log 2 n+1 ; si può dimostrare che unaddizione ed una moltiplicazione sono eseguibili in tempo proporzionale, rispettivamente, a k e k 2. Inoltre, una riduzione modulo n di un intero rappresentato con al più 2k bit può essere realizzata in O (k 2 ) Supponiamo che n sia rappresentabile con k bit, cioè k= log 2 n+1 ; si può dimostrare che unaddizione ed una moltiplicazione sono eseguibili in tempo proporzionale, rispettivamente, a k e k 2. Inoltre, una riduzione modulo n di un intero rappresentato con al più 2k bit può essere realizzata in O (k 2 ) Siano x,y Z n ; xy (mod n) può essere calcolato effettuando prima il prodotto xy (che ha 2k cifre) e quindi la riduzione modulo n La moltiplicazione modulare costa complessivamente, in tempo, O (k 2 ) Siano x,y Z n ; xy (mod n) può essere calcolato effettuando prima il prodotto xy (che ha 2k cifre) e quindi la riduzione modulo n La moltiplicazione modulare costa complessivamente, in tempo, O (k 2 ) Implementazione di RSA 3

25 Implementazione di RSA 4 Consideriamo ora loperazione di esponenziazione modulare, cioè il calcolo di x c (mod n ): in RSA sia la funzione di codifica che quella di decodifica sono esponenziazioni modulari Consideriamo ora loperazione di esponenziazione modulare, cioè il calcolo di x c (mod n ): in RSA sia la funzione di codifica che quella di decodifica sono esponenziazioni modulari Lelevamento a potenza in modulo può essere realizzato effettuando c-1 moltiplicazioni modulari; tuttavia, questa tecnica è molto inefficiente per c grande e, normalmente, c può essere dellordine di grandezza di (n)-1, che è esponenziale in k Lelevamento a potenza in modulo può essere realizzato effettuando c-1 moltiplicazioni modulari; tuttavia, questa tecnica è molto inefficiente per c grande e, normalmente, c può essere dellordine di grandezza di (n)-1, che è esponenziale in k La tecnica elevamento al quadrato-moltiplicazione riduce il numero di moltiplicazioni modulari necessarie al calcolo di x c (mod n ) ad al più 2l, dove l è il numero di bit della rappresentazione binaria di c poiché l k, il tempo richiesto per il calcolo è O (k 3 ) La tecnica elevamento al quadrato-moltiplicazione riduce il numero di moltiplicazioni modulari necessarie al calcolo di x c (mod n ) ad al più 2l, dove l è il numero di bit della rappresentazione binaria di c poiché l k, il tempo richiesto per il calcolo è O (k 3 ) Pertanto le fasi di codifica/decodifica in RSA vengono eseguite in tempo polinomiale in k (numero dei bit per rappresentare il plaintext) Pertanto le fasi di codifica/decodifica in RSA vengono eseguite in tempo polinomiale in k (numero dei bit per rappresentare il plaintext)

26 La tecnica elevamento al quadrato-moltiplicazione presuppone che lesponente b sia rappresentato, in notazione binaria, come La tecnica elevamento al quadrato-moltiplicazione presuppone che lesponente b sia rappresentato, in notazione binaria, come b= b i 2 i con b i uguale a 0 o 1, 0 i l-1 Il numero di operazioni eseguite dallalgoritmo comprende l elevamenti a potenza (passo 3.). Inoltre il numero di moltiplicazioni modulari (passo 4.) è uguale al numero di bit ad 1 nella rappresentazione binaria di b, che è un intero compreso fra 0 e l Il numero totale di operazioni è 2l Il numero di operazioni eseguite dallalgoritmo comprende l elevamenti a potenza (passo 3.). Inoltre il numero di moltiplicazioni modulari (passo 4.) è uguale al numero di bit ad 1 nella rappresentazione binaria di b, che è un intero compreso fra 0 e l Il numero totale di operazioni è 2l Implementazione di RSA 5 l-1 i=0 1.z=1 2.for i=l-1 downto 0 do 3. z=z 2 (mod n) 4. if b i =1 then z=z x (mod n)

27 Esempio 6 Esempio 6 Sia n=11413 e b=3533, come nellEsempio 5. Alice codifica il plaintext 9726 utilizzando lalgoritmo dielevamento al quadrato-moltiplicazione per valutare (mod 11413), come segue… Il testo cifrato è 5761 Il testo cifrato è 5761 Implementazione di RSA 6

28 Il secondo passo dellalgoritmo realizzato da Bob, per implementare il crittosistema RSA, è diretto e viene eseguito in un tempo dellordine O ((logn) 2 ) Il secondo passo dellalgoritmo realizzato da Bob, per implementare il crittosistema RSA, è diretto e viene eseguito in un tempo dellordine O ((logn) 2 ) I passi 3. e 4. presuppongono luso dellalgoritmo di Euclide. Siano r 0 ed r 1 gli interi di cui si vuol calcolare il massimo divisore comune e sia r 0 >r 1 I passi 3. e 4. presuppongono luso dellalgoritmo di Euclide. Siano r 0 ed r 1 gli interi di cui si vuol calcolare il massimo divisore comune e sia r 0 >r 1 oIn ciascuna iterazione dellalgoritmo vengono calcolati un quoziente ed un resto, in tempo O ((log r 0 ) 2 ) oSe è possibile ottenere un limite superiore al numero di iterazioni, si otterrà, in conseguenza, un limite sulla complessità dellalgoritmo Il Teorema di Lamé asserisce che se s è il numero di iterazioni, allora f s+2 r 0, con f i i- esimo numero di Fibonacci. Dato che f i ((1+ 5)/2) i, s è O (log r 0 ) Il tempo totale è O ((log n ) 3 ) (in realtà, un esame più accurato, conduce a O ((log n ) 2 ) ) Il tempo totale è O ((log n ) 3 ) (in realtà, un esame più accurato, conduce a O ((log n ) 2 ) ) Implementazione di RSA 7

29 Resta ancora aperto il problema di come Bob realizzi il primo passo del suo algoritmo di implementazione di RSA Resta ancora aperto il problema di come Bob realizzi il primo passo del suo algoritmo di implementazione di RSA Nella pratica, per generare numeri primi grandi la tecnica comunemente usata è quella di generare numeri casuali grandi e quindi effettuare un test di primalità con un algoritmo probabilistico di tipo Monte Carlo Nella pratica, per generare numeri primi grandi la tecnica comunemente usata è quella di generare numeri casuali grandi e quindi effettuare un test di primalità con un algoritmo probabilistico di tipo Monte Carlo Tali algoritmi sono veloci: il test su un numero intero n ha durata polinomiale in log 2 n, il numero di bit della rappresentazione binaria di n (in particolare, O ((log 2 n) 2 )); tuttavia è possibile che lalgoritmo sbagli, dichiarando primo un numero che non lo è effettivamente Tali algoritmi sono veloci: il test su un numero intero n ha durata polinomiale in log 2 n, il numero di bit della rappresentazione binaria di n (in particolare, O ((log 2 n) 2 )); tuttavia è possibile che lalgoritmo sbagli, dichiarando primo un numero che non lo è effettivamente Eseguendo lalgoritmo più volte, la prpbabilità di errore può comunque essere ridotta al di sotto di una soglia prestabilita Eseguendo lalgoritmo più volte, la prpbabilità di errore può comunque essere ridotta al di sotto di una soglia prestabilita Implementazione di RSA 8

30 Altra questione fondamentale è quella di stabilire quanti interi casuali (di lunghezza prefissata) occorre testare, prima di rilevare un numero primo Altra questione fondamentale è quella di stabilire quanti interi casuali (di lunghezza prefissata) occorre testare, prima di rilevare un numero primo Un famoso risultato della Teoria dei Numeri stabilisce che il numero di interi primi minori di N è approssimativamente N/ln(N) Un famoso risultato della Teoria dei Numeri stabilisce che il numero di interi primi minori di N è approssimativamente N/ln(N) Pertanto se p è un numeo casuale, la probabilità che sia primo è 1/ln(p) Pertanto se p è un numeo casuale, la probabilità che sia primo è 1/ln(p) Per fare una stima, con interi rappresentati con 512 bit, 1/ln(p) 1/177, cioè, in media, su 177 interi casuali ve ne sarà uno primo o, escludendo i numeri pari, al più due Per fare una stima, con interi rappresentati con 512 bit, 1/ln(p) 1/177, cioè, in media, su 177 interi casuali ve ne sarà uno primo o, escludendo i numeri pari, al più due Implementazione di RSA 9

31 È possibile attaccare RSA in maniera diversa dal riuscire a calcolare una fattorizzazione per n ? È possibile attaccare RSA in maniera diversa dal riuscire a calcolare una fattorizzazione per n ? Se Oscar viene a conoscenza del valore di (n ), i due numeri primi p e q possono essere calcolati quali soluzioni del sistema Se Oscar viene a conoscenza del valore di (n ), i due numeri primi p e q possono essere calcolati quali soluzioni del sistema n=pq (n )=(p-1)(q-1) (n )=(p-1)(q-1) Infatti, sostituendo q=n/p nella seconda equazione, si ottiene lequazione di secondo grado in p p 2 -(n- (n )+1)p+n=0 le cui soluzioni sono esattamente p e q, i fattori di n Rilevare (n ) è difficile quanto fattorizzare n Rilevare (n ) è difficile quanto fattorizzare n Un esempio di attacco a RSA 1

32 Esempio 7 Esempio 7 Supponiamo che Oscar abbia appreso che n= e (n )= Linformazione può essere utilizzata per scrivere la seguente equazione di secondo grado p 2 – 18426p =0 che, risolta, fornisce i due fattori di n, p=9539 e q=8887 Un esempio di attacco a RSA 2


Scaricare ppt "RSA Monica Bianchini Dipartimento di Ingegneria dellInformazione Università di Siena."

Presentazioni simili


Annunci Google