Quello che segue è un articolo, da me realizzato, pubblicato dalla EDIS - edizioni specializzate sulla loro rivista ESSECOME.

Breve storia della criptografia (parte seconda)

il contributo degli Ebrei
Nel precedente articolo abbiamo parlato del sistema utilizzato dagli Spartani per proteggere le proprie comunicazioni.

Più o meno contemporaneamente, sull'altra sponda del mediterraneo, degli scribi ebrei usavano un altro semplice metodo di cifratura per la stesura del Libro di Geremia.

il metodo ATBASH  Conosciuto con il nome di ATBASH, il sistema prevede che ogni lettera venga sostituita con un'altra lettera seguendo la seguente tabella:

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

z y x w v u t s r q p o n m l k j i h g f e d c b a

Messaggio:     Il Libro di Geremia

Testo Cifrato: Ro Oryil wr Tvivnrz

Come si vede nella seconda riga le lettere dell'alfabeto sono scritte in ordine inverso, rispetto a quello usuale utilizzato nella prima riga.

Come per il metodo di Cesare a lettera uguale (nel testo cifrato) corrisponde lettera uguale (nel messaggio in chiaro) e quindi da un'analisi della frequenza delle lettere è facile risalire allo schema che governa la sostituzione.
Inoltre, in questo caso, non esiste nemmeno una chiave, in quanto la corrispondenza tra lettere è fissa. Tutti i messaggi sono cifrati nello stesso modo, fornendo al criptanalista una copiosa base di dati su cui lavorare.

i Greci Anche i Greci antichi diedero il loro contributo alla materia.
Polibio Lo storico Polibio (ca. 203-130 ac), introdusse un metodo di codifica delle lettere che ben si adatta alle necessità della criptografia.
Lo scopo era quello di trasmettere dei messaggi a distanza usando delle torce come segnalazione ottica.
Dispose quindi le lettere dell'alfabeto in modo da formare un quadrato (noi lo faremo con l'alfabeto inglese accoppiando i e j)

1 2 3 4 5
1 a b c d e
2 f g h i/j k
3 l m n o p
4 q r s t u
5 v w x y z

Ora ogni lettera può essere sostituita con le sue coordinate.

Quindi la parola AIUTO viene codificata con (1,1) (2,4) (4,5) (4,4) e (3,4), e viene trasmessa dal segnalatore esponendo prima una torcia per mano, poi due torce nella mano sinistra e quattro nella mano destra e così via.  

Non si hanno notizie certe dell'effettiva applicazione di questo metodo, ma dal nostro punto di vista è importante notare due cose - primo è stato indicato un metodo per sostituire ad una lettera una coppia di numeri - secondo se la disposizione delle lettere nella tabella non segue l'ordine alfabetico, ma è casuale abbiamo un vero e proprio sistema di criptografia in cui la chiave è la disposizione delle lettere.

Vedremo in seguito come l'uso di una tabella contenente le lettere dell'alfabeto sia alla base di molti altri metodi di criptografia.

l'imperatore Augusto Torniamo ora all'Impero Romano per parlare di un metodo che si attribuisce all'Imperatore Augusto.

Non si ha la certezza storica di tale paternità, ma il metodo è interessante e vale sicuramente la pena di parlarne.

Si tratta ancora di una cifratura per sostituzione, ma al contrario del metodo utilizzato da Cesare la chiave (cioè la distanza tra la lettera di partenza e quella cifrata) non è fissa, ma dipende dalla corrispondente lettera di un determinato testo prescelto come chiave.

Nel caso dell'Imperatore Augusto si narra che il testo usato per cifrare i messaggi fosse un passo di Omero.

Vediamo con un esempio come funziona questo metodo.
Come testo chiave prendiamo la Costituzione Italiana che recita: L'Italia è una Repubblica democratica fondata sul lavoro......
Come frase da cifrare riprendiamo: "decifralo se ci riesci".
Useremo l'alfabeto inglese di 26 lettere.

Esempio del metodo di Augusto

Se la somma tra il valore del testo ed il valore della chiave supera 26 (equivale a cercare una lettera successiva alla 'z'), si sottrae 26, cioè si rincomincia a contare dalla 'a'. Tecnicamente questa viene chiamata somma modulo 26.

La decifratura del messaggio viene effettuata sottraendo dal valore cifrato il valore della chiave. Se il valore cifrato è minore del valore della chiave, prima si aggiunge 26 al valore cifrato e poi si effettua la sottrazione.

