Ir al contenido principal

Criptografía (CCXXI): ¿Sabías que...? (XX)

Decía, en el post anterior sobre la novela 
"La jangada" de Julio Verne, que una curiosidad adicional era que su primera publicación fue por entregas en 'Le magazine d'éducation et de récréation'desde el 1 de enero de 1881 hasta el 1 de diciembre del mismo año, y que se dice que en octubre de 1881 un joven lector logró descifrar el criptograma antes de que se publicara la solución.

También decía que aunque no se especifica qué método empleó para ello, se especula que fue mediante el método Kasiski, que fue publicado en 1863, es decir, 18 años antes que la novela.

Pues bien, yo creo que es muy probable que esto ocurriera realmente y que el método empleado fuera el indicado, y en esta entrada me propongo demostrar que pudo ser así y, por tanto, que tanto el juez Vicente Jarríquez como Julio Verne se equivocaban :), ya que no es necesario conocer la clave para descifrar el criptograma.

Recordar (ver el post anterior) que en la novela el juez Vicente Jarríquez consigue descifrar el criptograma porque alguien le proporciona un nombre (Ortega) a partir del cuál obtiene la clave. Con esa palabra probable (en terminología critoptoanalítica, 'crib') el juez realiza un ataque de texto claro conocido ('known plaintext attack') y, como efectivamente ese nombre figuraba en el texto en claro y consigue encajarlo en el lugar correcto del criptograma, obtiene directamente la clave.

Lo anterior, darle al juez el nombre del firmante del documento a descifrar, es como darle directamente la clave, pues para obtenerla basta con comparar éste con los seis últimos caracteres del criptograma, lugar donde lógicamente se espera que aparezca el nombre del firmante. 

Realmente, yo creo que en la novela ni siquiera se explica muy bien o, al menos, de forma convincente cómo el juez llega a la conclusión de que el cifrado utilizado es uno del tipo de sustitución simple polialfabética, y menos aún de que se trate del cifrado de Gronsfeld, pero entiendo perfectamente que en la novela sea así, porque si se hubiera puesto lo que me dispongo a explicar a continuación la novela hubiera sido de un aburrimiento absoluto

Dicho todo lo anterior, como digo no es necesario conocer directamente, o casi directamente, la clave para descifrar el criptograma, y para demostrarlo me pongo en los zapatos del joven lector que logró descifrar el criptograma antes de que se publicara la solución y me pegunto a mí mismo: ¿Cómo hubiera yo descifrado este criptograma, incluso sin saber nada más de él que el propio criptograma?

Phyjslyddqfdzxgasgzzqqehxgkfndrxujugiocytdxvksbxhhuypohdvyrymhuhpuyd
kjoxphetozsletnpmvffovpdpajxhyynojyggaymeqynfuqlnmvlyfgsuzmqiztlbqgyug
sqeubvnrcredgruzblrmxyuhqhpzdrrgcrohepqxufivvrplphonthvddqfhqsntzhhhn
fepmqkyuuexktogzgkyuumfvijdqdpzjqsykrplxhxqrymvklohhhotozvdksppsuvjhd

Lo primero que voy a hacer es intentar averiguar de qué tipo de criptosistema se trata. Para ello, voy a utilizar el Índice de Coincidencia (IC), aunque soy consciente de que éste no podrían haberlo empleado ni el juez ni el joven lector que descifro el criptograma antes de que se publicara la solución, ya que esta técnica de criptoanálisis no fue inventada por William F. Friedman hasta 1920, por cierto, uno de los grandes genios de la criptografía y el criptoanálisis cuya vocación por estas materias se despertó leyendo "El escarabajo de oro" de Edgar Allan Poe.

El Índice de Coincidencia (IC) del criptograma, es decir, la probabilidad de que dos letras tomadas al azar del criptograma resulten ser iguales, si no me he equivocado al calcularlo, es:

IC = 0,044374177

Lo que está muy alejado del que le correspondería a un texto escrito en: francés, portugués, español o inglés (se esperaría que éste estuviera alrededor o fuera mayor que 0,0685) y está mucho más cercano al de un texto escrito de forma aleatoria, por lo que puedo descartar tanto un cifrado de transposición como uno simple de sustitución monoalfabética, y también un cifrado que combine ambos tipos, ya que si esto fuera así la frecuencia de las letras del texto en claro se habría trasladado al criptograma y, por tanto, el IC estaría entorno o sería superior al indicado.

