Storia della crittografiaCifrariCifrari polialfabeticiIl cifrario di Vernam
Bellaso + Vernam = DIANA
Tavola Bellaso 1552 - Tabula recta del Tritemio - Cifra ORION
Cifra interattiva
testo chiaro
One Time PadBlocco indicatore a pos. 160 HJFCY QJWSJ CRUUH HGFEA YCFZN JPYNL OVVUY TLHPD RSVMM CTTIY TGAYG OIVNW HBRCW PWHXM LPEGB RJVKR TDYUC EILAV IHXZK TPHBN UMCZS DQBYB TSFSM IWUTX PCFMC PGRXH FRTHQ MLHOK IHDNZ PWWJQ TZSZM UOSMM ARDUZ UGLBU VKCYX COUYY KSXCR KWGCJ TDAWX ZRDKS YGCAF ACTVB RFUPH MZESC NLFOI DOAGZ TEFWF LXHES JWXDM FPMKI PXUVM DYADE ZWJFS OQPWV HGRFK EKZQU IGSCB FFZFJ EFFOK YDAOA VWGNB QSMQJ HYPAB RFGRL PVQVK AUOBJ OXFVL HMDUD NBCCC DTIJK TZGKV RLQFM ZUKEQ VMDZG GMIIP KLISV TMVAW RSHHX UGSEK IZXMZ DSLLB AWNJP IDBED YVWGC TAIME TVEQH DUZPF BPCOY RWCTB GRWCX ZVYHI CBDHS KKMKZ SLPUZ OMWQF XWXUY VTUTB DWDGD VQOIB OAMDV MRHII MGFKB DFUYY WBUZI YUZMD AADME YZWGH ESOJD PNIKM HGOCF WAAVN DVNHI SFHOM PTEDD ITRQD DXJRA POAQJ NUFBB OUHWI TLBYP FGIWW MZUWR ULGVB QJVVL XKFEG OYSQW HVCQR ZCRUY IPKPL MFUHB GFLLK RAIJQ ERLHH DHKUB IDRTS CFXXN ZDSKP CCQKM GPDSW LWDVQ FEUXY NZDLX QKBIU RLXHW JOLNH HYDLU URZOO XBOAM LRXNA RELOM HYASL HAJKM EEDDT SBVGB HRSEE TWJEL VMJVF VDFEO SJTWM MONHU

chiave da OTP ARDUZ UGLBU VKCYX COUYY KSXCR KWGCJ TDAWX ZRDKS YG testo chiaro ----- ----- IVIET CONGA TTACC HERAN NOQUE STASE RA testo cifrato ARDUZ UGLBU WUPXJ VXSVB WOCVG IZCXD TIJJY IPWXD KT

Cosa vedere?
Tavola nel formato originale, simile a Bellaso 1552
AABCDEFGHIJKLMNOPQRSTUVWXYZ
ZYXWVUTSRQPONMLKJIHGFEDCBA
BABCDEFGHIJKLMNOPQRSTUVWXYZ
YXWVUTSRQPONMLKJIHGFEDCBAZ
CABCDEFGHIJKLMNOPQRSTUVWXYZ
XWVUTSRQPONMLKJIHGFEDCBAZY
DABCDEFGHIJKLMNOPQRSTUVWXYZ
WVUTSRQPONMLKJIHGFEDCBAZYX
EABCDEFGHIJKLMNOPQRSTUVWXYZ
VUTSRQPONMLKJIHGFEDCBAZYXW
FABCDEFGHIJKLMNOPQRSTUVWXYZ
UTSRQPONMLKJIHGFEDCBAZYXWV
GABCDEFGHIJKLMNOPQRSTUVWXYZ
TSRQPONMLKJIHGFEDCBAZYXWVU
HABCDEFGHIJKLMNOPQRSTUVWXYZ
SRQPONMLKJIHGFEDCBAZYXWVUT
IABCDEFGHIJKLMNOPQRSTUVWXYZ
RQPONMLKJIHGFEDCBAZYXWVUTS
JABCDEFGHIJKLMNOPQRSTUVWXYZ
QPONMLKJIHGFEDCBAZYXWVUTSR
KABCDEFGHIJKLMNOPQRSTUVWXYZ
PONMLKJIHGFEDCBAZYXWVUTSRQ
LABCDEFGHIJKLMNOPQRSTUVWXYZ
ONMLKJIHGFEDCBAZYXWVUTSRQP
MABCDEFGHIJKLMNOPQRSTUVWXYZ
NMLKJIHGFEDCBAZYXWVUTSRQPO
NABCDEFGHIJKLMNOPQRSTUVWXYZ
MLKJIHGFEDCBAZYXWVUTSRQPON
OABCDEFGHIJKLMNOPQRSTUVWXYZ
LKJIHGFEDCBAZYXWVUTSRQPONM
PABCDEFGHIJKLMNOPQRSTUVWXYZ
KJIHGFEDCBAZYXWVUTSRQPONML
QABCDEFGHIJKLMNOPQRSTUVWXYZ
JIHGFEDCBAZYXWVUTSRQPONMLK
RABCDEFGHIJKLMNOPQRSTUVWXYZ
IHGFEDCBAZYXWVUTSRQPONMLKJ
SABCDEFGHIJKLMNOPQRSTUVWXYZ
HGFEDCBAZYXWVUTSRQPONMLKJI
TABCDEFGHIJKLMNOPQRSTUVWXYZ
GFEDCBAZYXWVUTSRQPONMLKJIH
UABCDEFGHIJKLMNOPQRSTUVWXYZ
FEDCBAZYXWVUTSRQPONMLKJIHG
VABCDEFGHIJKLMNOPQRSTUVWXYZ
EDCBAZYXWVUTSRQPONMLKJIHGF
WABCDEFGHIJKLMNOPQRSTUVWXYZ
DCBAZYXWVUTSRQPONMLKJIHGFE
XABCDEFGHIJKLMNOPQRSTUVWXYZ
CBAZYXWVUTSRQPONMLKJIHGFED
YABCDEFGHIJKLMNOPQRSTUVWXYZ
BAZYXWVUTSRQPONMLKJIHGFEDC
ZABCDEFGHIJKLMNOPQRSTUVWXYZ
AZYXWVUTSRQPONMLKJIHGFEDCB

