Chiaro c | A 11000 | l 01001 | e 10000 | a 11000 | 00000 | i 01100 | a 11000 | c 01110 | t 00001 | a 11000 | 00000 | e 10000 | s 10100 | t 00001 | |||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chiave k | 01111 | 00010 | 10001 | 10000 | 11100 | 01111 | 10111 | 01100 | 01000 | 00000 | 10000 | 11001 | 10111 | 01001 | |||||||||||||||||||||||||||||||||||||||||||||||||
Cifrato c XOR k | 10111 | 01011 | 00001 | 01000 | 11100 | 00011 | 01111 | 00010 | 01001 | 11000 | 10000 | 01001 | 00011 | 01000 | |||||||||||||||||||||||||||||||||||||||||||||||||
Pagina interattiva |
Il cifrario di Vigenere ha il suo tallone d'Achille nel fatto di essere un insieme di cifrari di Cesare intercalati a distanza fissa, cosa che ne rende possibile e anzi facile la crittanalisi, quanto più la chiave è breve.
Ben diversa sarebbe però la situazione se la chiave avesse lunghezza infinita o, che in fondo è lo stesso, fosse lunga come il testo chiaro (o meglio come la somma di tutti i testi chiari), e cosa ancora più importante fosse completamente casuale, senza alcuna regolarità, del tutto imprevedibile.
Nel 1917 Gilbert S. Vernam presentò un Secret signaling system poi brevettato nel 1919, che descriveva il circuito elettrico necessario; quel che interessa qui non è l'hardware che di fatto implementa un operatore logico XOR, ma il metodo: il testo chiaro viene codificato in una sequenza di bit che vengono sommati modulo 2 (XOR) con una sequenza di bit, cioè di 0 e 1, che deve essere del tutto casuale, imprevedibile.
Il brevetto Vernam usava il codice Baudot a 5 bit per codificare un testo alfanumerico in una sequenza di bit; la cosa non è essenziale oggi si potrebbe usare il codice ASCII a 8 bit.
Nel 1949 Claude Shannon, padre della Teoria dell'Informazione, dimostrò che il cifrario di Vernam è perfetto, nel senso che testo chiaro e testo cifrato sono del tutto indipendenti, la conoscenza dell'uno non dà alcuna informazione sull'altro; inoltre anche il testo chiaro e la chiave sono indipendenti tra di loro. Anzi ogni cifrario che gode di queste proprietà è necessariamente un Vernam.
È quindi del tutto al sicuro dagli attacchi della crittanalisi statistica.
Per soddisfare queste condizioni è implicito che si debba mai riutilizzare la stessa chiave, in tal caso la sequenza non sarebbe più del tutto casuale, non c'è più indipendenza totale tra testo chiaro e cifrato, e il cifrario non è più perfetto.
Il cifrario può essere provato interattivamente alla pagina Vernam interattivo.
Quello brevettato dal Vernam è in realtà solo un esempio di cifrario a "chiave non riutilizzabile" in inglese One Time Pad abbreviato in OTP.
Cifrari OTP possono essere del tipo poli-alfabetico Vigenère, Bellaso purchè usino chiave disordinata e infinita, ma anche cifrari con alfabeti cifranti disordinati e cambiati ad ogni passo.
Non essendo ovviamente possibile generare una chiave infinita, se ne genera una molto lunga, sufficiente per un gran numero di messaggi, memorizzata su nastro Baudot, libro mastro di carta, o altro supporto, che va comunicata al corrispondente in modo sicuro. L'operazione andrà ripetuta periodicamente ogni volta generando ex-novo la chiave.
Generare una sequenza che sia veramente casuale non è affatto semplice, costituisce la difficoltà principale per realizzare un autentico Vernam. Si potrebbero usare metodi hardware del tutto imprevedibili come la ruota del lotto, il lancio di una moneta o simili, troppo lenti per generare una sequenza molto lunga in tempi ragionevoli.
Un'altra soluzione hardware, che fu usata dopo il 1919, è quella di generare la chiave usando combinazioni di rotori opportunamente collegati, in modo da generare sequenze disordinate. Ma questi sistemi sono inevitabilmente periodici, alla fine si ripetono identicamente, la chiave non è realmente infinita e casuale, la vera chiave è l'algoritmo che la genera. Si tratta quindi di sistemi pseudo-casuali, che comunque se il periodo è molto lungo possono dare una sicurezza accettabile. A questo genere appartengono molte macchine cifranti, tra le quali la macchina Lorenz usata dai tedeschi nella II guerra mondiale. Queste macchine non sono quindi assolutamente sicure, tanto è vero che la Lorenz fu forzata dagli inglesi di Bletchley Park; ma furono necessari i Colossus, i primi calcolatori elettronici, per riuscirci nei tempi brevi che sono richiesti in tempo di guerra.
Con l'avvento dei computer al posto delle sequenze di rotori sono stati realizzati algoritmi, software quindi, che generano sequenze inevitabilmente pseudo-casuali, anche queste hanno un periodo finito, per quanto lungo possa essere; molti linguaggi e fogli di calcolo prevedono funzioni rand() o random(), di qualità molto variabile.
Negli anni della guerra fredda un cifrario OTP fu usato per il telefono rosso tra Washington e Mosca. Un cifrario tipo Vernam era anche quello trovato addosso al Che Guevara dopo la sua uccisione nel 1967.
Tra le macchine cifranti ispirate al sistema Vernam, oltre ai sistemi a rotori che generano sequenze pseudocasuali, come la già citata Lorenz, furono usati sistemi a nastro perforato, che se generati con precedimenti realmente casuali, realizzano un vero cifrario di Vernam e sono quindi inattaccabili. Un esempio di questo genere è la macchina Hagelin RT con modulo a nastro.
Cifrari tipo OTP su carta furono usati dagli americani sempre negli anni della guerra fredda; esempi realizzati dall'americana NSA sono la cifra DIANA che usa una tavola molto simile a quella del Bellaso del 1552, e la cifra ORION che ricalca la cifra Orchema del Tritemio.