1. Criptografía (I): cifrado Vigenère y criptoanálisis Kasiski
Hace unos días mi amigo Iñaki Regidor (@Inaki_Regidor), a quien dedico esta entrada :),
compartió en las redes sociales un post titulado "Criptografía: el arte de esconder
mensajes" publicado en uno de los blogs de EiTB.
En ese post se explican ciertos métodos clásicos para cifrar mensajes, entre ellos el cifrado de
Vigenère, y, al final del mismo, se propone un reto consistente en descifrar un mensaje, lo que
me ha animado a escribir este post sobre el método Kasiski para atacar un cifrado polialfabético
(conociendo la clave descifrar el mensaje es muy fácil, pero lo que contaré en este post es la
forma de hacerlo sin saberla).
El mensaje a descifrar es el siguiente:
LNUDVMUYRMUDVLLPXAFZUEFAIOVWVMUOVMUEVMUEZCUDVSYWCIVCFGUCU
NYCGALLGRCYTIJTRNNPJQOPJEMZITYLIAYYKRYEFDUDCAMAVRMZEAMBLEXPJCC
QIEHPJTYXVNMLAEZTIMUOFRUFC
Como ya he dicho el método de Vigenère es un sistema de sustitución
polialfabético, lo que significa que, al contrario que en un sistema de
sustitución monoalfabético, cada carácter del texto a cifrar NO se sustituye
siempre por el mismo carácter en el texto cifrado, es decir, es un sistema en el
que hay implicados varios alfabetos y dependiendo de ciertas circunstancias se
aplica uno u otro.
Se trata también de un sistema de cifrado simétrico, es decir, el emisor del
mensaje lo cifra utilizando una clave y el receptor debe descifrarlo utilizando
esa misma clave. Por tanto, el emisor y el receptor se tienen que poner de
2. acuerdo en la clave a utilizar.
Antes de pasar a resolver el problema planteado veamos muy brevemente como
funciona el cifrado de Vigenère.
1º) Se basa en la siguiente tabla:
2º) Por ejemplo, para cifrar el mensaje "EJEMPLO CIFRADO" con la clave
"CLAVE", ponemos la clave encima del texto a cifrar repitiendo la clave tantas
veces como haga falta hasta cubrir completamente el texto a cifrar, de la
siguiente manera:
Y ahora para obtener el texto cifrado sólo queda sustituir cada carácter del
texto a cifrar por el carácter de la tabla anterior que se encuentra en la
intersección entre la columna que corresponde al carácter a cifrar y la fila
correspondiente al carácter de la clave que está justo encima, vamos como en
3. el juego de los barcos.
Por ejemplo: a la primera "E" del texto a cifrar, que tiene justo encima la "C" de
la clave, le correspondería como carácter en el texto cifrado la letra "G". Es
decir:
Si repetimos esto para cada uno de los caracteres del texto a cifrar obtenemos
el siguiente mensaje cifrado o criptograma:
3º) Fácil, ¿no?. Pues para descifrar sólo tenemos que poner la clave encima del texto
cifrado repitiendo la clave tantas veces como haga falta hasta cubrir completamente el texto cifrado,
de la siguiente manera:
4. Y ahora para descifrar el texto sólo queda sustituir cada carácter del texto
cifrado por el carácter de la columna que le corresponde al carácter cifrado en
la fila correspondiente al carácter de la clave que está justo encima.
Por ejemplo: a la letra "G" del texto cifrado, que tiene justo encima la "C" de la
clave, le correspondería como carácter en el texto descifrado la letra "E". Es
decir:
Si repetimos esto para cada uno de los caracteres del texto cifrado obtenemos el siguiente mensaje
descifrado o texto en claro:
Hasta aquí todo muy fácil; conociendo la clave ningún problema para descifrar
el mensaje, pero supongamos que interceptamos un mensaje de este tipo y
queremos descifrarlo sin saber la clave: ¿es posible?.