Crittografia classica e crittografia moderna e contemporanea, appaiono oggi come discipline che si voltano le spalle, tendendo ad ignorarsi a vicenda; Studiosi, ricercatori e utilizzatori della crittografia contemporanea hanno spesso scarso interesse e solo qualche vaga idea della crittografia classica, tipicamente ridotta alle cifre di Cesare e di Vigenère. Viceversa i cultori della crittografia classica sono spesso, ma non sempre, poco interessati a quella contemporanea.

Pure ogni tanto si trovano curiose somiglianze tra cifre di epoche lontane; qui vediamo come la tabula aversa del Tritemio (1507), la primissima cifra di G. B. Bellaso (1552) ed il cifrario di Vernam (1919) si ritrovino uniti nella cosiddetta cifra DIANA, DIANA cryptosystem, usata dall'esercito degli Stati Uniti, durante la guerra del Vietnam (1965-1975) e anche dopo.

In sostanza la cifra DIANA non è altro che una tavola di liste reciproche tipo Bellaso 1552, che usa come contrasegno una sequenza casuale, detta one time pad perché ovviamente va usata una sola volta, come nel cifrario di Vernam. La lista reciproca serve a riprodurre la simmetria dello XOR del cifrario di Vernam, cosa che ho riassunto nel titolo: Bellaso + Vernam = DIANA.

Si tratta probabilmente di una coincidenza; non risulta dalle fonti e comunque appare poco probabile che i crittografi della NSA conoscessero la cifra di Bellaso o le liste reciproche di inizio XVI secolo. Più verosimile che conoscessero le opere del Tritemio che ebbero una diffusione a stampa molto maggiore, o altre cifre simili.

Matematicamente

Rispetto alla tavola di Bellaso, che aveva le vocali ai primi posti, questa segue solo e rigorosamente l'ordine alfabetico, come la tavola del Tritemio; una comodità operativa perché in tal modo si ha una ulteriore simmetria: ogni gruppo di tre lettere: chiave, chiaro, cifrato, è pienamente intercambiabile, per esempio A DW equivale a D AW e W AD, e questa tavola è detta per questo trigrafica.

Matematicamente considerando gli ordinali delle lettere, $k$ ordinale della chiave, $x$ del chiaro e $y$ del cifrato, intendendo ord('A') = 0; ord('B') = 1 ... ord('Z') = 25, l'operazione corrisponde all'equazione: $$ x + y + k = 25 \pmod{26}$$ o l'equivalente: $$ x + y + k + 1 = 0 \pmod{26}$$ che, risolta rispetto a $y$ (cifrato) dà la formula per cifrare $$ y = 25 - x - k \pmod{26}$$ e, risolta rispetto a $x$ (chiaro) dà la formula per decifrare $$ x = 25 - y - k \pmod{26}$$ e, risolta rispetto a $k$ (chiaro) dà la formula per recuperare la chiave conoscendo chiaro e cifrato $$ k = 25 - x - y \pmod{26}$$ e quindi le procedure di cifra e di decifra coincidono, come nel Vernam.

