Il documento elettronico


La crittografia a chiave pubblica e l'algoritmo RSA
Terminologia crittografica
di Corrado Giustozzi(*)

Se l'uso di tecniche crittografiche per proteggere i documenti è antico quanto la scrittura stessa, solo l'avvento del computer ha permesso di realizzare nella pratica dei sistemi di crittografia di nuova concezione basati su principi materialmente impossibili da applicarsi con sistemi manuali o meccanici. Si tratta di una nuova classe di cifrari che godono di molte importanti proprietà: sono molto sicuri ma al contempo facili da gestire; sono immuni dai principali problemi dei sistemi di crittografia classici, primo fra tutti quello della gestione e distribuzione delle chiavi; sono in grado di fornire "servizi" aggiuntivi quali la "firma elettronica" e la certificazione del mittente.
Tutti si basano sul concetto di "chiave asimmetrica", del tutto assente nella crittografia classica. Tutti i cifrari tradizionali, infatti, si comportano nella pratica come si comporta la normale serratura della nostra porta, che apriamo e chiudiamo con una stessa chiave. Nel caso specifico, la chiave crittografica usata per cifrare un messaggio è la stessa che poi viene applicata per decifrarlo. Un cifrario di questo tipo si chiama "simmetrico".
Nel 1976 due crittologi americani, Diffie ed Hellmann, pubblicarono un fondamentale lavoro teorico nel quale, ipotizzando di poter disporre di un cifrario "asimmetrico", dimostravano la fattibilità di sistemi crittografici di nuovo tipo, adatti alla crittografia di massa mediante il concetto delle "chiavi pubbliche".
In pratica un sistema del genere è dotato di due chiavi distinte, che sono una l'inverso dell'altra: se una viene usata per la cifratura la seconda deve essere usata decifratura, e viceversa. Punto fondamentale del sistema è che le due chiavi devono essere indipendenti: ossia la conoscenza di una delle due chiavi non deve dare alcuna informazione utile alla ricostruzione dell'altra.

Dato un cifrario del genere, vediamo con quale elegante meccanismo si riesce ad istituire un sistema crittografico pubblico. Ogni utente del sistema si genera (da solo, è importante!) la propria coppia di chiavi, che chiameremo "diretta" e "inversa". Tutte le chiavi dirette vengono inserite in una lista pubblica, una specie di grande elenco del telefono di tutti gli utenti cui tutti hanno libero accesso; le chiavi inverse rimangono invece segrete.
Se l'utente A vuole mandare all'utente B un messaggio che solo B può leggere, non fa altro che cifrarlo con la chiave diretta di B, che può trovare nell'elenco pubblico. Il messaggio così cifrato può ora essere letto solo da B, perché solo lui è in possesso della propria chiave inversa che è l'unica in grado di decifrarlo. Nemmeno lo stesso A può rileggere il proprio messaggio una volta che lo ha cifrato con la chiave pubblica di B! Come si vede il sistema è assolutamente sicuro, ma solo a patto che le chiavi inverse rimangano sempre segrete: da qui la necessità che ciascun utente generi le proprie chiavi e non comunichi a nessuno la propria chiave inversa.

Vediamo ora invece come si può certificare l'identità del mittente di un messaggio privato. Diciamo che A vuole mandare a B un messaggio tale che non solo esso possa essere letto soltanto da B, ma anche tale che B possa avere l'assoluta certezza che nessun altro all'infuori di A possa averlo creato. Per far ciò, A cifra dapprima il messaggio usando la propria chiave segreta; poi cifra ulteriormente il messaggio risultante usando la chiave pubblica di B. A questo punto B, per leggere il messaggio, deve compiere le seguenti operazioni: dapprima decifra il messaggio utilizzando la propria chiave privata, come nel caso precedente; ottiene così un messaggio che però è ancora in cifra, per cui B procede a decifrarlo ulteriormente usando però questa volta la chiave pubblica di A. Solo adesso il messaggio è in chiaro e può essere letto; e B (o un giudice di tribunale...) ha la assoluta certezza che esso sia stato originato proprio da A, perché solo lui può aver usato la propria chiave segreta per applicargli la seconda cifratura.

