Sei sulla pagina 1di 40

Codice linguae historia

By

Mirko Corpo

L’arte del linguaggio in codice


Prefazione
Ciao a tutti, sono Mirko Corpo.
In questo piccolo libro andremo a
spiegare come comunicare con una
persona senza che gli altri
capiscano il significato.
Sin dagli antichi egizi usavano
scrivere e comunicare tra loro senza
farsi capire.
Già nel 1900 a.C. i faraoni
utilizzavano geroglifici diversi da
quelli standard per comunicare con
i propri generali e 4.000 anni dopo
gli americani, durante la Seconda
guerra mondiale, arruolavano
indiani Navajos come operatori
radio centinaia e grazie alla loro
incomprensibile lingua rendevano
le comunicazioni militari sicure
anche in caso di intercettazione da
parte dei giapponesi.
STORIA
Cos’è la crittografia

La criptografia (o crittografia). Il
termine deriva dal greco, dall'unione
delle parole kruptòs (nascosto) e
gramma (scrittura), perciò scrittura
nascosta. La criptografia è l'arte di
parlare o scrivere senza che nessuno
capisca.
La crittografia è antichissima e nasce
con la
necessità di mandare messaggi senza
essere capiti
dai nemici.
- gli Ebrei avevano il codice atbash;
- gli Spartani avevano la scital
- Gaio Giulio Cesare inventò il cifrario di
Cesare
La storia della crittografia moderna
inizia con la stesura del De cifris di Leon
Battista Alberti, che per primo insegnò
a cifrare per mezzo di un disco cifrante
con un alfabeto segreto da spostare ad
libitum ogni due o tre parole. Anche il
tedesco Tritemio previde una forma di
cifra polialfabetica, facendo scorrere
l'alfabeto ordinato di un posto ad ogni
lettera del chiaro (come si definisce in
gergo il testo non criptato). Nel 1526
Jacopo Silvestri pubblicò l'Opus novum,
considerata una delle prime opere su
questo argomento. Ma il vero progresso
nella cifratura polialfabetica è stato
compiuto dal bresciano Giovan Battista
Bellaso, che ha inventato la tecnica di
alternare alcuni alfabeti segreti formati
con parola chiave sotto il controllo di
un lungo versetto chiamato
contrassegno. La sua prima tavola a 11
alfabeti reciproci, uscita nel 1553, fu
ripubblicata dal napoletano Giovanni
Battista Della Porta dieci anni più tardi
e ne prese il nome grazie alla notevole
diffusione che ebbe il suo trattato De
furtivisliterarumnotis. Il francese
Vigenère utilizzò poi il versetto per
cifrare ciascuna lettera con la sua
tavola ad alfabeti regolari identica a
quella del Tritemio e che oggi porta il
suo nome. Il suo sistema è stato
considerato indecifrabile per tre secoli,
finché nel 1863 il colonnello prussiano
Friedrich Kasiski non pubblicò un
metodo per "forzarlo", chiamato Esame
Kasiski.

Qualsiasi sia il sistema crittografico


utilizzato, la legge fondamentale sul
corretto uso di tali tecniche fu scritta da
Kerckhoffs ("Legge di Kerckhoffs") nel
suo libro del 1883 La
CryptographieMilitaire e di seguito
riportata: «La sicurezza di un
crittosistema non deve dipendere dal
tener celato il crittoalgoritmo. La
sicurezza dipenderà solo dal tener
celata la chiave.»

Nel 1918 Gilbert Vernam maggiore


dell'esercito statunitense e tecnico
all'AT&T Bell, perfezionò il metodo di
Vigenère proponendo l'idea di usare
chiavi segrete casuali lunghe almeno
quanto il messaggio. Successivamente,
nel 1949, Claude Shannon, padre della
teoria dell'informazione, nel lavoro La
teoria della comunicazione nei sistemi
crittografici dimostrò che questo è
l'unico metodo crittografico possibile
che sia totalmente sicuro.

Con il possesso di un sistema