Poiché la sequenza della chiave non è ripetitiva, non è possibile utilizzare i metodi di analisi statistica, basati sulla frequenza con cui compaiono le lettere nella lingua in cui è scritto il messaggio.

L'unica possibilità di attacco, facilmente realizzabile utilizzando le moderne tecnologie, si basa sulla considerazione che il testo utilizzato come chiave è comunque costituito da parole, nel nostro caso, della lingua italiana.
Quindi, con un computer, è possibile provare a decodificare la prima parte del testo cifrato provando tutte le parole contenute nel vocabolario fino ad ottenere una parola, o l'inizio di una parola di senso compiuto.
Oppure si può prendere ogni parola del vocabolario ed usarla come chiave applicandola di volta in volta a parti diverse del testo, e controllando cosa si ottiene.
Dopo aver ricostruito alcune parole utilizzate come chiave, può essere possibile identificare il testo usato e velocizzare così il processo di decifratura.

One-Time Pad Però, se si sostituisce al testo chiave una sequenza casuale di lettere, lunga quanto il messaggio da cifrare, si ottiene un metodo di cifratura, detto One Time Pad, che è impossibile da superare.

Se il metodo scelto per la generazione della chiave è "veramente" casuale allora si può dimostrare matematicamente che tutti i testi cifrati sono equiprobabili, e quindi, come corollario, si ha che dato un testo cifrato tutti i possibili messaggi in chiaro sono equiprobabili.
Da ciò si deriva che senza conoscere la chiave è impossibile decifrare il messaggio.

Il punto fondamentale di questo metodo è l'effettiva casualità della stringa utilizzata come chiave.

Non pensate quindi di usare la funzione rnd(), del vostro linguaggio di programmazione preferito, per implementare questo metodo.
Otterrete solo una sequenza pseudo-casuale di lettere, e farete felice qualunque criptoanalista a cui venisse dato il vostro messaggio da decifrare.

Per avere un generatore di numeri, veramente casuale, bisogna uscire dal mondo del software ed andare a catturare eventi del mondo reale.
Un buon generatore di numeri casuali si può costruire utilizzando il rumore generato da un diodo zener polarizzato in modo inverso.
Oppure, se avete un po' di materiale radioattivo in giro per casa, procuratevi un contatore Geiger (ne avrete comunque bisogno per il successivo lavoro di bonifica), ed assegnate ad ogni lettera un intervallo di tempo.
Ora misurate il tempo tra due click consecutivi emessi dal contatore Geiger e nella vostra tabella individuate la corrispondente lettera.

il Telefono Rosso La bontà di questo metodo è dimostrata dal fatto che è stato usato per criptare le comunicazioni del famoso Telefono Rosso che, durante la guerra fredda, metteva in comunicazione il Presidente Americano con il suo omologo Sovietico.

Solo la necessità di un livello di sicurezza così elevato giustifica l'utilizzo di un tale metodo. Infatti per applicarlo è necessario generare un'adeguata quantità di numeri casuali, scriverli su un qualche supporto e renderli disponibili solo ai due partecipanti alla comunicazione.
Ci sono quindi i problemi di sicurezza connessi alla generazione di numeri veramente casuali, al trasporto di una grande quantità di informazioni (che non può certo essere tenuta a mente) ed all'archiviazione di tali numeri che costituiscono la chiave.

perché One-Time ATTENZIONE: l'algoritmo si chiama One Time Pad per un buon motivo.

Infatti, se la stessa chiave viene usata per due messaggi diversi, la differenza tra i due messaggi cifrati corrisponde alla differenza tra i due messaggi in chiaro.
Si è quindi eliminata la causalità introdotta dalla chiave, che dava il fondamento matematico all'impossibilità di decifrazione.

Esemplificando, e tralasciando per un attimo il fatto che la somma tra il valore del testo ed il valore della chiave è effettuata modulo 26 (cosa che durante la criptanalisi non comporta una grande complicazione), si ha:

Cifrato1 = Testo1 + Chiave

Cifrato2 = Testo2 + Chiave

Sottraendo la prima espressione dalla seconda si ha:

Cifrato1 - Cifrato2 = Testo1 + Chiave - (Testo2 + Chiave) = Testo1 - Testo2

Utilizzando questa informazione, ed un calcolatore, si possono rapidamente provare le combinazioni di lettere, la cui distanza è indicata dalla differenza delle due cifrature, e procedere alla decifrazione.

Indice


L'indirizzo di questa pagina è: www.sancese.com/Cripto2.html

Ultimo aggiornamento effettuato il  08 - Jan - 1998