Il codice di Vigènere



Il codice di Vigenère si basa un'operazione che viene chiamata sostituzione polialfabetica, molto più sicura di una semplice sostituzione monoalfabetica.

Il Vigenère propose l'uso della tavola quadrata, composta da alfabeti ordinati spostati di una lettera. Il metodo Vigenère ebbe una fortuna immediata, era così efficace che per molti anni fu chiamto "il cifrario indecifrabile" e fu molto usato nell'ambito militare anche dopo che gli analisti ne scoprirono il metodo di decrittazione.

La tavola è composta dalla lista decifrante scritta orizzontalmente in testa; le liste cifranti sono solo le 26 sottostanti ciascuna individuata dalla loro prima lettera che fa parte della chiave per cifrare e decifrare. Ecco la tavola:

Figura 2. Tavola di Vigenère
Tavola di Vigenère

Per utilizzare la tavola e cifrare un primo messaggio è necessario dunque scegliere una chiave, ad esempio HTML. A questo punto la tavola appena vista si riduce di qualche riga, cinque per essere esatti, costituite dalla prima e dalle quattro righe che iniziano con le lettere della chiave. La tavola che segue sarà quindi sufficiente per eseguire la cifratura:

Figura 3. Le chiavi
Le chiavi

Per cifrare si dovrà prima di tutto scrivere le lettere del verme sotto a quelle del testo chiaro e cercare, per ogni lettera del chiaro, la corrispondente cifrata nell'incrocio tra la colonna individuata dalla lettura chiara (quelle della prima riga) e la linea individuata dalla lettera chiave.

PROVADICIFRATURA
HTMLHTMLHTMLHTML

Nel nostro caso quindi alla prima lettera (P) corrisponde la lettera W, trovata dall'incrocio tra la colonna identificata dalla lettera P e la riga identificata dalla lettera H. Alla seconda lettera (R) corrisponde la lettera K, trovata dall'incrocio tra la colonna R e la riga T. Si continua di questo passo utilizzando la chiave in un ciclo continuo fino a cifrare tutto il testo.

Il risultato finale della cifratura è:

WKAGHWUNPYDLANDL

La forza di questo cifrato sta nel fatto che il numero di chiavi è enorme, quindi gli attacchi praticati con la forza (ad esempio provare tutte le possibili combinazioni) non sono praticabili. Per quasi trecento anni rimase infatti inviolato ma poi cadde di fronte all'analisi del colonnello prussiano Friedrich Kasiski, che nel 1863 pubblicò un libro che conteneva un metodo di decrittazione della tavola di Vigenère e del suo cifrario polialfabetico con chiave ripetuta. Considerando infatti l'esempio precedente:

PROVADICIFRATURA - testo in chiaro
HTMLHTMLHTMLHTML - chiave
WKAGHWUNPYDLANDL - testo cifrato

Le due R del testo in chiaro vengono cifrate la prima con una T la seconda con una M come deve essere in un cifrario polialfabetico. Ma le ultime due A vengono invece cifrate con la stessa lettera, la L. Il motivo è evidente: le due A si trovano a quattro caratteri di distanza l'una dall'altra e quattro è proprio la lunghezza della chiave. Di fatto il codice di Vigenère si riduce qui a cinque codici di Cesare intercalati.

L'attacco di Kasiski si basa quindi sull'osservazione che in un crittogramma alla Vigenère si trovano spesso sequenze identiche di caratteri a una certa distanza l'una dell'altra. Questo avviene evidentemente per il motivo esposto sopra, il fatto cioè di utilizzare ciclicamente la stessa chiave. Se per esempio usando una chiave di quattro lettere come sopra, e si scrive due volte la stessa parola a 20 caratteri di distanza questa sarà cifrata in modo identico essendo 20 un multiplo della lunghezza della chiave che è cinque.

Se allora si individuano tutte le sequenze ripetute (e in un testo lungo o in più testi se ne troveranno molte) allora è pressoché certo che il massimo comune divisore tra le distanze tra sequenze identiche è la lunghezza della chiave, o tutt'al più un suo multiplo. Una volta individuata la lunghezza della chiave (supponiamo sia quattro), il messaggio si riduce a quattro messaggi intercalati, tutti cifrati con un codice di Cesare ed è allora molto facile completarne la decifratura.

La conclusione è che la cifra di Vigenère è affidabile solo quando la chiave è di lunghezza comparabile a quella del testo e viene cambiata molto spesso, cosa che comporta problemi pratici non indifferenti (trasmissione e cambiamento della chiave richiedono un canale di comunicazione assolutamente sicuro).

Ultimi articoli Sicurezza

Nmap: tecniche per evadere un firewall

Vediamo come sfuggire ai controlli di un firewall utilizzando Nmap.

Sfruttare vulnerabilità XSS con BeEF

Usiamo BeEF per automatizzare lo sfruttamento di vulnerabilità Cross...

Trojan Flashback: rimuoverlo da Mac OS X

Individuiamo e rimuoviamo il trojan Flashback da Mac OS X

Individuare vulnerabilità in Joomla con JoomScan

Usiamo JoomScan per verificare la sicurezza di Joomla e la presenza...

XSS: attacchi avanzati

Approfondiamo le vulnerabilità Cross Site Scripting analizzando...

Altri articoli

Guide Sicurezza

Guida SQL Injection con Sqlmap

Scopriamo se le nostre applicazioni web sono vulnerabili alle SQL...

Guida sicurezza applicazioni Web

Le tecniche di attacco più comuni, i metodi per verificare la...

Guida Sicurezza wireless

Quali sono i pericoli di sicurezza di una rete senza filo e quali...

Altre guide

Newsletter @Sicurezza

Ogni lunedì, direttamente nella tua e-mail: approfondimenti e bollettini su virus, vulnerabilità e sicurezza informatica.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto