Ir al contenido principal

Criptografía (CXCIX): Reto 43

Pongo otra entrada sobre la máquina Enigma, de la que, evidentemente, soy un auténtico fan; muy torpe, pero fan al fin y al cabo. La máquina de cifrado más famosa de la historia; la utilizada por el ejército alemán durante la Segunda Guerra Mundial.

En este caso se trata de un desafío que se refiere a un enfoque más "moderno" sobre su criptoanálisis, el contenido en el artículo 'Ciphertext-only cryptanalysis of Enigma' de James Gillogly publicado en la revista 'Cryptologia' (Octubre 1995). Y digo "moderno" no sólo porque fue publicado hace ya unos 25 años, sino porque el ataque se basa en la estadística del lenguaje, técnicas que ya se conocían de hace mucho tiempo.

Tal y como diré en el post de solución a este reto, no es que se trate de un método precisamente muy eficaz, ni siquiera creo que se hubiera podido utilizar en su época por falta de la potencia de cálculo necesaria, aunque ahora queda perfectamente al alcance de cualquier PC sin demasiadas prestaciones, pero me ha parecido muy interesante por dos circunstancias: en primer lugar, porque viene a demostrar que, en ocasiones, es posible el criptoanálisis de los mensajes de la máquina Enigma sin más que tener el texto cifrado de los mismos ('Ciphertext-only cryptanalysis'), sin necesidad de probar todas las configuraciones posibles de la máquina (una absoluta locura) o de conocer parte del texto en claro correspondiente al texto cifrado del que se dispone ('Known-plaintext attack'), y aplicar a éste técnicas de estadística del lenguaje (algo que incluso se suponía que no era posible, aunque es verdad que falla con bastante o mucha frecuencia, ya que presenta dos factores críticos de éxito: la longitud del criptograma, que debe ser suficientemente largo, y el número de conectores en el tablero de conexiones, más probabilidad de éxito cuantas menos sean), y, en segundo lugar, porque ha servido de base para desarrollar métodos mucho más eficaces utilizando dichas técnicas.

Dicho todo lo anterior, en este post pongo otro reto de criptografía en el que se ve involucrada la máquina enigma.

Como siempre, se admiten soluciones en forma de comentarios a esta entrada. Pasado un tiempo iré proporcionando pistas para su resolución, un máximo de tres, y posteriormente actualizaré este post con la solución.

Reto 43: "¿Coincidencia?".

Otto, operador alemán de la máquina enigma en la Wehrmacht, es un tanto vago e indisciplinado, y nunca ha entendido eso de limitar la longitud de los mensajes a enviar a 300 caracteres como máximo, y tener que dividir aquellos que sean más largos en varias partes y cifrar estas últimas con claves diferentes. Piensa: "¡Menudo trabajo, lo meto todo en uno y listo!". ¿Puedes descifrar el mensaje que se proporciona como recurso asociado al reto y que Otto envió allá por 1936?

Dificultad:
Tipo:       Criptografía.

Recursos:
Texto cifrado:

