Contenuti |
---|
|
Matematica sottostante |
Nato nel 1977 il cifrario RSA segnò una svolta nella storia della Crittologia; prima di allora i cifrari erano tutti a chiave segreta e simmetrica: la chiave (parola o numero) era segreta ed era la stessa per cifrare e per decifrare il messaggio.
Nel 1976 un articolo di Diffie ed Hellmann aveva per la prima volta proposto l'idea di una crittografia a chiave pubblica, ma non aveva definito un metodo funzionante. Un matematico del MIT Ron Rivest prese sul serio quella proposta e con l'aiuto di altri due matematici del MIT l'israeliano Adi Shamir, e Leonard Adleman riuscì a definire un metodo al quale fu dato per nome l'acronimo dei tre cognomi: RSA per Rivest, Shamir, Adleman.
L'idea di Rivest fu quella di sfruttare la difficoltà di fattorizzare un numero; la chiave pubblica è un numero N ottenuto moltiplicando due numeri primi molto grandi (centinaia di cifre decimali) che restano segreti. Il sistema si basa su due risultati matematici dovuti a Fermat e a Eulero: la funzione di Eulero e il teorema di Fermat-Eulero.
RSA rimase per qualche anno nel limbo delle belle idee, ma poi con la sempre maggiore diffusione di Internet ha conosciuto un successo enorme, ed è ancor oggi il cifrario a chiave pubblica più usato. Quasi tutte le operazioni sicure sul web (protocollo https) usano oggi certificati basati su RSA.
Ogni utente del sistema ha una coppia di chiavi pubbliche che vengono pubblicate da un ente che ne garantisce l'autenticità.
RSA è usato anche per generare le firme digitali. Una versione gratuita che ha avuto grande successo è PGP, Pretty Good Privacy.
Prendiamo i soliti utenti Aldo e Biagio; se Aldo vuole inviare un messaggio riservato a Biagio, deve prima di tutto andare a cercare sull'elenco le chiavi pubbliche di Biagio. Usando questi numeri con una serie di calcoli piuttosto complessi Aldo ottiene il messaggio cifrato da inviare a Biagio.
Biagio riceve il messaggio e usa la sua chiave segreta per decifrarlo con un calcolo; solo lui conosce questo numero e quindi solo lui può decifrare il messaggio (paradossalmente nemmeno Aldo può decifrare il suo stesso messaggio).
Maggiori dettagli nella pagina RSA il metodo.
Il codice RSA viene considerato sicuro perchè si ritiene che solo individuando i fattori primi della chiave pubblica sarebbe possibile decifrare il messaggio. E la fattorizzazione di un numero enorme (si usano oggi chiavi di 1024 o 2048 bit) richiede tempi proibitivi.
Non è per la verità dimostrato che sia necessaria la fattorizzazione per forzare RSA; per esempio potrebbe esistere un metodo per calcolare la funzione di Eulero Φ(N), senza conoscere i fattori primi di N. D'altra parte è stato dimostrato che il calcolo della funzione di Eulero comporta una complessità paragonabile alla fattorizzazione. E fino ad ora nessun metodo del genere è stato trovato ed RSA resta a tutt'oggi un cifrario inviolato.
Un difetto di RSA è la mole dei calcoli aritmetici che per numeri grandi si traduce in una lentezza della codifica; e poiché la codifica consiste essenzialmente in un elevamento a potenza in un'aritmetica finita, diventa essenziale disporre di algoritmi veloci per il calcolo della potenza.
Anche così RSA resta un metodo di cifratura molto più lento (circa mille volte!) degli algoritmi classici come DES; per questo motivo RSA è di solito utilizzato solo per trasmettere la chiave segreta di un DES (o altro cifrario simmetrico) e il messaggio vero e proprio viene trasmesso appunto con il DES.