Por tanto, por la época en la que se escribe el criptograma, primera mitad del siglo XIX, yo diría que se trata, casi con total seguridad, de un cifrado simple de sustitución polialfabética y, muy probablemente del cifrado de Vigenère o alguna de las variantes de éste que se propusieron y utilizaron en dicho siglo (Gronsfeld, Beaufort...).

¿Es importante determinar que el cifrado concreto se corresponde con el método original de Vigenère (aunque realmente su inventor fue Giovan Battista Bellasoo que, por el contrario, el criptograma se haya cifrado con alguna de sus variantes? Pues yo creo que no, siempre y cuando se trate de un cifrado simple de sustitución polialfabética de clave periódica, es decir, que la clave tenga menor longitud que el texto en claro y se repita para seguir cifrando éste cuando se acaben los caracteres de la misma, ya que si la clave se repite periódicamente siempre se podrá utilizar el método Kasiki (ver este post donde lo explico) e incluso un ataque basado en el Índice de Coincidencia (ver este post donde lo explico) para romper el cifrado.

Lamentablemente, respecto al idioma en el que ésta escrito el texto en claro, si hubiera llegado a la conclusión de que el cifrado utilizado era del tipo de transposición o de sustitución simple monoalfabética o una combinación de ambos tipos, podría haber intentado determinar de qué idioma se trata por el propio Índice de Coincidencia (IC) en relación con los idiomas más probables en los que podría estar escrito el texto en claro, e incluso si fuera de transposición podría apoyarme en otras características referidas a estos últimos, tales como: porcentaje de vocales y consonantes presentes, etc., pero me quedo, de momento, sin saber en qué idioma está escrito el texto en claro.

Bueno, voy a pensar, al igual que el juez en la novela, que el mensaje en claro se cifró utilizando el método Gronsfeld, aunque como digo me daría igual suponer que se usó otro siempre y cuando se trate de un cifrado simple de sustitución polialfabética de clave periódica, y voy a realizar un ataque basado en el método Kasiki, que, al contrario que el criptoanálisis basado en el Índice de Coincidencia (IC), si estaba disponible para el joven lector que consiguió descifrarlo antes de que se publicara la solución. Como decía en este postKasiski se percató de la existencia de secuencias de caracteres repetidas en el texto cifrado, lo cual significaba casi con toda probabilidad que dichas secuencias no sólo eran la misma antes del cifrado sino que además la clave debía coincidir en la misma posición, por lo que lo primero que tengo que hacer es detectar secuencias de letras cifradas repetidas, las siguientes:

Phyjslyddqfdzxgasgzzqqehxgkfndrxujugiocytdxvksbxhhuypohdvyrymhuhpuyd
kjoxphetozsletnpmvffovpdpajxhyynojyggaymeqynfuqlnmvlyfgsuzmqiztlbqgyug
sqeubvnrcredgruzblrmxyuhqhpzdrrgcrohepqxufivvrplphonthvddqfhqsntzhhhn
fepmqkyuuexktogzgkyuumfvijdqdpzjqsykrplxhxqrymvklohhhotozvdksppsuvjhd

- 2 cadenas "ddqf" separadas por 186 posiciones.
- 2 cadenas "kyuu" separadas por 12 posiciones.
- 2 cadenas "hhh" separadas por 54 posiciones.
- 2 cadenas "rpl" separadas por 60 posiciones.
- 2 cadenas "rym" separadas por 192 posiciones.
- 2 cadenas "toz" separadas por 186 posiciones.

Luego puedo pensar que el número de caracteres de la clave puede ser el MCD(12, 54, 60, 186, 192) = 6. Es decir, la longitud más probable de la clave es seis, que es el máximo común divisor o mayor número entero que divide a todos estos números (posiciones) sin dejar resto. ¿Voy bien?, ¿Cuántas letras tiene "Ortega" y, por consiguiente, cuántos dígitos tiene la clave que se obtiene en la novela a partir de este nombre? :)

Una vez que he averiguado la longitud de la clave (L), lo siguiente que tengo que hacer es dividir el criptograma en L subcriptogramas (en este caso seis), ya que éstos habrían sido cifrados por una misma fila de la letra de la clave (caso del cifrado Vigenère) o dígito de la clave (caso del cifrado Gronsfeld). Para ello, construyo una tabla de seis filas, una por cada subcriptograma, y la voy completando por columnas (de arriba a abajo y de izquierda a derecha) con los caracteres del criptograma, es decir, el primer subcriptograma (C1) contendría los siguientes caracteres del criptograma: 1º, 7º, 13º,.., el segundo subcriptograma (C2) contendría los siguientes caracteres del criptograma: 2º, 8º, 14º,... y el sexto subcriptograma (C6) contendría los siguientes caracteres del criptograma: 6º, 12º, 18º,...
A partir de lo que estaría en disposición de realizar un ataque de tipo estadístico monoalfabético.