Come caso particolare A può anche mandare messaggi pubblici, ossia diretti a tutti e non segreti, in modo però che risulti certamente che proprio lui ne è l'autore. Per far ciò basta che li cifri con la propria chiave segreta: chiunque può infatti decifrarli utilizzando la chiave pubblica di A, e questo basta a dimostrare che l'autore del messaggio è proprio A dato che solo lui poteva conoscere la propria chiave segreta.

Questa nuova classe di cifrari a chiave pubblica è diventata realtà nel 1978, quando tre ricercatori del MIT (Rivest, Shamir e Adleman) scoprirono la possibilità reale di costruire cifrari a chiave asimmetrica utilizzando particolari proprietà formali dei numeri primi con qualche centinaio di cifre. In realtà l'algoritmo da essi inventato, che dalle loro iniziali si chiama oggi RSA, non è sicuro in termini matematicamente dimostrabili, dato che esiste la possibilità teorica che nuove scoperte matematiche possano minarne la base; ma tutti gli studiosi sono d'accordo nel ritenere che tale possibilità sia enormemente improbabile, e dunque l'algoritmo RSA viene oggi ritenuto di massima affidabilità.

Da notare che Rivest, Shamir e Adleman hanno provveduto a brevettare il proprio algoritmo ed a costituire una società (la RSA Data Security) per tutelarne i diritti commerciali. La RSA, recentemente acquistata dalla Security Dynamics, ha venduto i diritti dell'algoritmo a molti operatori di rilievo quali Netscape, Microsoft ed altri; ed una variante del sistema RSA è utilizzato nel diffusissimo pacchetto di crittografia chiamato PGP (Pretty Good Privacy), disponibile liberamente nel pubblico dominio. Oggi dunque l'algoritmo RSA costituisce il fondamento dei sistemi crittografici su cui si stanno basando i meccanismi di sicurezza ed autenticazione di Internet e della futura società "senza carta".

Terminologia crittografica

Il campo della crittografia, solo di recente balzato all'attenzione del grosso pubblico e degli organi di informazione, soffre purtroppo dell'uso di termini errati o imprecisi, spesso modellati maccheronicamente dai tecnici sui corrispondenti termini inglesi. Ma la crittografia è una disciplina che affonda le sue radici storiche in Italia (gli ambasciatori della Repubblica Veneziana e i Messi Pontifici erano i principali utilizzatori di tecniche crittografiche del Rinascimento...) e dunque dispone di un nutrito ancorché‚ corretto insieme di termini che vale la pena di usare quando opportuno. E dunque bando agli anglicismi "crittare" o peggio ancora "encrittare", modellati sull'inglese "to encrypt": il verbo corretto è "cifrare" o "mettere in cifra"; mentre l'azione del cifrare si chiama "cifratura", non "crittazione" o "crittografazione". Il sistema di crittografia si chiama semplicemente "cifrario", mentre il messaggio risultante dalla cifratura è un "testo cifrato", in contrapposizione al "testo in chiaro" che è l'originale. La "chiave" è invece la particolare parola, o frase, utilizzata per applicare ad un testo chiaro le regole del cifrario per produrre un testo cifrato. Un antico principio della crittografia dice che il cifrario in s‚ può essere pubblico, e che tutta la segretezza di un testo cifrato deve risiedere non nel cifrario ma nella chiave usata per cifrare. L'operazione inversa alla cifratura si chiama "decifratura" e, attenzione, non è la stessa cosa della "decrittazione"! Fra "decifrare" e "decrittare" vi è infatti una differenza sostanziale: chi decifra è infatti colui il quale è legittimamente in possesso della chiave del cifrario, e la applica secondo le corrette regole per mettere in chiaro un testo cifrato a lui regolarmente destinato; chi decritta, invece, è un estraneo che non è affatto in possesso della chiave, ma tenta fraudolentemente di venire a conoscenza del contenuto di un testo cifrato a lui non destinato utilizzando sistemi indiretti.

(da MCmicrocomputer n. 168 - dicembre 1996)

(*) giornalista scientifico, MCmicrocomputer

© InterLex, 1997