Storia della crittografiaCifrari polialfabetici
Le cifre OTP
Il cifrario di Vernam - Il codice Baudot - La macchina Lorenz - Hagelin RT

Le cifre polialfabetiche classiche (Alberti, Tritemio, Bellaso, Vigenère ...) consistevano di due parti: 1) una tabella in genere quadrata per combinare tra loro due lettere, una del testo chiaro e una della chiave ottenendone un'altra, quella del testo cifrato; 2) una chiave (detta anche contrasegno, verme ...) più o meno lunga.

Per lo più si usavano chiavi corte e facili da ricordare a memoria, e questa era una debolezza doppia, la brevità era una debolezza, e la facilità a ricordarsi era anche una debolezza, perché spesso era anche una facilità a intuirsi da parte del crittanalista che avesse ricuperato qualche lettera della chiave.

Per rendere più sicuri questi sistemi c'erano queste possibilità: 1) usare chiavi più lunghe, al limite infinitamente lunghe; 2) usare chiavi meno prevedibili, al limite sequenze di caratteri estratti a caso; 3) complicare o disordinare la tabella, ovvero l'operazione; 4)sovracifrare, cioè cifrare una seconda volta con un altro sistema (p.es. una trasposizione).

Solo nel XX secolo si impose l'idea che i punti fondamentali sono 1) e 2), nel 1919 Gilbert S. Vernam propose e brevettò un sistema che usava come operazione per combinare chiaro e chiave, un'operazione binaria (o logica) semplicissima, l'addizione modulo 2 ossia la XOR logica, definita da una tabella minima 2x2, e come chiave una sequenza illimitata e assolutamente casuale di 0 e 1. e Claude Shannon dimostrò nel suo articolo del 1949 che una cifra siffatta è indecifrabile con metodi statistici ed è quindi un cifrario perfetto.

È realizzabile un tale cifrario perfetto?

Il punto 1) chiave di lunghezza infinita, potrebbe apparire irrealizzabile, nessuno può scrivere una chiave infinita, ma si può generare una chiave casuale molto lunga, sufficiente per scrivere messaggi per qualche mese, restando d'accordo per generarne una nuova alla fine della precedente; in tal modo nessuna parte della chiave sarà mai riutilizzata e quindi la chiave è di fatto infinita. Cifrari di questo tipo sono per questo detti one time pad, sequenza da usare una sola volta,

Il punto 2) chiave assolutamente casuale è invece il più spinoso; realizzare una sequenza di 0 e 1, o altri segni, che sia assolutamente casuale ossia imprevedibile, è impresa quanto mai insidiosa.

Nella maggior parte dei casi si ripiega su sequenze pseudocasuali generate cioè da un qualche dispositivo meccanico o da un algoritmo.

1ª Le macchine a rotori del Novecento

La prima strada fu quella su cui erano basate molte macchine cifranti a cavallo della II guerra mondiale: un sistema di rotori che cerca di realizzare una sequenza di caratteri con distribuzione il più possibile simile a una casuale; trattandosi di un dispositivo meccanico produrrà comunque una sequenza di periodo finito, dopo di ché si ripeterà identicamente, e a quel punto cessa di essere un OTP, ha un periodo, dopo il quale ricomincia da zero e quindi utilizza la medesima sequenza una seconda volta, anzi n volte se si completa il periodo più volte; con un periodo molto molto lungo si avrà comunque un buon livello di sicurezza. Ma di fatto la chiave non è casuale, la vera chiave qui sono i rotori, la loro disposizione e il meccanismo di avanzamento; e se il nemico riesce in qualche modo a ricostruire tutte queste proprietà, può decrittarne i crittogrammi, come avvenne nella II guerra mondiale per la macchina Lorenz che fu decrittata dai crittanalisti inglesi di Bletchley Park.

2ª Numeri pseudocasuali generati da algoritmi

La seconda strada è quella degli algoritmi, le varie funzioni random presenti in molto linguaggi e ambienti informatici; anche questi sono in effetti processi deterministici, e quindi pseudocasuali; possono essere peraltro di qualità diversa e quindi fornire livelli diversi di sicurezza,

3ª Veramente casuale?

La terza strada, quella ottimale, sarebbe di generare la chiave con un meccanismo assolutamente imprevedibile, come l'estrazione di un numero dalla ruota del lotto, dove il movimento caotico delle palline è troppo complicato per potersi prevedere quale pallina finirà estratta. Ma la lunghezza richiesta delle chiavi rende improponibile questa soluzione che richiederebbe tempi molto lunghi anche solo per generare una chiave di mille numeri.

Una soluzione che sembra generare bit in modo davvero imprevedibile è quella usata dalla macchina Hagelin RT (RT = Random Tape) che usava nastri perforati in codice Baudot, con un procedimento basato su un fenomeno chimico caotico, con risultati appunto imprevedibili.


Riferimenti bibliografici
Siti e pagine web

Valido HTML 4.01!