Nella storia, l’umanità ha attraversato un’infinità di eventi in cui delle informazioni dovevano essere trasmesse da qualcuno a qualcun altro senza che nessuno le potesse intercettare. È stato fondamentale in caso di guerre, per gli ordini e lo schieramento delle truppe, nella diplomazia, per portare avanti trattative prima che diventassero ufficiali, ma anche in amore… perché sì, è difficile nascondere un amore, ma molto spesso ci si prova. Per questo, da sempre, si utilizzano frasi in codice, cifrari e tutti i metodi possibili per poter comunicare in modo “sicuro”. Oggi lo facciamo tutti, magari anche più spesso di quanto non pensiamo.

Pensate ad esempio a quando vi collegate a Facebook o a Twitter. Nella barra dell’indirizzo del vostro browser vedrete un piccolo lucchetto: questo sta a significare che tra voi e il server a cui vi collegate c’è una comunicazione cifrata. Questo accade, o almeno sarebbe buona norma che accadesse, per tutti i siti in cui si deve inserire una password. Se la comunicazione non fosse cifrata, un malintenzionato potrebbe “ascoltare” la comunicazione tra voi e il server e rubarvi le credenziali di accesso. La cifratura usata in informatica si basa su un concetto molto semplice: ogni comunicazione è una sequenza di bit, ovvero una sequenza di zeri e di uno. Creando una opportuna maschera, nella forma di un’altra sequenza di zeri e di uno, si può creare il messaggio cifrato in questo modo:

chiave

 

In questo caso, il messaggio originale è “hello!” e la chiave è “secret”: il messaggio cifrato non ha niente a che vedere con entrambe. Ora, la domanda è come faccio a scambiarmi la chiave crittografica, però…

 

Qui la storia si perde nell’antichità. Giulio Cesare usava un cifrario molto semplice, ad ogni lettera ne corrispondeva un’altra: questo tipo di cifratura è molto fragile, le combinazioni sono relativamente poche e, partendo dalla frequenza delle lettere, è di solito piuttosto semplice decifrarlo. Nel prosieguo, si sono sviluppati cifrari via via più complicati, con frasi che corrispondevano ad altre, come nel caso di Lucrezia Borgia e di suo marito, Alfonso d’Este Duca di Ferrara. Nelle frequenti occasioni in cui il Duca era fuori dalla sua corte, la moglie prendeva le redini del governo e molto frequenti erano le comunicazioni tra i due, sia con frasi cifrate che con un alfabeto “inventato”.

 

Lo sviluppo di codici sempre più complicati è andato avanti di pari passo con lo studio di tecniche sempre più raffinate per poter decifrare i messaggi: molto famosa è la macchina Enigma usata dalla Germania nella seconda guerra mondiale e di Alan Turing, che contribuì in modo determinante a scoprire il suo sistema di funzionamento. Anche in questo caso, però, chi manda e chi riceve il messaggio si devono essere messi d’accordo prima, per poter comunicare. Questo non succede tra noi e Mark Zuckerberg, però.

 

I moderni sistemi di crittografia informatica si basano su un insieme di sistemi semplici e noti a tutti. Il fatto che la nostra password non venga scoperta è legato al fatto che, per poter decifrare il pacchetto di bit cifrati, occorre un tempo straordinariamente lungo. Facciamo un esempio che ci aiuti a capire. Ogni utente ha due chiavi, una pubblica e una privata: questi due oggetti sono sequenze di bit, che possono essere viste come “numeri”. Di solito, chiamiamo i due personaggi che comunicano tra loro Alice (A) e Bob (B): diciamo che ci si sia messi d’accordo per avere due numeri primi conosciuti da tutti, p=23 e g=5. Questi due numeri li conosce anche Eve (E, il nome standard del “cattivo” che cerca di rubare i dati). A sceglie come sua chiave privata il numero 6 (chiamiamo questo numero a), e B il numero 15 (b): questi due numeri sono sconosciuti a tutti tranne che al loro possessore. A invia a B il numero X = 5^6 mod 23 (cioè g^a mod p, dove con mod si intende il resto della divisione intera), ovvero 8, e B invia ad A il numero Y = 5^15 mod 23, cioè 19. E legge questi X e Y, ma risalire ad a e b è una procedura impossibile, perché l’operazione mod restituisce lo stesso valore per molti valori di a e b diversi. A questo punto, A può calcolare K = Y^a mod p e B può calcolare K = X^b mod p: grazie alle proprietà delle potenze, questo numero è lo stesso, senza bisogno che A conosca la chiave privata di B né viceversa. E conosce X, Y, p e g ma non riesce a calcolare né K, né a, né b, se non in un tempo estremamente lungo. Questo sistema si basa sul fatto di scegliere in modo “opportuno” i vari parametri, cioè numeri primi molto grandi, in modo che il calcolo diretto sia rapido e quello inverso mostruosamente lungo. A e B possono a questo punto usare K come chiave crittografica per le loro comunicazioni, essendo questa nota solo a loro due.

 

ABE

 

La crittografia ha eccitato in modo estremamente vario e articolato la fantasia della gente, nei secoli: per dare un’idea di cosa ancora non siamo riusciti a decifrare, portiamo due esempi. Il primo è il manoscritto Voynich, un codice medievale di oltre 200 pagine tutto scritto in un alfabeto sconosciuto, in una lingua presumibilmente sconosciuta e pieno di immagini difficili da associare a qualcosa di esistente. Il secondo è il messaggio cifrato di Beale, che dovrebbe contenere le istruzioni per recuperare una grossa quantità di oro e di argento… ma anche i nomi dei legittimi eredi del tesoro. È capitato, nel passato, che alcuni codici siano stati decifrati da appassionati, quindi, se volete provarci, buona fortuna… e, se trovate il tesoro, ricordatevi di noi che vi abbiamo fatto venire la curiosità!

 

In copertina, una pagina del manoscritto Voynich.