FHJIA GXUMG LESXR QPULE ZWQYN EQXJZ OWHMO AWJRR LMKDW RKHUT OBGNG KSXXL PZQXO XBYJO QROJD TUCTJ UHMCR RBSWT QTMJM CLOCI WDMSM XKRZG VYOBL QVTRC MKCFD SOIAD LTQKM POEUF TASLK KMKAQ HHSVR RBUOR ZETBT PABYD HMFLB ECVJY BAKXV MXNWN GZDRF CCVCK PUCTZ JTLNB BYJQX CSDYY SLSMV JSUOU NYWVU XNJQP UIDBC IWYEE IZMHC RCETL HQJDQ ERURL LXPCB KWKAB UBPZY VAULX SXTFM SWICC EGPYK YXMLT VGTJT IXBIZ ATYHD XEBCK UHMOH CQSMY WZPWB XIIRX XFQSN JACRD HFSUA CULFX HMGCU KISAE ULIRP AXMYL SPWDL CSYHJ RPYZT EOEPV WJBZG YHOEF ANCBA BDBYS ZIMGF YSLIP SAHRS ONJBH VWGOE DXCOM DJATM OUTKC JCYVR CDKRG ZINVE JHBMU AKGCG XOYRB UGOCD AEXIY FIPGO IIQNW FKASI PHHBF UFSGV AYDGI TJZJW WXZLC TFHKB VSVBI FRVMY WAFMO NIQNS NSIOC TCGQI RCQXU RHNAT HCOGU IHLHR KRCGY BLOMA QWTAO XRLXC MXMLS KYPLK NXJBG CMNVT CAQFS CAINE ZMERE PZQWI DYPBO JGRMT LVJLG MJAUF XSHSA UKJKA IJDTV DLZXX QEEUB ITLUY ZRBKG ELHPE ULPUR GHXCC KGPHK SROIN GBVOR FBKDB VLGGL JWDRJ FWYNZ XKUIQ AMQSI VNOSK QIELK MUOLM QHWQT QFXFJ VKSPX HGHEV AIYBG JRYTO ACQVE SZXPL QOBUO QXKKT RWZLB MCHXJ VMHKU KOBUN AYIFD LTHYY SQNWV COMCR BDLNB OECZV XHBEQ IDDWH VUVXT BRLCS MTGYH ULUNX CIBMU LXBPJ UHSMB PAPSL ISNZD MBGGD FVJGR XUPGF HTVKV WHRLY VQGEK IUIEK FDPHY DUJBF CBKYH RGJOX TDBHO VNXNO FJAUC PPXKF DDEPO ZIJUV SNQPQ XAJXK TOPZA UACPP KPJMV OLRCI UOEAB XBPMO EWHOW MDLON IOYYA FKVTU STAOB YVOQJ JIUIX YIGFQ KPANQ ZHRDD OIUAY BQPTF VBXLE XKZXL XCUWB RACZU PKFDM IKOFZ KXZMP KHAJI

********
 10/10/2021
Pista 1:    El indicador en el que se basa el método de James Gillogly para el criptoanálisis de los mensajes de la máquina Enigma, considerando única y exclusivamente el texto cifrado del que se dispone ('Ciphertext-only cryptanalysis'), es el índice de coincidencia (IC).

Ya expliqué en una entrada de este blog qué es el índice de coincidencia (IC), pero lo vuelvo a hacer muy brevemente: es la probabilidad de que dos letras tomadas al azar de un texto sean iguales.

Todo idioma tiene un IC estándar propio (por ejemplo: el español de aproximadamente 0,0775, el alemán de 0,0762, etc.), mientras que en un texto "aleatorio", como el obtenido al cifrar un texto en claro con una máquina Enigma, el IC es de aproximadamente 0,0385

Es decir, es como si el IC fuera una "huella" mediante la cual podemos saber si un texto, lo suficientemente largo para que su cálculo sea significativo, está escrito en un idioma (e incluso, en qué idioma) o, por el contrario, se trata de un texto "aleatorio", y, por tanto, la idea en este método de criptoanálisis se basa en ir obteniendo paulatinamente textos parcialmente descifrados con el IC más alto, considerando por separado los parámetros de la clave de una máquina Enigma, de tal forma que éste se vaya aproximando a lo esperado para un texto en claro escrito en alemán.

El primer paso del método de James Gillogly consiste en obtener el IC mayor del descifrado del criptograma para todos los posibles órdenes de los rotores y, dentro de cada uno de ellos, todas las posiciones iniciales de cada rotor, fijando el ajuste de los anillos en 1 - 1 - 1 (A - A - A) y con el tablero de conexiones sin ningún conector puesto. El orden de los rotores con el IC más alto así obtenido sería aquél con el que se obtuvo el texto cifrado que se está criptoanalizando.

Recuerdo que el IC se calcula de la siguiente manera:

Donde: fi  es la frecuencia o número de ocurrencias del carácter i en el texto, en este caso el texto cifrado a criptoanalizar, y N es el tamaño del texto cifrado (en este caso, 1.175 caracteres).

******** 11/10/2021
Pista 2:    En 1936, fecha en la que según el enunciado se envía el mensaje a criptoanalizar, la máquina enigma tenía sólo tres rotores (I, II y III), cada uno de los cuales podía situarse en cualquiera de las tres ranuras dispuestas para alojarlos.

Utiliza un simulador de la máquina enigma y configúralo para que descifre el criptograma para cada uno de los 6 posibles órdenes de los rotores (I - II - III, I - III, II, ..., III - II - I) y, dentro de cada uno de ellos, con cada una de las 17.576 posiciones iniciales de los rotores (A - A - A, A - A - B, ..., Z - Z - Z), fijando el ajuste de los anillos en A - A - A y sin ningún conector en el tablero de conexiones, calcula el IC de todos los textos así descifrados y quédate con el mayor IC obtenido.

