Ir al contenido principal

Criptografía (IX): la máquina Enigma (VIII)

Tras la modificación realizada en 1938 por los alemanes al procedimiento de operación de la máquina Enigma (ver post anterior) y que invalidó el método de criptoanálisis utilizado hasta ese momento, lejos de desanimarse y "tirar la toalla", los polacos se pusieron inmediatamente a trabajar en nuevas ideas para volver a conseguir descifrar de forma masiva los mensajes del ejército alemán.

Los alemanes, pese al cambio introducido en la operativa de la máquina, seguían transmitiendo dos veces de forma consecutiva los caracteres cifrados de la "clave de sesión" (posición de los rotores elegida por el operador para cifrar cada mensaje concreto) y cualquier repetición es un verdadero filón para los criptoanalistas. Ese fue el "clavo ardiendo" que necesitaban y al que se agarraron para idear nuevos métodos para "romper" su código.

Es decir, ahora no era posible, en base a la característica de los mensajes interceptados en un día y a través del catálogo, deducir cuáles eran el orden de los rotores y su posición inicial, pero seguía existiendo la relación entre el primero y cuarto caracteres, el segundo y quinto, y el tercero y sexto de los seis caracteres correspondientes al doble cifrado de la "clave de sesión".

Así, estudiando las características diarias observaron que frecuentemente aparecían en las tres permutaciones (AD, BE y CF) ciclos de longitud 1 en los caracteres correspondientes a ese doble cifrado de la "clave de sesión", o, lo que es lo mismo, se daba una "curiosa" repetición de dichos caracteres. Otra repetición más y, por tanto y como ya he dicho, otro filón a explotar por parte de los criptoanalistas.

Para mí esto no pasaría de ser una curiosidad que perfectamente se podía producir por mera casualidad, pero a ellos les llevó a preguntarse si a partir de esto era posible deducir el orden de los rotores y el ajuste de los anillos o posición relativa de los mismos respecto a su núcleo con el cableado, que como sabemos formaban parte de la clave del día. La respuesta era sí.

Pero, aclaremos un poco más esto. Supongamos que en uno de los mensajes interceptados los seis caracteres correspondientes al doble cifrado de la "clave de sesión" son "SWO SJQ". Ellos acuñaron el término "hembra" (en inglés "female") para referirse a las repeticiones de caracteres que se producían y, en este caso, decían que había una "hembra" en las posiciones 1-4 (el carácter "S" se repite en ambas). Si esto ocurría en las posiciones 2-5 y 3-6, para cualquier carácter, entonces se habían encontrado también "hembras" en las respectivas posiciones.

Uno de los que inventó un método para descifrar nuevamente los mensajes alemanes, basado en esta repetición de caracteres ("hembras"), fue otro matemático polaco llamado Henryk Zygalski.

Su método consistía en la utilización de hojas perforadas, conocidas como hojas Zygalski, de tal manera que cada hoja se correspondía con un carácter del rotor lento para un orden dado de alojamiento de los rotores en las ranuras. Es decir, para cada posible orden de ubicación de estos había 26 hojas (una por cada carácter del rotor lento) y, por tanto, en total había: número de posibles órdenes de los rotores en las ranuras x número de hojas por orden de alojamiento de los rotores = 3! x 26 = 6 x 26 = 156 hojas.

A continuación comparto lo que he aprendido sobre la preparación y la forma de utilización de estas hojas, aunque puedo estar equivocado (si es así, por favor, que algún amable lector de este blog me saque del error).

En cada hoja había una tabla en la que las filas (de arriba a abajo) representaban las posiciones (caracteres) correspondientes al rotor central y las columnas (de izquierda a derecha) las posiciones (caracteres) del rotor rápido.

Tal y como se muestra en la figura y por la operativa de funcionamiento de este método, esta tabla se duplicaba en horizontal (columnas de la "A" a la "Y") y en vertical (filas de la "A" a la "Y"), por lo que cada hoja disponía en la intersección de todas sus filas y columnas de un total de 51 x 51 =  2.601 cuadrados, que podían ser perforados.

