È una data storica quella di domani. Il 23 giugno di cento anni fa, a Londra, nasceva Alan Turing, ingegnere informatico che – con i suoi studi – contribuì a ridurre la durata del secondo conflitto mondiale. Egli, infatti, riuscì a carpire tutti i segreti della celebre “macchina Enigma“, utilizzata dai nazisti per scambiarsi messaggi in forma cifrata evitandone l’interpretazione da parte dei nemici.
“Enigma” non nacque per scopi bellici: fu inizialmente concepita (nel 1918) come strumento appannaggio degli imprenditori tedeschi, costretti ad affrontare il dilagante fenomeno dello spionaggio industriale. La macchina fu messa in commercio qualche anno dopo suscitando il vivo interesse di numerosi governi tra i quali quello tedesco, polacco, giapponese e statunitense.
Ma partiamo dal principio. La storia della crittografia si perde nella notte dei tempi. Il primo utilizzo documentato della crittografia, ossia di metodologie aventi come obiettivo quello di rendere un messaggio incomprensibile da parte delle persone non autorizzate a leggerlo, risale al 1900 a.C. quando uno scriba egizio fece uso, per preparare una iscrizione, di geroglifici “non-standard”.
Esempi “storici” dell’uso della crittografia sono il “codice di Cesare” o “cifrario di Cesare”, un algoritmo che operava per sostituzione monoalfabetica (ogni lettera del testo di partenza veniva sostituita, nel testo cifrato, con la lettera che si trova, nell’alfabeto, un certo numero di posizioni dopo; provate a decifrare il messaggio FKLHGLDPRULQIRUCL) ed, appunto, il “codice Enigma”, usato dai nazisti durante la Seconda Guerra Mondiale.
“Enigma” utilizzava (ed utilizza ancor’oggi, visto che un esemplare della macchina utilizzata dai militari tedeschi verrà fatta funzionare domani, a Milano, presso il Museo nazionale della scienza e della tecnologia Leonardo da Vinci) un crifrario polialfabetico tanto che esso può essere considerato come un’estensione del cifrario di Vigenère.
Rispetto al cifrario di Vigenère, infatti, Enigma utilizza più “dischi” cifrati (rotori) posti tra loro “in cascata”: ciascuno di essi aveva 26 contatti, uno per ogni lettera dell’alfabeto tedesco. Dall’aspetto simile ad una macchina per scrivere, Enigma si componeva di due tastiere: la prima, quella inferiore, ed un’altra sulla quale le lettere luminose si accendevano mostrando il corrispondente cifrato o decifrato a seconda che s’inserisse il testo da crittografare o quello da decifrare.
Furono le intuizioni di Alan Turing a contribuire a dare una svolta al conflitto mondiale: egli progettò la cosiddetta “Bomba“, un calcolatore impiegato per decifrare rapidamente i messaggi tedeschi codificati con Enigma. Come la macchina di concezione tedesca, la “Bomba” di Turing utilizzava dei rotori che però venivano fatti ruotare a rapida velocità in modo tale da trovare rapidamente tutte le possibili combinazioni. Individuando le combinazioni di lettere che si allineavano durante la ricezione del messaggio cifrato, Turing riuscì a risalire alla chiave di lettura utilizzata dai tedeschi per la trasmissione dei messaggi.
Gli inglesi continuarono, segretamente, a carpire le comunicazioni del nemico nazista (Churchill, addirittura, una volta appreso del bombardamento di una città alleata grazie alla decodifica dei messaggi, preferì non dare l’ordine di evacuazione per non insospettire i tedeschi determinando così la morte di circa duemila persone) sintanto che, nel 1942, la Germania aggiornò pesantemente il sistema Enigma (fu necessario fare irruzione in uno U-boat tedesco per impossessarsi della nuova versione della macchina).
Genio incompreso, Turing morì nel 1954 all’età di soli 42 anni. Attorno alla sua morte aleggia un velo di mistero: secondo la versione ufficiale, lo scienziato si sarebbe suicidato ingerendo del cianuro (accompagnandolo con una mela) ma, secondo alcuni, potrebbe essersi trattato di un assassinio. Per i servizi inglesi Turing cominciava ad essere considerato una personalità scomoda, in possesso di troppi segreti di stato.
Omosessuale, Turing fu perseguitato tanto da arrivare, molto probabilmente al suicidio. Secondo quanto disposto dai legislatori inglesi (Criminal Law Amendment Act 1885), in seguito al contenuto nel cosiddetto “blackmailer’s charter“, che vietava gli “atti di indecenza” tra uomini adulti sia in pubblico che in privato, Turing fu preso di mira dalla polizia. Per evitare il carcere, Turing dovette subire un terribile trattamento a base di estrogeni: gli crebbe il seno e divenne impotente.
Gordon Brown, ex primo ministro britannico, aveva di recente porto le scuse a Turing, ormai defunto, a nome del governo: l’Inghilterra non avrebbe potuto trattare in modo più spregevole un genio come lui il cui nome resterà per sempre nei libri di storia, nei testi di informatica e nei trattati sull’intelligenza artificiale.
Chi volesse provare oggi Enigma senza portarsi dietro 12 kg di peso, può scaricare ed avviare il simulatore distribuito attraverso questa pagina web.
Schemi crittografici nei quali una medesima lettera, presente in vari punti del messaggio di partenza, in chiaro (“plaintext“), può ammettere più sostituzioni differenti tra loro sono appunto cifrari polialfabetici.
I primi esempi di cifrari a sostituzione polialfabetica si fanno risalire all’antica Roma, sotto l’imperatore Augusto. Lo stesso schema fu ripreso nel ‘500 da Leon Battista Alberti quindi dal diplomatico francese Blaise de Vigenère.
L’algoritmo di Vigenère prevede l’utilizzo di una tabella di dimensioni 26×26 (26 righe e 26 colonne). La riga i-esima contiene tutte le 26 lettere dell’alfabeto spostate però verso sinistra di i-1 posizioni. Si sceglie quindi una chiave k.
Dato il messaggio in chiaro si posiziona immediatamente sotto la chiave k scelta. Ad ogni lettera della chiave corrisponde una lettera del messaggio originario. Se la chiave è più corta del messaggio, come abbiamo visto nell’esempio di “ROMA”, la si ripete sequenzialmente sino ad arrivare all’ultima lettera che compone il “plaintext”.
A questo punto, si provvede a sostituire ogni lettera del messaggio con la lettera corrispondente che compare in tabella all’incrocio tra la riga che inizia con la lettera del messaggio da cifrare e la colonna che inizia con la lettera della chiave presa in esame.
E’ immediato notare come una stessa lettera del messaggio in chiaro venga cifrata in più modi differenti, proprio a seconda della corrispondente lettera della chiave. Il cifrario si dice quindi “polialfabetico”.
Verificate, ad esempio, come “ATTACCARE”, con chiave “ROMA”, diventi “RHFATQMRV”.
Dalla lunghezza della chiave scelta dipende strettamente la sicurezza del metodo. Infatti, se la chiave è lunga n caratteri, ciclicamente, le apparizioni di una medesima lettera saranno sostituite con la stessa lettera “cifrata”.
Durante la seconda guerra mondiale basti pensare che come chiave veniva utilizzata il testo di un’intera pagina di un libro, modificata quotidianamente.
La decifrazione dei cifrari polialfabetici mediante crittoanalisi statistica è sicuramente più complessa perché, appunto, ogni lettera deriva a sua volta da una coppia di caratteri plaintext-chiave.
Dal momento che la chiave contiene n caratteri, il messaggio cifrato può essere tuttavia scomposto in “sottosequenze” costituite da n lettere.
Il testo cifrato (“ciphertext”) conterrà comunque gruppi di lettere adiacenti che si ripetono più volte. Se tali gruppi di lettere si trovano allineati con la stessa porzione della chiave, il cifrario restituirà lettere identiche nel “ciphertext”.
È ovvio che porzioni identiche del testo cifrato potrebbero essere state generate a partire da differenti parti della chiave ma ciò appare piuttosto improbabile.
L’attacco può quindi concretizzarsi identificando nel messaggio sottosequenze di caratteri identici. Calcolando la “distanza” tra i caratteri iniziali delle sottosequenze si può arrivare a stabilire la lunghezza della chiave oppure un suo multiplo.
Se la distanza misurata, in termini di caratteri, tra la prima lettera di ciascuna sottosequenza identica non è sempre la stessa per tutte le coppie di sottosequenze prese in esame nel testo cifrato, la lunghezza della chiave sarà pari ad un divisore comune delle varie distanze calcolate.
Una volta stabilita la lunghezza della chiave, si passa ad effettuare una crittonalisi monoalfabetica.
Più è lungo il messaggio più probabilità ci sono che l’attacco vada a buon fine; più è lunga la chiave e più difficilmente l’attacco avrà successo.