Si noti poi che è facilissimo recuperare la chiave disponendo di un messaggio chiaro e del corrispondente cifrato; facilissimo ma di nessuna utilità, infatti si tratta di una chiave usata una sola volta (One Time Pad!) che non può dirci nulla sulla chiave usata per un altro messaggio! Beninteso, questo solo se la chiave è realmente casuale, se è generata da algoritmi pseudocasuali, la disponibilità di molte coppie chiaro-cifrato può essere molto utile.

Un militare americano che aveva usato DIANA durante la guerra del Vietnam ricorda quanto fosse facile impararla a memoria: After a while, most of us became so proficient with the system, that we actually learned the deciphering matrix by heart. Un commento che ricorda quel che scrive Bellaso nel 1553: una sola riuolta d’occhio la comprende tutta, сhe potrebbesi ancora in breuissimo spatio di tempo imparare a mente.

Nonostante questa facilità fu usato anche, in alternativa alla tavola, un disco fatto di due cerchi girevoli, che si trova ancora in commercio come souvenir o per gioco.

Procedura di cifra (interattiva)

L'operazione di cifratura consiste nello scrivere come chiave la sequenza casuale one time pad (da usare una sola volta, usa e butta) a iniziare dopo un blocco sorteggiato, che viene trasmesso com'è senza essere cifrato, come segnaposto (vedi sotto, in questo caso è ARDUZ UGLBU) e sotto di questa il testo chiaro; combinare quindi la lettera casuale con la lettera del testo chiaro (che in questo caso è I Vietcong attaccheranno questa sera), usando la tavola visibile a destra, ottenendo così la lettera cifrata, oppure la formula su ricordata.

chiave da OTP ARDUZ UGLBU VKCYX COUYY KSXCR KWGCJ TDAWX ZRDKS YG testo chiaro ----- ----- IVIET CONGA TTACC HERAN NOQUE STASE RA testo cifrato ARDUZ UGLBU WUPXJ VXSVB WOCVG IZCXD TIJJY IPWXD KT

A destra la tavola predetta; si potrebbe usare anche la forma quadrata, che è identica alla tavola inversa del Tritemio del 1507, salvo il fatto che Tritemio usava un alfabeto di 24 lettere(); non è infatti necessario ripetere l'alfabeto ad ogni riga, ma è comunque comodo per evitare errori di allineamento a vista. Si trova anche in commercio una versione su dispositivo di due dischi rotanti.

La procedura di decifra è la stessa, essendo la lista simmetrica; prima però occorre cercare nel foglio OTP i primi due blocchi, dieci lettere, e usare i blocchi successivi come chiave.

Sicurezza della cifra

In base al teorema di Shannon, una cifra come questa è al 100% indecifrabile a due condizioni: 1) che la sequenza sia veramente casuale; 2) che un OTP non venga mai riutilizzato. La seconda dipende dall'organizzazione del servizio, la prima condizione è molto difficile da rispettare; non so come venissero prodotti gli OTP di DIANA, se era generata da algoritmi pseudocasuali su computer, non era sicura al mille per mille, la sicurezza dipendeva dalla qualità dell'algoritmo usato; se invece era generata da un qualche processo hardware come nella Hagelin RT allora poteve dirsi realmente indecifrabile. Gli OTP in questa pagina sono realizzati usando la funzione pseudocasuale rand(_) del linguaggio PhP, che lo stesso manuale PhP ammette non essere crittograficamente sicura; PhP ne prevede ora una più sicura ma inevitabilmente più lenta e per scopi dimostrativi basta la prima.

In pratica

Come detto la chiave è scritta su un libretto divisa in blocchi di cinque caratteri, pagina dopo pagina; come sempre ce ne saranno due copie identiche per i due corrispondenti. Ad ogni messaggio si continuava, ad esaurimento, a scorrere il libro, mantenendo rigorosamente l'allineamento. Cosa piuttosto problematica: se per distrazione o altro si perde l'allineamento, diventano indecifrabili tutti i messaggi seguenti.

La cifra DIANA usava un metodo ingegnoso per questo: il mittente estraeva a sorte un numero n e andava a copiare i due blocchi al posto n ed n+1, 10 caratteri, che venivano trasmessi, come visto sopra, a inizio messaggio; il chiaro veniva poi cifrato usando il seguito della chiave; il destinatario ricevuto il cifrato cercava nella chiave i primi due gruppi e poi decifrava le lettere rimanenti usando il seguito nella chiave.

