Indice articoli

Valutazione attuale: 5 / 5

Stella attivaStella attivaStella attivaStella attivaStella attiva
 
Enigma




Software:
Il software utilizzato in questo progetto è Open Source, così che possiate vedere cosa viene eseguito sui vostri computer. Il client è uno script in Python che cerca di connettersi al server per ottenere una workunit (gamma di chiavi). Quando ha successo, lancia il programma (scritto in C) di rottura del messaggio che lavora sulla gamma di chiavi. Il risultato più promettente di questo sforzo è presentato al server, dopo di che il client prende una nuova workunit.
 
Metodo:
Il metodo in questione è solamente un attacco ad un testo cifrato. Questo significa che non hanno bisogno di un pezzo di testo indovinato/conosciuto per una decodifica di successo. 
L'attacco più semplice ad un testo cifrato sarebbe l'uso della forza bruta (brute force). Si potrebbe prendere ogni possibile chiave, decriptare il messaggio e determinare la probabilità dell'aspirante testo in chiaro. Lo spazio delle chiavi di Enigma è troppo grande per questo approccio.
Il metodo utilizzato qui è un misto di forza bruta e un algoritmo di risalita: il programma itera attraverso tutti le possibile impostazione della macchina, eccetto le impostazioni di plugboard (pannello di controllo). Questa è la maggiore scorciatoia dato che le impostazioni di plugboard formano una grande porzione dello spazio delle chiavi. Per ognuna di queste impostazioni macchina il programma utilizza un algoritmo di risalita per trovare le ottimali impostazioni di plugboard. 
Gli algoritmi di risalita cercano di ottimizzare un oggetto, in questo caso le impostazioni di plugboard, cambiando l'oggetto passo dopo passo. Dopo ogni cambio la "bontà" o "idoneità" del nuovo oggetto deve essere determinata da una funzione di punteggio. I cambiamenti che portano ad un oggetto "migliore" vengono conservati.
Qui i cambiamenti si trovano continuamente in prova con nuovi cablaggi del plugboard di Enigma. Dopo ogni cambiamento la funzione di punteggio testa un nuovo cablaggio decifrando il messaggio e provando a determinare quanto strettamente il testo risultante corrisponde alle statistiche del linguaggio naturale. La funzione di punteggio utilizza la Statistica di Sinkov.

 


Accedi per commentare