Vigenere


by tonycrypt

Il codice di Vigenere, ideato da Blaise De Vigenere nel 1586, può essere considerato un caso particolare del sistema Vernam (che fu ideato da G.S.Vernam nel 1926). Si tratta di un codice a sostituzione polialfabetica, che può essere attaccato col metodo Kasiski. Da un lato il sistema Vigenere può considerarsi un’estensione del codice di Cesare, dove invece di shiftare tutte le lettere di una stessa quantità si effettua l’offset in base alla chiave. In altre parole si effettua la somma dei valori numerici corrispondenti alle lettere del testo in chiaro e a quelle della chiave, per esempio assegnando i numeri (a partire dallo zero) alle lettere alfabeticamente ordinate. Ecco un esempio:

Chiave: FULMINE

Messaggio in chiaro: TANTISALUTIATUTTI

Messaggio cifrato: YUYFQFEQOEUIGYYNT

Alla lettera F della chiave corrisponde il numero 5 (a=0, b=1, ….f=5, …..). Alla lettera T del messaggio corrisponde il numero 20. La somma dei due numeri è 25, a cui corrisponde la lettera y. Si procede allo stesso modo per le altre lettere, riprendendo la chiave dall’inizio se dovesse risultare più corta del testo in chiaro.
Da un altro punto di vista, il codice di Vigenere può essere considerato una restrizione, un caso particolare del sistema Vernam. Mentre il Vernam impone che la lunghezza della chiave sia almeno pari a quella del testo in chiaro, nel Vigenere la chiave è più corta del testo da cifrare e quindi deve essere ripetuta. E questo è proprio il tallone d’Achille del Vigenere, perchè lo rende vulnerabile ad attacchi crittoanalitici di vario genere. Il Vernam è invece un algoritmo perfetto, inviolabile, sempre che la chiave sia generata in modo casuale.

Per velocizzare le operazioni di cifratura-decifratura, Vigenere introdusse una semplice tavola costituita da righe di lettere alfabeticamente ordinate, shiftate di 1 posto riga per riga:

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
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 A
C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R S T U V W X Y Z A B C D E F G H I J K L M N O P S
S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z 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

Supponendo di voler cifrare (vedi esempio sopra) la lettera T, con la chiave F. L’elemento cifrato è quello appartenente alla colonna che inizia per T ed alla riga che inizia per F. Otteniamo così l’elemento y. E’possibile testare in modo automatico questo tipo di crittografia utilizzando il modulo sottostante. Si tratta di un semplice esempio che elabora solo le 26 lettere dell’alfabeto, senza far distinzione tra maiuscole e minuscole. Nel caso in cui la chiave dovesse essere lunga quanto il testo da cifrare, allora state passando dal Vigenere al Vernam.

Prova tu stesso il cifrario Vigenere


Leave a Reply

You must be logged in to post a comment.