El cifrado Vigenère es polialfabético. A diferencia de los cifrados monoalfabéticos, una misma letra puede cifrarse de distintas maneras según su posición en el texto. Para ello utiliza una clave, lo que supuso una evolución importante porque permite resistir en cierta medida al análisis de frecuencia de letras.
El nombre Vigenère del cifrado procede del diplomático Blaise de Vigenère que describió este cifrado, junto con otros, en 1586 en su libro «Traité des Chiffres». Sin embargo, Giovan Battista Bellaso ya había descrito un método parecido. No era exactamente el mismo: primero utilizaba una palabra clave para generar cinco alfabetos que después se combinaban con una segunda clave para cifrar el texto.
El cifrado Vigenère es sencillo. Se utiliza una tabla bidimensional con las letras de A a Z en ambos ejes. En el eje horizontal aparecen las letras del texto claro y en el vertical las letras de la clave. Primero se repite la clave hasta que cada letra del texto tenga una letra de clave correspondiente. Para un texto de siete caracteres y una clave de tres, la clave se repite dos veces y se añade su primera letra. Por ejemplo, con el texto «Vigenere Cipher» y la clave «key»:
La clave se repite tantas veces como sea necesario para cubrir toda la longitud del texto claro. Es importante elegir una clave suficientemente larga: cuanto más corta sea, más se repetirá y más fácil será para un atacante detectar patrones repetidos en el texto cifrado.
Una vez que cada letra del texto claro tiene su letra de clave correspondiente, se puede cifrar mediante la tabla.
| Texto claro | ||||||||||||||||||||||||||||
| 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 | |||
|
K |
||||||||||||||||||||||||||||
| A | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | ||
| 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | ||
Si se conservan todos los espacios, el texto cifrado será «fmeorcbi mmnripke». Esta opción puede modificarse en los ajustes.
Consultar la tabla es sencillo para una persona, aunque lento. El cifrado también puede realizarse mediante sumas. A la posición de la letra del texto se añade la posición de la letra de clave menos 1. En el ejemplo, «V» se cifra con «K»: K ocupa la posición 11 y V la 22. Por tanto, (11 − 1) + 22 = 32. Aplicando módulo 26, 32 % 26 = 6, que es la posición de «F».
El descifrado sigue el proceso inverso. En la tabla se busca la fila de la letra de clave «K», se avanza hasta encontrar la letra cifrada «F» y se sube hasta el alfabeto del texto claro, donde aparece «V». También puede calcularse mediante resta: F está en la posición 6 y K en la 11, por lo que 6 − (11 − 1) = −4. Si el resultado es negativo, se aplica módulo 26: 26 − 4 = 22, la posición de «V».
El cifrado Vigenère dejó de considerarse seguro desde que el mayor prusiano Friedrich Kasiski lo rompió en 1863. Aun así, resulta interesante estudiar los distintos métodos de descifrado. El principio alcanza su máxima seguridad cuando la clave es tan larga como el texto claro o más, es totalmente aleatoria y se utiliza una sola vez. En ese caso recibe el nombre de libreta de un solo uso.
En la mayoría de los casos, sin embargo, la clave es más corta que el texto. Entonces puede utilizarse el método de Kasiski. Charles Babbage también rompió algunos cifrados Vigenère, pero no dejó notas que expliquen su procedimiento. El método de Kasiski busca secuencias repetidas en el texto cifrado para estimar la longitud de la clave. Una vez conocida, se agrupan las subsecuencias correspondientes y se realiza un análisis de frecuencias sobre ellas. Si el texto es suficientemente largo, puede llegar a descifrarse. En el siglo XX, Friedman desarrolló otro método para cifrados polialfabéticos, incluido Vigenère, conocido como índice de coincidencia que permite determinar si un texto se cifró con un método monoalfabético o polialfabético y estimar la longitud de la clave.
Otro método, más lento, es la fuerza bruta. Analizar el texto cifrado para estimar la longitud de la clave permite reducir el espacio de búsqueda. La fuerza bruta prueba todas las posibilidades para una longitud y un alfabeto determinados. Si la clave solo contiene letras minúsculas, la tarea se simplifica aún más.
Para dificultar el descifrado puede utilizarse un alfabeto propio e incluir números o signos de puntuación. Una clave muy larga mejora la seguridad; históricamente se empleaban fragmentos enteros de libros para mensajes especialmente importantes. Aun así, Vigenère no debe utilizarse hoy para proteger información sensible, aunque permaneció sin romper durante unos tres siglos.