Crittografia è una parola composta da due nomi: cripto (segreto) e grafia (scrittura). Pertanto con questo termine si indica sia la teoria, che le tecniche usate per nascondere delle informazioni. La necessità di offuscare i messaggi di una comunicazione è sempre stata presente nella storia dell’uomo, ed è diventata un’esigenza imprescindibile soprattutto in ambito militare, dove rendere partecipe il nemico delle nostre decisioni strategiche è, chiaramente, l’ultima delle cose che si desiderano. Nel capitolo 38 del corso informatica-ilcorso, abbiamo già affrontato questa tematica, introducendo quella che è la tecnica principale utilizzata al giorno d’oggi, specialmente in internet: la crittografia a chiave pubblica. Vediamo in questo articolo del blog di capire meglio di che si tratta.

Come facciamo a essere sicuri?

Quando spediamo una lettera o una cartolina al servizio postale, siamo consapevoli che il nostro messaggio è vulnerabile e può essere intercettato e letto da terze persone. Lo stesso accade in Internet quando inviamo i dati della nostra carta di credito verso il server di Amazon. Questi dati sono in fin dei conti dei bit che fluiscono attraverso i vari nodi di Internet, fino ad arrivare a destinazione. Chiunque può inserirsi e sbirciare i miei dati.




Ma oggi le transazioni online (e qualsiasi altro dato sensibile) viaggiano continuamente in rete. Le minacce esistenti non sono state eliminate completamente, ma siamo stati in grado di rendere le comunicazioni molto sicure e affidabili. Siamo forse riusciti a costruire delle ‘strade digitali’ senza pericoli? No, i percorsi sono sempre quelli. Il trucco è quello di ‘camuffare’ l’informazione affinché possa essere interpretata correttamente solo e soltanto dal destinatario lecito. Per cui la strategia vincente verso il nemico è: “Ok, leggi pure i miei dati, tanto non saprai cosa significhino e non te ne farei un bel niente”.

La crittografia a chiave pubblica è una tecnica che, nonostante faccia uso di operazioni matematiche molto complesse, si basa tuttavia su un concetto davvero semplice.

Il trucco delle vernici mescolate

Facciamo un esempio. Alice possiede un barattolo di vernice che custodisce gelosamente e non vuole che nessuno scopra il suo colore. A un certo punto decide che deve comunicare al suo amico Bob la sua particolare tonalità e l’unico modo per farlo è quella di spedirgli direttamente un po' della sua vernice. Ma così facendo qualcuno potrebbe inserirsi fra i due soggetti e carpire il colore di Alice. Che possiamo fare?



Un modo ingegnoso potrebbe essere il seguente: ogni soggetto rilascia un vasetto di un colore specifico in un posto in cui chiunque può accedere, una specie di magazzino dei colori pubblici. Inoltre ciascun soggetto, oltre a esporre la sua vernice, possiede anche un decolorante per quella stessa vernice. Lui è l’unico che ha il decolorante per la vernice che espone al pubblico e lo custodisce gelosamente. Ad esempio Alice ha come colore pubblico ‘lavanda di provenza’, mentre Bob ha ‘cedro del libano orientale’. Esistono miliardi di tonalità diverse e ognuno ha la sua al magazzino dei colori pubblici e il relativo decolorante in privato.




Bene, supponiamo che adesso Alice voglia trasmettere il colore ‘corallo dell’Ogliastra’ a Bob, come farebbe? Si rivolge al magazzino dei colori e prende un po' del colore pubblico di Bob, il ‘cedro del libano orientale’ mescolandolo al colore che vuole inviare (l’informazione segreta).




Quello che viene fuori è il colore che viene inviato a Bob ed è un colore che non ha niente a che fare con quello originale e che chiunque può intercettare e vedere, poiché tanto non riuscirà mai a risalire all’informazione originale (il colore di Alice). Una volta che Bob riceve il vasetto con il miscuglio fatto da Alice, sa quello che deve fare. Prende il suo decolorante privato e lo applica al miscuglio. Il suo decolorante è l’unico che può eliminare il suo colore pubblico, il cedro del libano orientale, ottenendo quindi il colore segreto di Alice, il corallo dell’Ogliastra.




Se Bob volesse inviare un colore ad Alice, lo dovrebbe prima mescolare con il suo colore pubblico, la lavanda di provenza e poi inviarglielo.

Chiaramente è un esempio molto semplificato, ma che ben rappresenta i flussi in gioco.

Nella realtà il colore pubblico rappresenta la chiave pubblica, che è conservata in un registro aperto a tutti e il decolorante è la chiave privata. In un sistema di crittografia a chiave pubblica, chiunque può cifrare un messaggio usando la chiave pubblica del destinatario, ma soltanto il destinatario, che possiede la chiave privata, potrà decifrare il messaggio.

Un sistema di crittografia a chiave pubblica si basa sulla difficoltà computazionale che si ha nel risalire dalla chiave pubblica a quella privata. Tradotto in parole semplici, significa che un algoritmo crittografico è un valido algoritmo nel momento in cui un soggetto che voglia ricavare la chiave privata dalla relativa chiave pubblica deve impiegare un tempo enorme di calcoli matematici, dell’ordine di centinaia o migliaia di anni.

La lunghezza delle chiavi è in genere compresa tra 1024 e 2048 bit e questo rende estremamente difficile calcolare una chiave privata dalla sua controparte pubblica.


Applicazioni e limiti della crittografia a chiave pubblica

Questo tipo di crittografia ha numerose applicazioni pratiche ed è usato molto nei sistemi informatici moderni per fornire una sicurezza adeguata per informazioni sensibili e confidenziali, come le sessioni web, l’invio delle email, i certificati digitali, le criptovalute, ecc..

Sebbene come abbiamo visto la crittografia a chiave pubblica sia la risposta a diverse esigenze, essa presenta anche dei limiti. A causa delle complesse operazioni matematiche coinvolte nella cifratura e nella decifrazione, gli algoritmi di questo tipo di crittografia possono essere molto lenti specialmente se costretti a gestire grandi quantità di dati. Inoltre la crittografia a chiave pubblica basa tutto il suo presupposto al fatto che la chiave privata rimanga segreta. Se questa, infatti, viene condivisa o esposta accidentalmente, la sicurezza di tutti i messaggi che sono stati cifrati precedentemente con la relativa chiave pubblica sarà irrimediabilmente compromessa. Inoltre, è possibile smarrire la propria chiave privata, nel qual caso diventa impossibile accedere ai dati criptati.