En esta entrada voy a realizar el
criptoanálisis de un mensaje cifrado que se envió durante la
Guerra Civil Española y que se conserva en el Archivo General Militar de Ávila (AGMAV).
No sé casi nada sobre él. Lo único que sé es: que se recibió en Burgos y fue enviado allí por el Comandante Jefe del SIPM (Servicio de Información y Policía Militar del bando nacional) en Irún, la fecha que figura en él es 1/04/1938, que parece que tiene una firma ("Concepcion"), o quizás sea el nombre de una clave, y que tiene una nota ("A Urruti que nos envien traducido") que parece estar fechada el 11/04/1938.
El criptograma tiene una longitud de 315 caracteres y el mensaje completo es el siguiente:
El IC es 0.04173491052471945, lo que descarta la sustitución simple monoalfabética, ya que si fuera de este tipo el IC debería estar próximo a 0,0775, que es el esperado para un texto escrito en español.
Por tanto, ahora
supongo que se trata de un cifrado por
sustitución simple polialfabética de clave periódica y lo primero será averiguar cuál es la longitud de ésta, es decir, el número de alfabetos involucrados. Para ello, utilizo otro script en python que calcula el IC para cada una de las subcadenas en las que se dividiría el criptograma conforme a las posibles longitudes de la clave, es decr, conforme al número de alfabetos involucrados.
Ejemplo:
- Si la longitud de la clave fuera 1: todo el criptograma habría sido cifrado con la misma clave o, lo que es lo mismo, el criptograma no se divide en subcadenas (sólo hay una subcadena que coincide con el criptograma), y si el índice de coincidencia del criptograma estuviera próximo a 0,0775, entonces se trataría de un cifrado de sustitución simple monoalfabética (un solo alfabeto involucrado). En este caso, ya hemos visto antes que no es así (el gráfico siguiente se corresponde al ejemplo puesto más arriba, no con el criptograma objeto de criptoanálisis).

- Si la longitud de la clave fuera 2: se divide el criptograma en 2 subcadenas; la primera habría sido cifrada con el primer alfabeto y la segunda con el segundo alfabeto. La primera subcadena con los caracteres del criptograma 1, 3, 5, 7, ..., y la segunda con los caracteres 2, 4, 6, 8,... Si el IC de ambas subcadenas estuviera próximo a 0,0775, entonces se confirmaría que la longitud de la clave o número de alfabetos involucrados es 2 (el gráfico siguiente se corresponde al ejemplo puesto más arriba, no con el criptograma objeto de criptoanálisis).

- Si la longitud de la clave fuera 3: se divide el criptograma en 3 subcadenas; la primera habría sido cifrada con el primer alfabeto, la segunda con el segundo alfabeto y la tercera con el tercero. La primera subcadena con los caracteres del criptograma 1, 4, 7,... la segunda con los caracteres 2, 5, 8,... la tercera con los caracteres 3, 6, 9,... Si el IC de las tres subcadenas estuviera próximo a 0,0775, entonces se confirmaría que la longitud de la clave o número de alfabetos involucrados es 3 (el gráfico siguiente se corresponde al ejemplo puesto más arriba, no con el criptograma objeto de criptoanálisis).
- Y así sucesivamente.
En la práctica, el scrip considera que el IC está próximo a 0,0775 cuando éste supera 0,065
Y, tal y como se observa en la figura anterior,
la longitud de la clave o número de alfabetos involucrados es 4.
Por tanto, ahora el criptoanálisis queda reducido al criptoanálisis de 4 cifrados por sustitución simple monoalfabética, es decir, de las 4 subcadenas en que se divide el criptograma: la primera habría sido cifrada con el primer alfabeto, la segunda con el segundo alfabeto, la tercera con el tercero y la cuarta con el cuarto. La primera subcadena con los caracteres del criptograma 1, 5, 9,..., la segunda con los caracteres 2, 6, 10,..., la tercera con los caracteres 3, 7, 11,... y la cuarta con los caracteres 4, 8, 12,... (el gráfico siguiente se corresponde al ejemplo puesto más arriba, no con el criptograma objeto de criptoanálisis)

