Terminologia
crittografica
La crittografia a chiave pubblica e l'algoritmo RSA
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
|