martes, 19 de mayo de 2015

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.

No hay comentarios:

Publicar un comentario