Verás que el IC más alto es 0,042973648918047, que se corresponde con el descifrado para el orden de los rotores III - I - II y posición inicial de los mismos D - X - X. Por tanto, conforme a lo comentado anteriormente, ya habrías recuperado uno de los parámetros de configuración de la máquina; el orden de los rotores con el que se habría obtenido el texto cifrado objeto del reto sería: III - I - II.

Ahora, deberás realizar el segundo paso del método de James Gillogly, que consiste en:

a) Para el orden de los rotores y a partir de la posición inicial de cada uno de ellos obtenidos en el primer paso (III - I - II y D - X - X, respectivamente), obtener el IC mayor del descifrado del criptograma para cada ajuste del anillo posible del rotor derecho o rápido (de 'A' a 'Z'), fijando el ajuste de los anillos izquierdo y central (velocidad de giro lenta y media, respectivamente) en 1 - 1  (A - A) y con el tablero de conexiones sin ningún conector puesto. De esta forma recuperarás la mejor configuración para el rotor derecho o rápido (ajuste del anillo y posición inicial).

Es decir, en nuestro reto, descifrado del criptograma con las siguientes configuraciones:

Rotores: III - I - II; Ajuste de los anillos: A - A - A; Posición inicial: D - X - X.
Rotores: III - I - II; Ajuste de los anillos: A - A - B; Posición inicial: D - X - Y.
Rotores: III - I - II; Ajuste de los anillos: A - A - C; Posición inicial: D - X - Z.
...
Rotores: III - I - II; Ajuste de los anillos: A - A - Z; Posición inicial: D - X - W.

b) Con la mejor configuración del rotor derecho o rápido hallada en el punto anterior, repetir lo mismo para el rotor central o medio, es decir, para el orden de los rotores y a partir de la posición inicial del rotor izquierdo o lento obtenidos en el primer paso (III - I - II y D, respectivamente), y con el ajuste del anillo y posición inicial del rotor derecho o rápido hallados en el punto anterior, obtener el IC mayor del descifrado del criptograma para cada ajuste del anillo posible del rotor central o medio (de 'A' a 'Z'), fijando el ajuste del anillo izquierdo o lento en 1 (A) y con el tablero de conexiones sin ningún conector puesto. De esta forma recuperarás la mejor configuración para el rotor central o medio (ajuste del anillo y posición inicial).

******** 12/10/2021
Pista 3:    Si has ejecutado el Paso 2 mediante un simulador, 
de forma mucho más rápida que en el Paso 1, ya que sólo hay que testear 26 configuraciones de ajuste de los anillos / posición inicial de los rotores para el punto a) y otros tantos para el b), ya habrás visto que el IC más alto para el punto a) es 0,046377904237196, que se corresponde con el descifrado para el orden de los rotores III - I - II, ajuste de  los anillos A - A - F y posición inicial de los rotores D - X - C, y que para el punto b) es 0,0494907390626699, que se corresponde con el descifrado para el orden de los rotores III - I - II, ajuste de  los anillos A - E - F y posición inicial de los rotores D - B - C.

Por tanto, conforme a lo comentado en la pista anterior, ya habrías recuperado la mejor configuración, ajuste del anillo y posición inicial, tanto para el rotor derecho o rápido, punto a), como para el rotor central o medio, punto b).

Ahora, únicamente queda realizar el tercer y último paso del método de James Gillogly, que consiste en, asumiendo que son correctos los parámetros de configuración de la máquina hallados hasta el momento, obtener los mejores resultados para el descifrado del criptograma objeto de análisis, de forma separada, con cada uno de los pares de letras posibles que pueden ser conectadas entre sí en el tablero de conexiones. Es decir, primero con: A -B, después con A - C, ..., y finalmente con Y - Z.

En este Paso 3, como indicador de mejor resultado y para mensajes cortos, se suele utilizar una tabla de trígrafos en lugar del IC. No obstante, como el mensaje del reto es suficientemente largo, en este caso el IC también discriminará efectivamente los pares de letras conectadas entre sí en el tablero de conexiones.

******** 12/10/2021

******** PRÓXIMO RETO
Reto 44:   "Cinta móvil".

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

¿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

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