A partir del catálogo de características, para cada ciclo de longitud 1 en las posiciones 1-4 se perforaba, en la hoja correspondiente a la ubicación de los rotores en las ranuras y al carácter del rotor lento de esa "hembra", el cuadrado de la tabla superior izquierda que se encontraba en la intersección de la fila del carácter del rotor central y la columna de la letra del rotor rápido, y como esa tabla estaba duplicaba en horizontal y vertical se perforaba también ese mismo cuadrado en el resto de las tablas de la hoja.

Una vez preparadas todas las hojas y a partir de los indicadores (los tres caracteres que se transmitían en claro y que el operador había elegido para cifrar la "clave de sesión") de aquellos mensajes interceptados que presentaban "hembras" en los caracteres correspondientes al doble cifrado de la "clave de sesión", se iban apilando las hojas adecuadas siguiendo un método predeterminado hasta que todas ellas coincidían en un solo cuadrado perforado, lo que identificaba unívocamente el orden de los rotores y el ajuste de los anillos o posición relativa de los mismos respecto a su núcleo con el cableado.

Lo primero que había que hacer era tomar como hipótesis de partida (a probar) un orden de los rotores y fijar un carácter para el ajuste del anillo del rotor lento, para después ir apilando una hoja sobre otra con un cierto desplazamiento, que se calculaba mediante la diferencia entre la segunda letra del primer indicador y la segunda letra del nuevo indicador (coordenada del desplazamiento correspondiente al rotor central, es decir, de la fila) y la tercera letra del primer indicador y la tercera letra del nuevo indicador (coordenada del desplazamiento correspondiente al rotor rápido, es decir, de la columna). Por tanto, había que superponer la parte superior izquierda de la nueva hoja (correspondiente a las coordenadas "AA") encima de las coordenadas de la primera hoja así calculadas.

Con el suficiente número de mensajes interceptados con "hembras", tengo entendido que habitualmente unos doce eran suficientes, si tras apilar todas las hojas éstas no coincidían en un único o varios cuadrados perforados la hipótesis de partida se revelaba como falsa y había que probar con otra, mientras que si coincidían en uno o varios cuadrados perforados esto daba una o varias posibles soluciones para el orden de los rotores y el ajuste de los anillos para ese día (el orden de los rotores y el ajuste del anillo del rotor lento se obtenían directamente, mientras que el ajuste de los anillos del rotor central y rápido se calculaba mediante la diferencia entre el segundo carácter del primer indicador y la coordenada correspondiente al rotor central del cuadrado perforado, y la diferencia entre el tercer carácter del primer indicador y la coordenada del rotor rápido de ese mismo cuadrado, respectivamente). Estas posibles soluciones eran probadas en un réplica de la máquina Enigma.

Una vez obtenidos el orden de los rotores y el ajuste de los anillos no era difícil averiguar las conexiones realizadas en el tablero y obtener la clave del día, con lo que ya era posible otra vez descifrar masivamente los mensajes del ejército alemán.

En los siguientes enlaces se puede ver una simulación del método de las hojas Zygalski y se explican los cálculos realizados, respectivamente:

- Simulación del método de las hojas Zygalski.
- Explicación de los cálculos realizados.

No obstante, para ver si lo he comprendido correctamente y ya que en el simulador anterior no se aprecia la operativa del método en la práctica, en el siguiente post me propongo poner un ejemplo apilando las hojas correspondientes para ver si obtengo el resultado correcto.

Para finalizar este post decir que los polacos inventaron otros métodos para "romper" el código de la máquina Enigma, aunque todos ellos duraron poco tiempo, ya que los alemanes, muy poco antes del inicio de la II Guerra Mundial, continuaron introduciendo nuevas novedades en la máquina y en su operativa para intentar hacer al sistema invulnerable a los métodos de criptoanálisis. De todo ello hablaré en siguientes posts de esta serie.

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