crittografico perfetto, la battaglia
teorica tra crittografia e crittoanalisi si
è risolta con una vittoria della prima
sulla seconda. Ipotizzando di voler far
uso di questa insuperabile protezione,
restano però aperti molti problemi di
ordine pratico. Bisogna infatti
soddisfare gli stringenti requisiti del
cifrario di Vernam: chiave lunga quanto
il messaggio e mai più riutilizzabile.
Tuttavia si hanno notizie di utilizzi di
questo cifrario in ambiente militare
(comunicazione con le spie: si veda a
proposito One Time Pad), o per la
protezione delle comunicazioni del
telefono rosso tra Washington e Mosca
durante la guerra fredda. Anche il
cifrario trovato nel 1967 sul corpo di
Che Guevara è un'applicazione del
cifrario di Vernam.

TIPOLOGIE
Ci sono 3 tipi di crittografia:
• crittografia simmetrica, consiste
nell’uso di un’ unica chiave per
proteggere il messaggio e per renderlo
leggibile. Il problema era
far sapere al destinatario la chiave*
senza farla scoprire.
• crittografia asimmetrica, possiede 2
chiavi diverse per scrivere
e per decifrare il messaggio: la chiave
per scrivere può essere
vista da chiunque, mentre quella per
decifrare è conosciuta solo
dal destinatario, senza il bisogno di
scambiarsele.
• crittografia quantistica si basa sulla
meccanica quantistica** al
momento dello scambio della chiave in
modo che se qualcuno la
intercettasse mittente e destinatario lo
saprebbero subito.
* La chiave è una specie di password
** La meccanica quantistica è lo studio
del comportamento della materia
APPLICAZIONI
Nella crittografia moderna sono diffuse
soprattutto nell’
ambito informatico e delle comunicazioni,
in entrambi i casi è necessario lo scambio di file
per
impedirne la visione ad altri. Alcuni software che
usano la
crittografia sono telegram e whatsapp .
Cifrario di Cesare
il cifrario di Cesare è uno dei più antichi
algoritmi crittografici di cui si abbia
traccia storica. È un cifrario a
sostituzione monoalfabetica in cui ogni
lettera del testo in chiaro è sostituita nel
testo cifrato dalla lettera che si trova un
certo numero di posizioni dopo
nell'alfabeto. Questi tipi di cifrari sono
detti anche cifrari a sostituzione o
cifrari a scorrimento a causa del loro
modo di operare: la sostituzione
avviene lettera per lettera, scorrendo il
testo dall'inizio alla fine.

Storia
Il cifrario di Cesare prende il nome da
Giulio Cesare, che lo utilizzava per
proteggere i suoi messaggi segreti.
Grazie allo storico Svetonio sappiamo
che Cesare utilizzava in genere una
chiave di 3 per il cifrario, come nel caso
della corrispondenza militare inviata
alle truppe comandate da Quinto Tullio
Cicerone. Al tempo era sicuro perché gli
avversari spesso non erano neanche in
grado di leggere un testo in chiaro, men
che mai uno cifrato; inoltre non

esistevano metodi di crittanalisi in


grado di rompere tale codice, per
quanto banale.

Conosciamo anche altri che usarono


questo cifrario al tempo di Cesare:
Augusto, suo nipote, lo utilizzava con
chiave 1, ma senza ripartire da sinistra
in caso di fine dell'alfabeto. Quindi,
scriveva B per A, C per B ma usava AA
per Z.

Dalla scoperta dell'analisi delle


frequenze da parte del matematico
arabo Al-Kindi nell'XI secolo circa, tutti
i cifrari di questo tipo sono divenuti
molto semplici da rompere; nessuno è
adatto per comunicazioni sicure allo
stato tecnologico attuale, né lo è stato
negli ultimi 1000 anni. Tuttavia, una
forma di questo cifrario, chiamata
ROT13, è ancora usata oggi per
offuscare parti di un messaggio in
modo da non renderle
immediatamente comprensibili.

