Quello che segue è un articolo, da me realizzato, pubblicato dalla EDIS - edizioni specializzate sulla loro rivista ESSECOME.
| 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:
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.
|
||||||||||||||||||||||||||||||||||||
| 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)
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. 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. |
||||||||||||||||||||||||||||||||||||
| 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. 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.
Per avere un generatore di numeri, veramente casuale, bisogna uscire dal
mondo del software ed andare a catturare eventi del mondo reale.
|
||||||||||||||||||||||||||||||||||||
| 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. |
||||||||||||||||||||||||||||||||||||
| 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. 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. |
Ultimo aggiornamento effettuato il 08 - Jan - 1998