Cifrado de Vigenère
El cifrado Vigenère es un cifrado basado en diferentes series de caracteres o letras del cifrado del César formando estos caracteres una tabla, llamada tabla de Vigenère, que se usa como clave
El cifrado de Vigenère es un cifrado de sustitución simple polialfabético
El primer cifrado polialfabético fue el llamado cifrado de Alberti, creado por Leone Battista Alberti hacia 1467
Para facilitar los cálculos se aprovechaba de un disco de metal que permitía cambiar fácilmente entre los diferentes alfabetos disponibles
El sistema de Alberti sólo cambiaba entre alfabetos después de muchas palabras, y los cambios se indicaban escribiendo la letra del correspondiente alfabeto en el mensaje cifrado
Más tarde, en 1508, Johannes Trithemius, en su trabajo Poligraphia, inventó la tabula recta, que es básicamente la tabla de Vigenère
Trithemius, sin embargo, sólo proporcionó un progresivo, rígido y predecible sistema de cambio entre alfabetos
Lo que ahora se conoce como el cifrado de Vigenère fue originalmente descrito en 1533 por Giovan Battista Belasso en su libro La cifra del Sig. quien construyó el cifrado basándose en la tabula recta de Trithemius, pero añadió una clave repetida para cambiar cada carácter entre los diferentes alfabetos
Blaise de Vigenère publicó su descripción de un cifrado de autoclave parecido, pero más robusto, antes del reinado de Enrique III de Francia, en 1586
Más tarde, en el siglo XIX, la invención del cifrado dejó de atribuirse a Vigenère
El cifrado Vigenère ganó una gran reputación por ser excepcionalmente robusto
Incluso el escritor y matemático Charles Lutwidge Dodgson (más conocido como Lewis Carroll) dijo que el cifrado Vigenère era irrompible en el artículo The Alphabet Cipher para una revista de niños
En 1917, Scientific American describió el cifrado Vigenère como imposible de romper
Esta reputación fue mantenida hasta que el método Kasiski resolvió el cifrado en el siglo XIX y algunos criptoanalistas habilidosos pudieron romperlo en varias ocasiones en el siglo XVI
El cifrado Vigenère es lo suficientemente simple si se usa con discos de cifrado. Los Estados confederados de América, por ejemplo, utilizaron un disco de cifrado para implementar el cifrado Vigenère durante la Guerra Civil estadounidense
Los mensajes confederados fueron poco secretos, ya que los miembros de la Unión solían descifrar los mensajes
Gilbert Vernam trató de arreglar el cifrado (creando el cifrado Vernam-Vigenère en 1918), pero no importa lo que hiciera, el cifrado sigue siendo vulnerable al criptoanálisis (No hay que confundirlo con el cifrado de Vernam)
A lo largo de este articulo usaré por simplicidad el alfabeto inglés estándar de 26 letras:
\tiny\begin{pmatrix} 0& 1& 2& 3& 4& 5& 6& 7& 8& 9& 10& 11& 12& 13& 14& 15& 16& 17& 18& 19& 20& 21& 22& 23& 24& 25 \\ 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 \\ \end{pmatrix}
Y el siguiente cuadro correspondiente al cifrado de Vigenère
El cifrado puede expresarse con la siguiente fórmula:
M(X_i)=(X_i+K_i-1)\pmod{L}
Donde X_i es la letra en la posición i del texto a cifrar, K_i es el carácter de la clave correspondiente a X_i, pues se encuentran en la misma posición, y L es el tamaño del alfabeto. En este caso L = 26
Para descifrar realizaremos la operación inversa:
D(C_i)=(C_i-K_i+1)\pmod{L}
Donde C_i es el carácter en la posición i del texto cifrado, K_i viene siendo el carácter de la clave correspondiente a C_i, y L el tamaño del alfabeto
Hay que tener en cuenta que a una misma letra en el texto en claro le pueden corresponder diferentes letras en el texto cifrado
Ejemplo de cifrado de Vigenère
Tenemos el siguiente mensaje que queremos cifrar:
C=MENSAJE ENVIADO AYER
L = 26 porque vamos a usar el alfabeto inglés
Tomamos como clave:
K = ESTOY ABURRIDO
Es aconsejable que la clave sea de tamaño inferior al mensaje. Juntamos mensaje y clave, repitiendo tantas veces como sea necesaria la clave
\tiny\begin{pmatrix} M& E& N& S& A& J& E& E& N& V& I& A& D& O& A& Y& E& R \\ E& S& T& O& Y& A& B& U& R& R& I& D& O& E& S& T& O& Y \\ \end{pmatrix}
Vamos a la tabla de cifrado y tomamos la fila de la primera letra de la palabra clave en la tabla de Vigénere y la columna de la primera letra del mensaje
La intersección de ambas será la letra que se usará para cifrado
Repetiremos el proceso hasta obtener el mensaje cifrado
Así nos queda que el mensaje cifrado es:
M=QWGGYJFYEMQDRSSRSP
Desciframos el M anterior
Vamos a la tabla de cifrado y tomamos la columna de la primera letra de la palabra clave en la tabla de Vigénere y buscamos la primera letra del mensaje
La fila de la intersección de ambas será la letra que se usará en el mensaje descifrado
Repetiremos el proceso hasta obtener el mensaje en claro
\tiny\begin{pmatrix} E& S& T& O& Y& A& B& U& R& R& I& D& O& E& S& T& O& Y \\ Q& W& G& G& Y& J& F& Y& E& M& Q& D& R& S& S& R& S& P \\ \end{pmatrix}
Obteniendo el C original:
C=MENSAJEENVIADOAYER