I "pizzini" di Provenzano
Un rudimentale sistema di cifratura
basato sul cifrario di Cesare è stato
usato anche da Bernardo Provenzano
per proteggere informazioni rilevanti
scritte nei suoi famosi pizzini, i piccoli
foglietti di carta con i quali il boss della
mafia, durante la sua latitanza,
riceveva informazioni e impartiva
ordini. Il sistema scelto da Provenzano
era abbastanza semplice: si trattava di
sostituire ad ogni lettera il numero
corrispondente alla posizione
nell'alfabeto sommato a 3 e di
comporre così un singolo, lungo
numero. Ad esempio, i numeri
"512151522 191212154" nascondono il
nome di "Binnu Riina": infatti, 5 = 2
(posizione della B) più 3; 12 = 9
(posizione della I) più 3; ecc...

Descrizione
Gaio Giulio Cesare
In particolare, Cesare utilizzava uno
spostamento di 3 posizioni (la chiave
era dunque 3), secondo il seguente
schema nell'alfabeto latino con 26
caratteri:
Lo stesso si può fare con l'alfabeto
italiano, che ha 21 caratteri:

Per cifrare un messaggio, basta


prendere ogni lettera del testo in chiaro
e sostituirla con la corrispondente
lettera della riga testo cifrato. Per
decifrare, viceversa. Ecco un semplice
esempio (coerentemente con l'uso
antico di omettere gli spazi tra le parole
nei papiri, nel testo questi sono omessi;
questo aumenta anche la sicurezza del
cifrario perché toglie un importante
punto di riferimento, cioè la
suddivisione in parole, a chi tentasse la
decrittazione):

Testo in chiaro
attaccaregliirriducibiligalliallaorasesta

Testo crittato
DZZDFFDUHLONNUUNGAFNENONLDO
ONDOODRUDVHVZD

Cifrare (e decifrare) il testo più volte


non migliora la sicurezza, in quanto
una rotazione di A posti seguita da una
di B posti equivale ad una di A + B.
Matematicamente parlando, la
cifratura con le varie chiavi forma un
gruppo.
Disco cifrante
il disco cifrante di Leon Battista Alberti,
descritto nel De cifris intorno al 1467, è
il primo sistema di cifratura
polialfabetica. L'apparecchio si
compone di due dischi concentrici,
rotanti uno rispetto all'altro, contenenti
un alfabeto ordinato per il testo in
chiaro (testo da cifrare) e un alfabeto
disordinato per il testo cifrato (testo
risultante). Permette la sostituzione
polialfabetica con periodo irregolare.
Lo scorrimento degli alfabeti avviene
per mezzo di lettere chiave inserite nel
corpo del crittogramma. I quattro
numeri possono anche servire per
sopracifrare 336 frasi di codice.

Primo esempio di cifratura - Indice mobile

Usa come indice una lettera minuscola


scelta nel cerchio interno (mobile).

Stabilita la g come lettera indice e


avendola giustapposta alla A maiuscola
del cerchio esterno (stabile o fisso), lo
sviluppo dei due alfabeti è il seguente
(vedi figura):

disco stabile: ABCDEFGILMNOPQRSTVXZ1234


disco mobile: gklnprtuz&xysomqihfdbace

Dispaccio da trasmettere: “La guerra si farà”

chiaro: LAGVER2RA
cifratura: AzgthpmamgQ

La a che cifra il 2 è una “nulla” che si


omette nella decifrazione. Il sistema
prevede che le lettere chiave siano
inserite nel crittogramma in maiuscolo.
Dopo aver cifrato alcune lettere si
inserisce nel cifrato a fronte
della g un'altra lettera maiuscola (Q)
ruotando il disco mobile in modo da
ottenere le nuove corrispondenze:
disco stabile: ABCDEFGILMNOPQRSTVXZ1234
disco mobile: ysomqihfdbacegklnprtuz&x

La cifratura continuerà così:

chiaro: SIFARÀ.
cifratura: Qlfiyky.
Secondo esempio di cifratura – Indice fisso
Si sceglie una lettera maiuscola
dell'anello esterno come indice fisso.
In questo esempio all'indice A viene
inizialmente sottoposta la m del
cerchio mobile. Per indicare il cambio
dell'alfabeto si cifra uno dei quattro
numeri.

disco stabile: ABCDEFGILMNOPQRSTVXZ1234