La frecuencia de aparición de cada carácter observada en cada uno de los subcriptogramas es la siguiente:
Me queda pendiente el tema del idioma en el que estaría escrito el texto en claro, por lo que antes de abordar la última fase del criptoanálisis pongo una tabla con la frecuencia de aparición de las letras en cada uno de los cuatro idiomas en lo que podría sospechar que se encuentra escrito el texto en claro:
Empiezo por el francés, ya que entiendo que el joven lector francés sospechó, con muy buen criterio :), que éste era el lenguaje en el que estaba escrito el texto en claro correspondiente al criptograma que se publicó en una revista francesa y que era de una novela escrita originalmente en francés y cuyo autor era francés, y en la tabla anterior veo que las tres letras más frecuentes en este idioma son: 'e', 's', 'a' e 'i', por lo que considerando que la posición relativa de la letra 'a' es el valor 0, la letra 'e' está 4 posiciones a la derecha de la 'a', la letra 'i' está cuatro posiciones a la derecha de la letra 'e' y la letra "s" está 10 posiciones de la letra 'i', busco en cada subcriptograma (Ci) caracteres frecuentes que cumplan con esa distribución: 0, +4, +4, +10 mod 25 (recordar que la 'w' estaría excluida del alfabeto utilizado):
Tal y como se puede observar:

- En 
C1 la suma mayor de las frecuencias de las cuatro letras que cumplen con la distribución indicada se corresponde con la de las letras 'e', 'i', 'm' y 'x', que serían  las candidatas a ser la 'a', 'e', 'i' y 's' en el texto en claro, respectivamente. Por tanto, la primera letra de la clave sería la 'e' (caso del cifrado Vigenère) o, lo que es lo mismo, el '4' (caso del cifrado Gronsfeld).

- En C2 la suma mayor de las frecuencias de las cuatro letras que cumplen con la distribución indicada se corresponde con la de las letras 'd', 'h', 'l' y 'v', que serían  las candidatas a ser la 'a', 'e', 'i' y 's' en el texto en claro, respectivamente. Por tanto, la segunda letra de la clave sería la 'd' (caso del cifrado Vigenère) o, lo que es lo mismo, el '3' (caso del cifrado Gronsfeld).

- En C3 la suma mayor de las frecuencias de las cuatro letras que cumplen con la distribución indicada se corresponde con la de las letras 'c', 'g', 'k' y 'u', que serían  las candidatas a ser la 'a', 'e', 'i' y 's' en el texto en claro, respectivamente. Por tanto, la tercera letra de la clave sería la 'c' (caso del cifrado Vigenère) o, lo que es lo mismo, el '2' (caso del cifrado Gronsfeld)

- En C4 la suma mayor de las frecuencias de las cuatro letras que cumplen con la distribución indicada se corresponde con la de las letras 'f', 'j', 'n' e 'y', que serían  las candidatas a ser la 'a', 'e', 'i' y 's' en el texto en claro, respectivamente. Por tanto, la cuarta letra de la clave sería la 'f' (caso del cifrado Vigenère) o, lo que es lo mismo, el '5' (caso del cifrado Gronsfeld)

 - En C5 la suma mayor de las frecuencias de las cuatro letras que cumplen con la distribución indicada se corresponde con la de las letras 'b', 'f', 'j' y 't', que serían  las candidatas a ser la 'a', 'e', 'i' y 's' en el texto en claro, respectivamente. Por tanto, la quinta letra de la clave sería la 'b' (caso del cifrado Vigenère) o, lo que es lo mismo, el '1' (caso del cifrado Gronsfeld)

- En C6 la suma mayor de las frecuencias de las cuatro letras que cumplen con la distribución indicada se corresponde con la de las letras 'd', 'h', 'l' y 'v', que serían  las candidatas a ser la 'a', 'e', 'i' y 's' en el texto en claro, respectivamente. Por tanto, la sexta letra de la clave sería la 'd' (caso del cifrado Vigenère) o, lo que es lo mismo, el '3' (caso del cifrado Gronsfeld).

Por lo que la clave empleada para cifrar el texto en claro sería 'edcfbd' (caso del cifrado Vigenère) o, lo que es lo mismo, '432513' (caso del cifrado Gronsfeld)¿Voy bien?, ¿Qué clave obtiene el juez en la novela cuando compara los seis últimos caracteres del último párrafo del criptograma con "Ortega"? :)