Ma qual era la regola effettivamente usata? La principale, se non unica, fonte primaria su DIANA è la serie di conferenze in ambito NSA di David G. Boak del 1973, vedi qui sotto in bibliografia, che è stata resa pubblica (declassified) solo nel 2015, e con alcune parti ancora sbiancate, e tra queste una parte della descrizione di DIANA. Sul web si trova anche un articolo di un militare americano che usò DIANA durante la guerra del Vietnam (vedi riferimenti a fondo pagina). Forse per questo non si trova una regola chiara su come veniva estratto il blocco di 10 lettere? Cercare un blocco di 10 lettere casuali in un grosso libro, appare impraticabile e con diversi pericoli, primo tra tutti quello di riutilizzare parti già usate della chiave, e la cifra non sarebbe più OTP! Sembra più ragionevole estrarre un blocco non troppo oltre l'ultimo blocco utilizzato, per esempio nella stessa pagina o al massimo nella successiva; in tal modo sarebbe assicurato l'allineamento al costo di sprecare i blocchi saltati e inutilizzati.

L'esempio interattivo in questa pagina si limita per ora a sorteggiare i due blocchi iniziali nella prima metà della sequenza OTP che è mantenuta su dimensioni sufficienti per un breve messaggio (massimo 40 lettere).

Ringraziamenti

Ringrazio Silvio Coccaro, medico, cultore dell'informatica e della crittografia, per avermi segnalato questo cifrario.


Riferimenti bibliografici
Siti e pagine web
X Compare solo un rettangolo bianco con la scritta:
Withheld from public release under
§6 of the National Security Act of 1959,
50 U.S.C. 3605 (P.L. 86-36)
= Trattenuto dalla pubblicazione in base al §6 del National Security Act ecc.ecc.
X Solo 24 lettere perché mancavano ancora la j e la v varianti consonantiche di i ed u, introdotte molto dopo il 1507.
X La chiave completa è:
Blocco indicatore a pos. 160
HJFCY QJWSJ CRUUH HGFEA YCFZN JPYNL OVVUY TLHPD RSVMM CTTIY 
TGAYG OIVNW HBRCW PWHXM LPEGB RJVKR TDYUC EILAV IHXZK TPHBN 
UMCZS DQBYB TSFSM IWUTX PCFMC PGRXH FRTHQ MLHOK IHDNZ PWWJQ 
TZSZM UOSMM ARDUZ UGLBU VKCYX COUYY KSXCR KWGCJ TDAWX ZRDKS 
YGCAF ACTVB RFUPH MZESC NLFOI DOAGZ TEFWF LXHES JWXDM FPMKI 
PXUVM DYADE ZWJFS OQPWV HGRFK EKZQU IGSCB FFZFJ EFFOK YDAOA 
VWGNB QSMQJ HYPAB RFGRL PVQVK AUOBJ OXFVL HMDUD NBCCC DTIJK 
TZGKV RLQFM ZUKEQ VMDZG GMIIP KLISV TMVAW RSHHX UGSEK IZXMZ 
DSLLB AWNJP IDBED YVWGC TAIME TVEQH DUZPF BPCOY RWCTB GRWCX 
ZVYHI CBDHS KKMKZ SLPUZ OMWQF XWXUY VTUTB DWDGD VQOIB OAMDV 
MRHII MGFKB DFUYY WBUZI YUZMD AADME YZWGH ESOJD PNIKM HGOCF 
WAAVN DVNHI SFHOM PTEDD ITRQD DXJRA POAQJ NUFBB OUHWI TLBYP 
FGIWW MZUWR ULGVB QJVVL XKFEG OYSQW HVCQR ZCRUY IPKPL MFUHB 
GFLLK RAIJQ ERLHH DHKUB IDRTS CFXXN ZDSKP CCQKM GPDSW LWDVQ 
FEUXY NZDLX QKBIU RLXHW JOLNH HYDLU URZOO XBOAM LRXNA RELOM 
HYASL HAJKM EEDDT SBVGB HRSEE TWJEL VMJVF VDFEO SJTWM MONHU 
X Una pagina esempio del libretto con la chiave OTP, dalla conferenza di David Boak del 1973.
chiave originale
X Per crittografia moderna intendo quella dopo l'invenzione del telegrafo e della radio, che rese la trasmissione delle informazioni molto più veloce ma anche molto più esposta all'intercettazione.
X Per crittografia contemporanea intendo quella dopo l'avvento del computer, che dal 1970 in poi ha portato alla nascita di cifre di concezione del tutto nuova.
X In italiano: “Dopo un po', la maggior parte di noi era così familiare con il sistema, che avevamo di fatto imparato la tabella decifrante a memoria.” Citazione dal sito web di memorie della guerra del Vietnam, Gear of the Vietnam war, articolo del 14 novembre 2005 del sergente Ron Hibbard (congedato).
Evidentemente NSA non rispettava il principio di Kerckhoff e manteneva top secret critiche anche le istruzioni d'uso!
X Numerose cifre basate su tavole quadrate come quella di Tritemio furono proposte nei secoli; la più conosciuta è quella di Vigenère che aggiunse una parola chiave come quella del Bellaso, ma la cifra non era reciproca; Sestri e Beaufort proposero cifre reciproche basate su una tavola simile a quella aversa del Tritemio.