disco mobile: mqihfdbacegklnprtuz&xyso
chiaro: LAGVERA3
cifratura: mcmbufpms

A questo punto la presenza della s, che


cifra il numero 3, segnala la necessità
di spostare i dischi portando la s sotto
la A. La doppia R è omessa per non
facilitare la decrittazione.
disco stabile: ABCDEFGILMNOPQRSTVXZ1234
disco mobile: somqihfdbacegklnprtuz&xy

La cifratura continuerà così:


chiaro: SIFARÀ.
cifratura: sndhsls.

La cifra di Leon Battista Alberti è una


sostituzione polialfabetica con alfabeti
mischiati cambiati saltuariamente in
modo segreto. Nella letteratura
divulgativa questa cifra è a volte
definita Affine Shifts, Keyword shifts,
Caesar shift o meccanizzazione del
cifrario di Vigenère, ma non ha
alcun'affinità con questi sistemi. La
cifratura di Cesare è una sostituzione
semplice, basata sullo spostamento di
un unico alfabeto ordinato rispetto a sé
stesso, con chiave fissa. Una volta
scoperto il valore di una sola lettera, si
conosce anche il valore di tutte le altre.
Anche se l'alfabeto fosse mischiato, si
potrebbe ugualmente arrivare a una
facile soluzione ricorrendo allo studio
delle frequenze letterali. Nella cifra di
Alberti gli alfabeti sono due, mischiati,
e la chiave varia in continuazione
durante il messaggio, quindi la
scoperta di una sola lettera non
permette altri progressi nella
decrittazione e lo studio delle
frequenze non dà risultati perché la
stessa lettera chiara è cifrata sempre in
modo diverso. La cifra Vigenère, oltre
ad essere basata come quella di Cesare
su soli alfabeti ordinati, è risolvibile
dopo aver scoperto il periodo (che è
fisso) per mezzo del Metodo Kasiski, il
che non è possibile con il sistema di
Alberti.
Rullo di Jefferson
Il Rullo di Jefferson noto anche con il nome
di Wheel Cypher, è un cifrario che fu
inventato intorno al 1790 dal presidente
statunitense Thomas Jefferson.

Storia
Lo strumento chiamato rullo di Jefferson fu
inventato, nel periodo tra il 1790 ed il 1793,
quando Thomas Jefferson ricopriva la
carica di segretario di stato, con lo scopo di
codificare messaggi che contenessero
informazioni sensibili.

Durante il periodo della guerra di


indipendenza americana, lo statista
riconobbe quale fosse l'importanza dei
messaggi cifrati. Dal momento che molti
messaggi dovevano essere recapitati, o
tramite un messaggero o tramite l'ausilio di
staffette, ad un destinatario lontano, essi
erano spesso esposti alla vista di occhi
indiscreti.

Per evitare che questi messaggi importanti


potessero essere letti, Jefferson inventò un
metodo molto semplice e ingegnoso per la
loro codifica: il meccanismo era un rullo
composto da 26 dischi di legno infilati su di
una asta metallica sul cui bordo erano
incise le lettere dell'alfabeto in ordine
sparso. Per codificare un messaggio
bastava individuare la lettera da trasporre
sul primo rullo e ruotare in modo opportuno
i rulli, ripetendo l'operazione per ogni
singola lettera.

Affinché il messaggio venisse codificato in


modo corretto era necessario che ad ogni
nuova lettera che lo componeva chi cifrasse
il testo scegliesse un nuovo rullo sul quale
identificare la lettera. Dal momento che
tutti i rulli erano fra loro collegati bastava
quindi che chi codificasse il messaggio
ruotasse i rulli prescelti in modo che le
lettere apparissero lungo la stessa colonna
e scegliesse un'altra colonna dalla quale
ricopiare le lettere. Per decodificare
bastava quindi, notare l'ordine dei rulli
utilizzati per codificare il messaggio,
ruotare gli stessi rulli utilizzati in
precedenza in modo che il messaggio
cifrato apparisse in una colonna verticale.

Il messaggio decodificato appariva perciò