Para comprobar si voy bien o no ya sólo me queda intentar descifrar el criptograma con la clave hallada. Para ello, voy a utilizar la herramienta 'on-line' que indiqué en el post anterior:
Con lo que ya puedo ver el texto en claro (enmarcado en color rojo en la figura anterior), que efectivamente está escrito en francés, y que voy a intentar traducir al español con la ayuda del traductor:

Texto en claro:

leveritableauteurduvoldesdiamantsetdelassassinatdessoldatsquiescortaientleconvoicommisdanslanuitduvingtdeuxjanviermilhuitcentvingtsixnestdoncpasjoamdacostainjustementcondamneamortcestmoilemiserableemployedeladministrationdudistrictdiamantinouimoiseulquisignedemonvrainomortega

En francés:

le veritable auteur du vol des diamants et de lassassinat des soldats qui escortaient le convoi commis dans la nuit du vingtdeux janvier mil huit cent vingtsix nest donc pas joam dacosta injustement condamne a mort cest moi le miserable employe de ladministration du district diamantin oui moi seul qui signe de mon vrai nom ortega

En Español:

el verdadero autor del robo de los diamantes y del asesinato de los soldados que escoltaban el convoy cometido la noche del veintidós de enero de mil ochocientos veintiséis no es pues joam dacosta injustamente condenado a muerte soy yo el miserable empleado de la administración del distrito diamante sí yo solo quién firma con mi verdadero nombre ortega

Visto lo cual, ya no cabe duda de que el joven lector que se dice que logró descifrar el criptograma antes de que publicaran la solución pudo hacerlo perfectamente utilizando, muy probablemente, el método Kasiski, que fue publicado en 1863, es decir, 18 años antes que la novela.

Lo que creo que también queda claro, al menos para mí, es que Julio Verne no conocía este método y pensó, de forma errónea, que sin conocer el nombre del verdadero culpable, Ortega, nadie iba a poder descifrar el criptograma antes de que él publicara la solución.

Comentarios

Entradas populares de este blog

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: LNUDVMUYRMUDVLLPXAFZUEFAIOVWVMUOVMUEVMUEZCUDVSYWCIVCFGUCUNYCGALLGRCYTIJTRNNPJQOPJEMZITYLIAYYKRYEFDUDCAMAVRMZEAMBLEXPJCCQIEHPJTYXVNMLAEZTIMUOFRUFC 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

Criptografía (XXIII): cifrado de Hill (I)

En este post me propongo explicar de forma comprensible lo que he entendido sobre el cifrado de Hill , propuesto por el matemático Lester S. Hill , en 1929, y que se basa en emplear una matriz como clave  para cifrar un texto en claro y su inversa para descifrar el criptograma correspondiente . Hay tres cosas que me gustan de la criptografía clásica, además de que considero que ésta es muy didáctica a la hora de comprender los sistemas criptográficos modernos: la primera de ellas es que me "obliga" a repasar conceptos de matemáticas aprendidos hace mucho tiempo y, desgraciadamente, olvidados también hace demasiado tiempo, y, por consiguiente, que, como dice  Dani , amigo y coautor de este blog, me "obliga" a hacer "gimnasia mental"; la segunda es que, en la mayoría de las ocasiones, pueden cifrarse y descifrase los mensajes, e incluso realizarse el criptoanálisis de los criptogramas, sin más que un simple lápiz y papel, es decir, para mi es como un pasat

¿Qué significa el emblema de la profesión informática? (I)

Todas o muchas profesiones tienen un emblema que las representa simbólicamente y en el caso de la  informática: " es el establecido en la resolución de 11 de noviembre de 1977  para las titulaciones universitarias superiores de informática, y  está constituido por una figura representando en su parte central  un  núcleo toroidal de ferrita , atravesado por  hilos de lectura,  escritura e inhibición . El núcleo está rodeado por  dos ramas : una  de  laurel , como símbolo de recompensa, y la otra, de  olivo , como  símbolo de sabiduría. La  corona  será la  de la casa real  española,  y bajo el escudo se inscribirá el acrónimo de la organización. ". Veamos los diferentes elementos tomando como ejemplo el emblema del COIIE/EIIEO (Colegio Oficial de Ingenieros en Informática del País Vasco/ Euskadiko Informatikako Ingeniarien Elkargo Ofiziala ) . Pero no sólo el COIIE/EIIEO adopta el emblema establecido en dicha resolución, sino que éste se adopta también como im