Allá por el siglo XVI un matemático francés llamado Vigènere desarrolló un nuevo método de cifrado que desde entonces recibe su nombre. La particularidad de su método es que un caracter en el texto claro tiene varias formas diferentes de representarse en el texto cifrado (polialfabético) gracias a lo cual queda a salvo de ataques por frecuencia de aparación de caracteres (ver cifra César en http //foro.elhacker.net/index.php/topic,100183.0.html)
El método de Vigènere utiliza una clave y una matriz cuadrada (mismo número de filas que de columnas) para realizar el cifrado y el descifrado. Ambas deben ser conocidas por el emisor y el receptor.
La matriz de Vigènere tendrá tantas filas y columnas como caracteres diferentes tenga nuestro código de caracteres. Las filas contienen el alfabeto desplazado, cada con un desplazamiento respecto a la anterior. Tomemos para nuestros ejemplos la siguiente matriz de Vigènere
|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
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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
En cuanto a la clave, esta será una palabra o conjunto de caracteres tan larga como deseemos. Observar que si elegimos como clave un único caracter estaríamos haciendo un cifrado César.
Para cifrar el texto dividimos el mensaje en grupos de letras tan largos como la clave y los emparejamos con ella. Supongamos que elegimos como clave "DE" y que el mensaje a cifrar es "Tres tristes tigres", tras este primer paso tendríamos:
TR ES TR IS TE ST IG RE S
DE DE DE DE DE DE DE DE D
Ahora vamos letra por letra buscando donde se cruza la columna que se corresponde a la letra del texto claro con la fila que se corresponde a la letra de la clave, y la letra que se encuentre en esa posición será con la que hagamos la sustitución. Según esto, nuestro mensaje quedará cifrado de la siguiente forma:
|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
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
...
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
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|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|d|e
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
...
TR ES TR IS TE ST IG RE S
DE DE DE DE DE DE DE DE D
-------------------------
XW IX XW MX XJ WY ML VJ W
Para descifrarlo conociendo la clave y la matriz solo hay que dividir el mensaje cifrado en grupos del tamaño de la clave y hacer el proceso inverso: Buscar en la fila correspondiente a la letra de la clave cual es la columna en la que se encuentra la letra del texto cifrado.
Este método de cifrado fue considerado inviolable hasta que Friedrich Kasiski, en el siglo XIX, hizo público un ingenioso método de criptoanálisis.
Kasiski propuso que en un mensaje cifrado con Vigènere grupos de letas similares en distinta posición del texto se corresponden con la misma palabra cifrada con la misma porción de clave. En nuestro ejemplo podemos observar como el par "XW" se repite en dos ocasiones y en ambas representa en el texto claro al par "TR".
Dado que la distancia que hay entre grupos de letras similares tiene que ser múltiplo de la longitud de la clave, podemos suponer que la longitud de la clave será igual al máximo común divisor de todas las distancias.
Se divide el mensaje cifrado en grupos de letras del tamaño de la clave que hemos calculado. Las letras de cada grupo que ocupan la misma posición dentro de su grupo han sido cifradas con el mismo alfabeto de sustitución (en nuestro ejemplo las primeras letras de cada grupo han sido cifradas con el alfabeto "D" y las segundas con el alfabeto "E") así que ya podemos lanzar una análisis de frecuencia de caracteres similar al que empleabamos para romper la cifra Cesar.