in una delle restanti colonne verticali e lo si
identificava semplicemente dal fatto che
era l'unico messaggio sensato. Affinché il
messaggio potesse essere decifrato con
successo era però necessario che chi
decifrasse il messaggio avesse impostato i
rulli con la stessa sequenza di chi aveva
cifrato il messaggio. In altre parole per
potere decifrare il messaggio bisognava
essere in possesso sia del messaggio cifrato
che della chiave per decifrarlo.

Pare che Jefferson non abbia mai usato


direttamente questo apparecchio, tuttavia il
rullo fu utilizzato dai suoi collaboratori fino
al 1802, per essere riscoperto solo nel 1890
da un funzionario di stato francese.
Sempre sulla base del rullo di Jefferson fu
sviluppata, durante la prima guerra
mondiale, lo strumento di crittografia
chiamato M94, che rimase in servizio fino al
1922.
Funzionamento del rullo in base ad un semplice esempio
Di seguito si illustra il funzionamento del
rullo di Jefferson in base ad un semplice
esempio, dove per semplicità si suppone
che il rullo sia composto di soli 10 dischi, i
quali sono numerati da uno a dieci nel
seguente ordine.
1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2: < KPBELNACZDTRXMJQOYHGVSFUWI <
3: < BDMAIZVRNSJUWFHTEQGYXPLOCK <
4: < RPLNDVHGFCUKTEBSXQYIZMJWAO <
5: < IHFRLABEUOTSGJVDKCPMNZQWXY <
6: < AMKGHIWPNYCJBFZDRUSLOQXVET <
7: < GWTHSPYBXIZULVKMRAFDCEONJQ <
8: < NOZUTWDCVRJLXKISEFAPMYGHBQ <
9: < XPLTDSRFHENYVUBMCQWAOIKZGJ <
10: < UDNAJFBOWTGVRSCZQKELMXYIHP <

Si supponga quindi che la chiave per


decifrare il messaggio sia la seguente
sequenza: 7, 9, 5, 10, 1, 6, 3, 8, 2, 4; e che il
messaggio da cifrare sia "retreat
now" (ritiratevi ora). Per cifrare il
messaggio è sufficiente mettere in
sequenza i dischi nell'ordine prestabilito
dalla chiave e far sì che le lettere del
messaggio da cifrare appaiano nella prima
colonna (vedi immagine sotto). A questo
punto basta scegliere una tra le restanti
colonne e copiare le lettere nello stesso
ordine (nel caso preso in esame quindi la
settima colonna).

7: < R AFDCE O NJQGWTHSPYBXIZULVKM <


9: < E NYVUB M CQWAOIKZGJXPLTDSRFH <
5: < T SGJVD K CPMNZQWXYIHFRLABEUO <
10: < R SCZQK E LMXYIHPUDNAJFBOWTGV <
1: < E ZWAXJ G DLUBVIQHKYPNTCRMOSF <
6: < A MKGHI W PNYCJBFZDRUSLOQXVET <
3: < T EQGYX P LOCKBDMAIZVRNSJUWFH <
8: < N OZUTW D CVRJLXKISEFAPMYGHBQ <
2: < O YHGVS F UWIKPBELNACZDTRXMJQ <
4: < W AORPL N DVHGFCUKTEBSXQYIZMJ <

Per decifrare il messaggio è pertanto


sufficiente essere in possesso della chiave 7,
9, 5, 10, 1, 6, 3, 8, 2, 4 secondo la quale
ordinare i dischi del rullo e ricevere il
messaggio da decifrare:OMKEGWPDFN.
Mettendo i dischi nel ordine prestabilito e
ruotando i singoli dischi, affinché il
messaggio appaia in una qualsiasi colonna,
basta quindi leggere tutte le restanti
colonne dall'alto verso il basso ed
individuare l'unico messaggio che abbia
senso.
Cifrario di Vigenère

Il cifrario di Vigenère è il più semplice


dei cifrari polialfabetici. Si basa
sull'uso di un versetto per controllare
l'alternanza degli alfabeti di
sostituzione, concetto introdotto per la
prima volta da Giovan Battista Bellaso
ne La cifra del Sig. Giovan Battista
Belaso del 1553.

Pubblicato nel 1586, il cifrario di Blaise


