Cifrado de Vigenère

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

\tiny\begin{pmatrix}&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&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\end{pmatrix}

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