Pero, ¿cómo hago ese criptoanálisis? El problema es que la longitud de cada una de estas subcadenas es muy corta (las tres primeras tienen una longitud de 79 caracteres y la cuarta de 78), por lo que un criptoanálisis "tradicional" basado en el análisis de frecuencias en cada uno de ellos no será fiable y, por tanto y casi con absoluta certeza, no tendría éxito.
Por tanto, para realizar el criptoanálisis recurro al
algoritmo 'Hill climbing' (algoritmo de "Escalada de la colina") y, para ello, me apoyo en la IA; le pido que genere un
script en python para criptoanalizar mediante este algoritmo un criptograma dado sabiendo que se ha cifrado mediante sustitución simple polialfabética y que están involucrados 4 alfabetos con disposición aleatoria de las letras en cada uno de ellos. Además, le pido que considere un diccionario (una palabra por entrada).
El diccionario lo creo yo recopilando palabras habituales que he visto en muchos de los telegramas enviados durante la guerra civil e incorporando otras que podrían estar en los criptogramas a atacar. Es decir, creo un diccionario específico para telegramas enviados durante la guerra civil.
Tras la generación del script por parte de la IA, no tras mucha supervisión por mi pate (correcciones, optimizaciones, etc.), ejecuto el script generado y obtengo lo siguiente:
Además, el script deja el resultado obtenido en un archivo .txt:
Con lo que ya tengo un descifrado parcial casi completo del criptograma y casi correctos los 4 alfabetos utilizados.
Texto en claro parcialmente descifrado:
"XSIYELPORTADORDELAPRESENTESEÑORCOMASDELCONSULADODECOSTARICAENESTABAPRESTADOEXCELENTESSERVICIOSALACAUSANACIONALHABERSALVADOAMASDEDOSCIENTASPERSONASYAHORAYACILITARBUIDAALABIZADELGENERALMARTINMORENOHALAVERMANADEPISUNVERELGRUPOCONCEPCIONTRIBUTAUNCALUROSORECUERDOALQUEDESINTERESADAMENTESIRVIOCONFIDELIDADALACAUSANACIONAL".
Es decir (marco en color rojo lo que no estaría correctamente descifrado):
"XSIY EL PORTADOR DE LA PRESENTE SEÑOR COMAS DEL CONSULADO DE COSTA RICA EN ESTABA PRESTADO EXCELENTES SERVICIOS A LA CAUSA NACIONAL HABER SALVADO A MAS DE DOSCIENTAS PERSONAS Y AHORA YACILITAR BUIDA A LA BIZA DEL GENERAL MARTIN MORENO H A LA VERMANA DE PI SUNVER EL GRUPO CONCEPCION TRIBUTA UN CALUROSO RECUERDO AL QUE DESINTERESADAMENTE SIRVIO CON FIDELIDAD A LA CAUSA NACIONAL".
Y ya para tenerlo completamente descifrado, sólo hay que corregir los alfabetos obtenidos con las palabras correctas que se intuyen y, en base a esas correcciones, corregir el descifrado.
Texto en claro:
"XSIV EL PORTADOR DE LA PRESENTE SEÑOR COMAS DEL CONSULADO DE COSTA RICA EN ESTA HA PRESTADO EXCELENTES SERVICIOS A LA CAUSA NACIONAL HABER SALVADO A MAS DE DOSCIENTAS PERSONAS Y AHORA FACILITAR HUIDA A LA HIJA DEL GENERAL MARTIN MORENO Y A LA HERMANA DE PI SUNYER EL GRUPO CONCEPCION TRIBUTA UN CALUROSO RECUERDO AL QUE DESINTERESADAMENTE SIRVIO CON FIDELIDAD A LA CAUSA NACIONAL".
Los cuatro primero caracteres del criptograma podrían ser algún tipo de indicativo (por ejemplo, el identificador correspondiente a cada una de las filas o alfabetos a utilizar).
Además, ahora queda claro que el mensaje pertenece al bando nacional; en concreto a un grupo llamado "Concepción".
Quizás también te interese:
Comentarios
Publicar un comentario