de Vigenère fu ritenuto per secoli
inattaccabile, godendo di una fama in
buona parte immeritata essendo molto
più debole di altri cifrari polialfabetici
precedenti, quali il disco cifrante
dell'Alberti, o le cifre del Bellaso. Una
fama che è durata per molti anni anche
dopo la scoperta del primo metodo di
crittanalisi da parte di Charles
Babbage, e la successiva
formalizzazione da parte del maggiore
Friedrich Kasiski: il Metodo Kasiski del
1863.
Il metodo
Il metodo si può considerare una
generalizzazione del cifrario di Cesare; invece di
spostare sempre dello stesso numero di posti la
lettera da cifrare, questa viene spostata di un
numero di posti variabile ma ripetuto,
determinato in base ad una parola chiave, da
concordarsi tra mittente e destinatario, e da
scrivere ripetutamente sotto il messaggio,
carattere per carattere; la chiave era detta anche
verme, per il motivo che, essendo in genere molto
più corta del messaggio, deve essere ripetuta
molte volte sotto questo, come nel seguente
esempio:

Testo in chiaro - RAPPORTOIMMEDIATO


Verme - VERMEVERMEVERMEVE
Testo cifrato - MEGBSMXFUQHIUUEOS

Il testo cifrato si ottiene spostando la


lettera chiara di un numero fisso di
caratteri, pari al numero ordinale della
lettera corrispondente del verme. Di
fatto si esegue una somma aritmetica
tra l'ordinale del chiaro (A = 0, B = 1, C =
2...) e quello del verme; se si supera
l'ultima lettera, la Z, si ricomincia dalla
A, secondo la logica delle aritmetiche
finite.
Il vantaggio rispetto ai cifrari
monoalfabetici (come il cifrario di
Cesare o quelli per sostituzione delle
lettere con simboli/altre lettere) è
evidente: il testo è cifrato con n alfabeti
cifranti. In questo modo, la stessa
lettera viene cifrata (se ripetuta
consecutivamente) n volte; ciò rende
quindi più complessa
la crittoanalisi del testo cifrato.
Si può usare ovviamente una funzione
matematica per la criptazione e
decriptazione; in entrambe useremo
sempre le stesse lettere:
Numero prima lettera del cifrario (A) = 0
Numero ultima lettera del cifrario (Z) =
25
L = Lunghezza del cifrario = Numero
elementi dell'insieme (26)
a = Numero della lettera della parola in
Chiaro (0-25)
b = Numero della lettera della parola
Chiave/Verme (0-25)
c = Numero della lettera della parola
Criptata (0-25)
Per criptare: n = a + b (mod 26)"
Per decriptare: n = c - b + 26
r [parte intera del numero] = n / L
F(x) = n - ( L * r ) = Numero della lettera
della parola in Chiaro/Criptata (0-25)
La funzione si basa semplicemente
sulla somma/sottrazione dei numeri
delle lettere e dividere per
la lunghezza del cifrario per ottenere il
numero della lettera desiderata. Per
ottenere SEMPRE un numero n positivo
anche per la decriptazione, in quanto
una sottrazione, basta ricorrere al
semplice aritificio di aggiungere 26, in
quanto verrà poi eliminato grazie ad r.
Esempio di criptazione con le prime
due lettere dell'esempio testo/chiave
precedente.
L = 26
a[R] = 17
b[V] = 21
n = 17 + 21 = 38
r = 38 / 26 = 1,461... = 1
F(x) = 38 - ( 26 * 1 ) = 38 - 26 = 12
F(12) = M
---------------------------------------------------------
L = 26
a[A] = 0
b[E] = 4
n=0+4=4
r = 4 / 26 = 0,153... = 0
F(x) = 4 - ( 26 * 0 ) = 4 - 0 = 4
F(4) = E
Esempio di decriptazione con le prime due
lettere dell'esempio testo/chiave
precedente.
L = 26
b[V] = 21
c[M] = 12
n = 12 - 21 + 26 = 17
r = 17 / 26 = 0,653... = 0
F(x) = 17 - ( 26 * 0 ) = 17 - 0 = 17
F(17) = R
---------------------------------------------------------
L = 26
b[E] = 4
c[E] = 4
n = 4 - 4 + 26 = 26
r = 26 / 26 = 1 = 1
F(x) = 26 - ( 26 * 1 ) = 26 - 26 = 0
F(0) = A
La tavola di Vigenère
La tavola di Vigenère
Per semplificare la cifratura, Vigenère propose
l'uso della seguente "matrice" quadrata,
composta da alfabeti ordinati e spostati. Se si
vuole cifrare, con la chiave dell'esempio
precedente, la lettera "R" della
parola rapporto basterà trovare la lettera "R"
nella prima riga, individuando la colonna
relativa. Basterà poi trovare la "V" di "verme" nella
prima colonna per trovare la riga, individuando,
tramite l'incrocio, la lettera corretta da usare.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
Come si decifra il messaggio
Chi riceve il messaggio per decifrarlo
deve semplicemente usare il metodo
inverso (sottrarre invece che sommare);
riferendosi all'esempio di sopra si avrà:

