La chiave di cifratura RSA

Fin dai tempi più remoti l’uomo ha sentito l’esigenza di poter comunicare a distanza conservando la segretezza delle comunicazioni in caso d’intercettazione del messaggio e da qui l’esigenza di sviluppare forme crittografiche che potessero garantire la lettura del suo contenuto solo al legittimo destinatario. Un esempio di crittografia antica è rappresentato dal cosiddetto “Cifrario di Cesare” una forma di cifratura per sostituzione monoalfabetica in cui ogni lettera del testo in chiaro è sostituita da altra lettera distante un certo numero di posizioni nell’alfabeto ordinario. Esemplificando, immaginiamo che la chiave di cifratura sia costituita dalla sostituzione monoalfabetica con lettere spostate verso destra di quattro posizioni e utilizziamo questa chiave per cifrare la parola “BUONGIORNO”.

L’algoritmo di cifratura sarà:

ABCDEFGHIJKLMNOPQRSTUVWXYZ (alfabeto in chiaro)
DEFGHIJKLMNOPQRSTUVWXYZABC (alfabeto cifrante)

BUONGIORNO diventerà così EXRKDLRUKR

Questo metodo di cifratura, così come altri algoritmi più complessi sviluppati successivamente, non è certo adatto per le esigenze di comunicazione odierne e soffre di un difetto costituito dalla necessità che mittente e destinatario debbano concordare preventivamente la chiave di cifratura e dal fatto che la chiave per cifrare e quella per decifrare è sempre la stessa (da qui il termine “cifratura simmetrica”).

Negli anni ’70 due crittologi americani svilupparono un sistema di cifratura asimmetrica che utilizzava due chiavi diverse, una per cifrare il messaggio e l’altra per decifrarlo. La chiave per cifrare il messaggio venne chiamata “chiave pubblica”, in quanto pubblicamente divulgabile, mentre la chiave per decifrarlo venne chiamata “chiave privata” in quanto in possesso solo del destinatario del messaggio. Gli elementi portanti di questo metodo di cifratura consistono nell’impossibilità di utilizzare la chiave pubblica per decifrare e nell’eliminazione dell’esigenza di mittente e destinatario di concordare preventivamente la chiave da utilizzare. Sarà sufficiente, infatti, che ogni utente generi autonomamente le proprie chiavi pubblica e privata e divulghi solo quella pubblica che sarà utilizzata dagli altri utenti per cifrare i messaggi a lui diretti.

Per capire il funzionamento di questo importante algoritmo di cifratura chiamato RSA facciamo un esempio pratico: Marco deve inviare un messaggio a Beatrice e per cifrare il messaggio utilizza la chiave pubblica di Beatrice che lei stessa ha divulgato. Beatrice riceve il messaggio cifrato e per poterlo leggere lo decifra con la sua chiave privata. Risponde a Marco cifrando il messaggio con la chiave pubblica di Marco e Marco, dopo averlo ricevuto lo decifra con la propria chiave privata.

Volendo utilizzare un’analogia potremmo dire che le chiavi pubbliche sono rappresentate da lucchetti aperti che il destinatario ha messo a disposizione di tutti mentre le chiavi private sono le chiavi fisiche necessarie per aprire ogni lucchetto.

Marco, per comunicare con Beatrice, inserisce il suo messaggio in una scatola metallica dove all’interno c’è anche il proprio lucchetto aperto e poi chiude la scatola con il lucchetto aperto che Beatrice gli ha dato. Beatrice, una volta ricevuta la scatola, apre il lucchetto con la propria chiave, estrae il messaggio, lo legge e poi risponde al messaggio inserendolo nella scatola con il proprio lucchetto aperto e poi chiude la scatola con il lucchetto che gli ha inviato Marco; e il processo si ripete così.

La caratteristica che rende efficace la chiave di cifratura RSA è data dal fatto che dalla chiave pubblica non si può risalire alla chiave privata.

Un altro piccolo esempio può servire a comprendere come funziona il meccanismo di generazioni delle chiavi da parte di ogni utente: supponiamo che Marco, Beatrice e Adriana abbiano tutti un recipiente contenente un litro di vernice gialla (la chiave pubblica) e ognuno di loro abbia un altro recipiente contenente un litro di vernice di altro colore diverso dal giallo (la loro chiave privata), ignoto agli altri.

Assegniamo a Marco il blu cobalto, e a Beatrice il verde smeraldo e supponiamo che Marco e Beatrice vogliano comunicare tra loro senza che Adriana possa leggere i loro messaggi. Marco verserà nel suo recipiente di colore giallo il proprio colore segreto ovvero il blu cobalto; Beatrice farà lo stesso aggiungendo al proprio recipiente giallo il proprio colore segreto ovvero il verde smeraldo.

A questo punto la situazione sarà la seguente:

Marco avrà un recipiente giallo – blu cobalto
Beatrice avrà un recipiente giallo – verde smeraldo

Marco e Beatrice si scambiano i recipienti ma nessuno di loro potrà mai sapere quale colore è stato aggiunto al giallo dall’altro ossia nessuno di loro potrà mai sapere qual è la chiave privata dell’altro.

La situazione ora sarà la seguente:

Marco avrà un recipiente giallo – verde smeraldo che gli ha dato Beatrice
Beatrice avrà un recipiente giallo – blu cobalto che gli ha dato Marco

Marco e Beatrice, ora aggiungeranno al recipiente in loro possesso un litro del loro colore segreto.

Marco avrà quindi un recipiente: giallo – verde smeraldo – blu cobalto
Beatrice avrà quindi un recipiente: giallo – blu cobalto – verde smeraldo.

In pratica avranno ottenuto lo stesso identico colore ignorando l’uno il colore segreto dell’altro.

Se scriveranno il loro messaggio con questo colore Adriana non potrà mai leggerlo.

Riassumendo con un’analogia possiamo dire che la chiave pubblica chiude ma non apre mentre la chiave privata apre ma non chiude.

CrimeLab – Via delle medaglie d’oro 44, 00136 Roma
+39 335 355167
Tel. 06 397 51336
info@crimelab.it
www.crimelab.it