RSA - Crittografia RSA PDF

Title RSA - Crittografia RSA
Author Antonio Ruri
Course Informatica 
Institution Università degli Studi di Bari Aldo Moro
Pages 3
File Size 51.6 KB
File Type PDF
Total Downloads 84
Total Views 139

Summary

Crittografia RSA...


Description

UN’APPLICAZIONE INFORMATICA DELL’ARITMETICA MODULARE: IL SISTEMA CRITTOGRAFICO RSA Fin dall’antichit`a si `e sentita l’esignza di trasmettere messaggi in modo nascosto: per questo nasce la crittografia. Fino a pochi decenni fa, i sistemi crittografici erano basati su sistemi di codifica e decodifica dei messaggi a chiave simmetrica: chi inviava i messaggi e chi li riceveva aveva a disposizione la stessa chiave. Il sistema crittografico RSA attualmente in uso si basa invece sul principio della chiave asimmetrica. Il nome RSA deriva dalle iniziali di Ronald Rivest, Adi Shamir e Leonard Adleman che lo hanno realizzato (anche se James Ellis e Clifford Cocks avevano in precedenza trovato un sistema basato sugli stessi principi, ma avevano tenuto segreto il risultato della loro scoperta). Prima di tutto le lettere vengono rappresentate da numeri in codice. Per esempio Nell’American Standard Code for Information Interchange le lettere vengono rappresentate dai numeri da 065 a 090. Per esempio la parola ALA viene scritta come: 065076065. Ogni utente B deve scegliere una coppia di numeri (nB , eB ) in modo che nB sia il prodotto di due numeri primi distinti molto grandi, nB = pB · qB , e inoltre M.C.D.(eB , pB − 1) = 1, M.C.D.(eB , qB − 1) = 1. La coppia (nB , eB ) `e pubblica, ma non `e pubblica la scomposizione di nB . La segretezza di questo sistema sta proprio in questo: B deve costruire nB scegliendo due numeri primi pB e qB molto grandi (anche di 13-14 cifre) e moltiplicandoli. Come si fa a trovare un numero primo? si prende un numero dispari m e si sottopone a certi test di primalit`a: se un test viene superato va bene, altrimenti si prova con m + 2. La coppia (nB , eB ) d`a a B la chiave segreta per decodificare i messaggi: si tratta del numero d B , soluzione della congruenza lineare (1)

eB x ≡ 1(mod ϕ(nB ))

e tale che 0 < d B < ϕ(nB ). Sicuramente (3) ammette soluzione visto che ϕ(nB ) = (pB − 1)(qB − 1) e quindi M.C.D.(eB , ϕ(nB )) = M.C.D.(eB , (pB − 1)(qB − 1)) = 1. Inoltre questa soluzione `e unica (mod ϕ(nB )). Quindi B `e l’unico che pu`o conoscere la chiave d B tale che: eB d B ≡ 1(mod ϕ(nB )), 0 < d B < ϕ(nB ) perch`e soltanto B conosce ϕ(nB ). Si supponga che l’utente A debba inviare il messaggio M all’utente B. Allora consulta gli elenchi ufficiali e trova la coppia (nB , eB ). Se il messaggio `e pi`u lungo di nB , A pu`o spezzare M in modo standard in pi` u messaggi. Quindi si pu`o supporre che M < nB ,

M.C.D.(M, nB ) = 1.

Il messaggio codificato che A invia a B `e M ′ tale che M ′ ≡ M eB (mod nB ). Il punto fondamentale `e: (2)

M ≡ M ′dB (mod nB ),

che si dimostra usando il Teorema di Eulero. Quindi B, trovando una soluzione della congruenza lineare x ≡ M ′dB (mod nB ), avr` a decodificato il messaggio. Il sistema RSA viene usato anche per l’autenticazione delle firme. L’utente A manda un messaggio M all’utente B e lo fa seguire dalla propria firma F , ma nella forma: M1 ≡ F dA (mod nA ), 1

2

cio`e A invia M + M1 . B non riesce a codificare la seconda parte del messaggio, ma sa che proviene da A e ne deve controllare l’autenticit`a. Allora controlla che M 1eA ≡ F (mod nA ). Infatti, si prova che M 1eA ≡ (F dA )eA = F dA eA ≡ F (mod nA ). Esercizio 1. L’utente A vuole inviare il messaggio M = 5 all’utente B, la cui coppia identificativa `e (nB = 77, eB = 13). Allora soltanto B sa che nB = 11 · 7 e quindi ϕ(nB ) = ϕ(11)ϕ(7) = 10 · 6 = 60. Pertanto soluzione d B < 60 della congruenza lineare (3)

13x ≡ 1(mod 60)

`e la chiave per la decodifica dei messaggi. Per risolvere (3), si pu` o usare l’algoritmo delle divisioni successive: 60 13 8 5

= = = =

13 · 4 + 8 8·1+5 5·1+3 3·1+2

3 = 2·1+1 2 = 2 · 1 + 0. Quindi: 1 = 3 + 2 · (−1) = 3 + (5 + 3(−1)) · (−1) = 3 + 5 · (−1) + 3 = 3 · 2 + 5 · (−1) = (8 + 5 · (−1)) · 2 + ·(−1) = 8 · 2 + 5 · (−2) + 5 · (−1) = 8 · 2 + 5 · (−3) = 8 · 2 + (13 + 8 · (−1)) · (−3) = 8 · 2 + 13 · (−3) + 8 · 3 = 8 · 5 + 13 · (−3) = (60 + 13 · (−4)) · 5 + 13 · (−3) = 60 · 5 + 13 · (−23), Allora 1 = 13 · (−23) + 60 · 5 e quindi −23 `e una soluzione. La pi` u piccola soluzione positiva `e −23 + 60 = 37, per cui la chiave `e d B = 37. L’utente A dovr`a inviare a B il messaggio M ′ ≡ M eB (mod nB ). e quindi deve trovare x tale che x ≡ 513 (mod 77). Per esempio, usando una comune calcolatrice, si vede che 56 = 15.625 e che 15.625 = 202 · 77 + 71, ovvero 15.625 ≡ 71(mod 77). Quindi 513 = 56·2+1 = (56 )2 · 5 = (15.625)2 · 5 ≡ 712 · 5(mod 77). Sempre effettuando il calcolo su una calcolatrice, si ha: 712 · 5 = 25.205 = 327 · 77 + 26, per cui 712 · 5 ≡ 26(mod 77). Allora A invia a B il messaggio M ′ = 26. A questo punto B deve decodificare il messaggio ricevuto usando la sua chiave d B = 37, che solo lui conosce, e usando (2). Quindi deve cercare x tale che x ≡ 2637 (mod 77). Si vede che 266 = 308.915.776 = 4.011.893 · 77 + 15, per cui 266 ≡ 15(mod 77). Allora: 2637 = 266·6+1 = (266 )6 · 26 ≡ 156 · 26(mod 77).

3

D’altra parte 156 = 11.390.625 e 156 · 26 = 296.156.250 = 3.846.185 · 77 + 5 e quindi 2637 ≡ 5(mod 77), e quindi B ha decodificato il messaggio M ′ ....


Similar Free PDFs