Testo cifrato - MEGBSMXFUQHIUUEOS


Verme - VERMEVERMEVERMEVE
Testo chiaro - RAPPORTOIMMEDIATO

Cifrario di Vernam
Il cifrario di Vernam è un sistema
crittografico basato sul cifrario di Vigenère,
al quale aggiunge il requisito che la CHIAVE
DI CIFRATURA sia lunga quanto il testo e non
riutilizzabile (per questo viene spesso
chiamato OTP, acronimo per l'inglese One
Time Pad (OTP), letteralmente "blocco
monouso", cfr. immagine).

Il cifrario di Vernam è l'unico sistema


crittografico la cui sicurezza sia
comprovata da una dimostrazione
matematica e per questo si è guadagnato il
titolo di "cifrario perfetto". La prima
dimostrazione della sua inviolabilità fu
pubblicata nel 1949 da Claude
Shannon nell'articolo La teoria della
comunicazione nei sistemi crittografici.
Si può facilmente capire quanto sia
scomodo distribuire in modo sicuro chiavi
di tali dimensioni. Ciò nonostante il cifrario
di Vernam è stato utilizzato per le
comunicazioni con le spie, che venivano
equipaggiate di taccuini (pad in inglese)
contenenti una lunga chiave per ogni
pagina, da poter strappare e gettare una
volta utilizzata (one time, ovvero "un solo
uso").
La sua forma più classica è quella in cui la
chiave ha la stessa forma del testo (a ogni
lettera viene associato il numero
corrispondente A=0 B=1 C=2) e che sfrutta
l'operazione di somma circolare (quella per
cui dopo la lettera Z c'è di nuovo la lettera A,
quindi A+C=0+2=2=C, B+C=1+2=3=D,
Z+C=25+2=27->1=B, Z+Z=25+25=50->24=Y).
Testo in chiaro: C I A O
Chiave: A J R F
------------------------
Testo cifrato: C R R T

È tuttavia molto diffusa, specialmente


nell'ambiente informatico, la forma che fa
utilizzo dell'operazione
logica XOR (disgiunzione esclusiva), che del
resto non è altro che l'addizione circolare
dei singoli bit.
È importante ribadire che questo tipo di
chiave deve essere lunga quanto il
messaggio che cifra e può essere utilizzata
una sola volta, pena la perdita della validità
delle ipotesi iniziali e la riduzione da
sistema "inattaccabile" a sistema
"facilmente attaccabile" dal Metodo
Kasiski , una specializzazione del metodo
crittanalitico di analisi delle frequenze.

L'apice della tecnica OTP


Probabilmente l'apice del modello di
cifratura a chiave infinita è stato raggiunto
durante la guerra fredda. Il sistema si
basava su di un cifrario di parole
rappresentato da numeri a 4 cifre,
accorpate poi in gruppi di cinque cifre e
sommate ad un numero casuale. Se l'ultimo
gruppo di accorpamento a cinque cifre non
è completo (cioè ha meno di 5 cifre), la
sequenza doveva essere completata a
destra con degli zeri (es. 123 => 12300).
Es 1. Cifrario 1024 = cane, 1056 = gatto, 2345
= lavoro, (spazio bianco) = 3000, (punto) =
4000, etc..
Il cifrario era a disposizione sia del
ricevente che del mittente, così come la
sequenza dei numeri casuali utilizzati (che
venivano tabulati su pagine numerate e il
primo gruppo di cifre del codice cifrato
trasmesso rappresentava proprio i numeri
di pagine e dunque la sequenza dei numeri
casuali).

In tutto il processo è fondamentale, come


detto, utilizzare una ed una sola volta una
data sequenza di numeri casuali per cifrare
i messaggi.
Es. del meccanismo di accorpamento da 4 a
5 cifre:
1. partiamo dalla frase "canegattolavoro ."
2. trasformiamo la frase attraverso il cifrario:
10241056234530004000
3. accorpiamo le cifre in gruppi di 5: 10241
05623 45300 04000

La sequenza dei numeri casuali utilizzata andrà sommata ai gruppi di 5


cifre precedentemente preparati partendo dal cifrario.
Es. Ipotizziamo di avere la sequenza di numeri casuali : 45693, 89765, 77746,
93486
Riprendendo la sequenza dell'esempio precedente facciamo la somma dei
numeri senza riporto:

Derivato da cifrario 10241 05623 45300 04000


Numeri casuali 45693 89765 77746 93486
Risultato (somma senza riporto) 55834 84388 12046 97486

A questo punto il codice è cifrato, ma i


sovietici fecero un passo ulteriore con il solo
scopo di facilitarne la trasmissione via
TELEFAX, ovvero associarono una lettera ai
numeri da 0 a 9. Dunque la forma finale del
messaggio era una sequenza di gruppi di 5
lettere.
È facile dimostrare che questo è un cifrario
perfetto quindi è matematicamente
indecifrabile. In moltissimi anni di ricerca
(all'incirca 20 – progetto Venona) gli
americani riuscirono a decifrare solo una
minima parte dei messaggi registrati (sino
all'apertura degli archivi del Cremlino) e
solo perché i mittenti utilizzarono per più di
una volta le sequenze di numeri casuali, o
perché sequenze delle stesse furono
sequestrate a spie arrestate.
I sovietici erano talmente sicuri di questo
sistema che trasmisero i messaggi "in
chiaro", ovvero senza sovracifrature. È
proprio attraverso queste trasmissioni che i
segreti della bomba atomica filtrarono
dall'Ovest all'Est. La decifrazione del
messaggio è semplicissima e si fonda sul
processo inverso a quello sin qui
presentato, ovvero si devono sottrarre i
numeri cifrati alla sequenza casuale di
numeri utilizzati nella cifratura e, nel caso
la sottrazione dia un valore negativo,
bisogna sommare il valore 10. Infine,
bisogna riaggregare le cifre in gruppi di 4
per poi utilizzare il cifrario per identificare
la parola.
Es. Utilizziamo la cifratura della frase
inizialmente proposta e la relativa sequenza
di numeri casuali. Trattiamo
singolarmente, come esempio, un paio di
cifre:

Numero di cifratura 5 5 8 3 4
Numero casuale 4 5 6 9 3
Primo Risultato Sottrazione 1 0 2 -6 1
Eventuale somma di 10 per valori negativi +10
Risultato finale 1 0 2 4 1
-----------------------------------------------------------------------------------------------------------
Numero di cifratura 1 2 0 4 6
Numero casuale 7 7 7 4 6
Primo Risultato Sottrazione -6 -5 -7 0 0
Eventuale somma di 10 per valori negativi +10 +10 +10
Risultato finale 4 5 3 0 0

Infine otteniamo di nuovo


"10241056234530004000" che, suddiviso in
gruppi di 4 cifre, diventa 1024 1056 2345
3000 4000. Dal cifrario si riottiene la frase
completa. Per il meccanismo di
riempimento di zeri a destra, di cui abbiamo
parlato in precedenza (123 => 12300), nel ri-
accorpamento a 4 cifre potrebbe capitare di
avere una serie di zeri come ultima cifra. Si
intende che questa va semplicemente
ignorata.