lunes, 22 de junio de 2015

Criptografía XII: la máquina Enigma (XI)

En este antepenúltimo post sobre los métodos de criptoanálisis empleados para "romper" el código de la máquina Enigma le toca el turno a la etapa de Bletchley Park, una vez iniciada la II Guerra Mundial.

Decía en el post anterior que eprimer método con el que comenzaron a trabajar los británicos fue el de las hojas Zygalskipero que duró poco tiempo, ya que a mediados de 1940 los alemanes dejaron de transmitir dos veces de forma consecutiva los tres caracteres cifrados de la "clave de sesión", con lo que se invalidaron todos los métodos de criptoanálisis basados en ese doble cifrado.

Una vez más, las comunicaciones del ejército alemán eran opacas por completo. Me imagino a los británicos apilando hojas perforadas de forma convulsiva sin obtener ningún resultado, acordándose de las madres de Hitler y de todos sus secuaces, y preguntándose qué es lo que habían cambiado esta vez.



Pero, ya antes de que se produjera este cambio en la operativa de la máquina, Alan Turing estaba trabajando en un método de criptoanálisis alternativo que no dependiera del doble cifrado de la "clave de sesión", sino que atacara a otras debilidades del cifrado de la máquina y de su utilización: el cifrado recíproco (por su diseño, una letra nunca se cifra como esa misma letra) y la previsión (suposición) de parte de los contenidos de los mensajes transmitidos por los alemanes, tanto debido a su excesivo formalismo y a su mente "cuadriculada" - ambas cosas muy propias del carácter germano -, como a la tipología de los mismos, por ejemplo: partes metereológicos.

De esta forma, Turing se basó en la conjetura de que ciertos textos sin cifrar (ellos acuñaron el término "crib" para referirse a ellosse encontraban en el texto cifrado.

Si no lo he entendido mal y para comprender mejor en que se basaba este método, veamos un ejemplo utilizando como "crib" la siguiente: "WETTER VORHER SAGE" (texto en claro que posiblemente se encontraba en los partes metereológicos y que creo que en alemán quiere decir algo así como: "PRONÓSTICO DEL TIEMPO").

1º) Supongamos que en el texto cifrado aparece la siguiente secuencia de caracteres (primera línea) y situamos justo debajo la "crib":
Se trata de ir buscando el encaje de la "crib" (texto en claro conocido) con el texto cifrado para hallar las posibles correspondencias entre los caracteres de la primera con los del segundo, descartando aquellas que no es posible obtener con una máquina Enigma.

Es decir, en primer lugar, si los caracteres en una determinada posición coinciden en ambos casos (texto cifrado y "crib") descartaríamos esas posibles correspondencias, ya que por el diseño de la máquina una letra nunca se puede cifrar como esa misma letra, y desplazaríamos la "crib" una posición a la derecha hasta encontrar alguna posición relativa en la que esto no ocurra.

2º) Examinamos ahora las posibles correspondencias (en nuestro ejemplo ninguno de los caracteres de la "crib" coincide en la misma posición con el mismo carácter en el texto cifrado, aunque que esto ocurra es mucho más probable de lo que puede parecer):

Esto lo que nos dice es que, si el texto cifrado se corresponde con la "crib", con un determinado orden de los rotores y posición de los mismos (a la que llamaremos posición relativa 1) la máquina cifra el carácter "W" como "R" (y, debido a la reciprocidad del cifrado de la máquina, "R" como "W"), en la posición relativa 2 la letra "E" como "J" (y a la inversa, la "J" como "E"), y así sucesivamente.

Esto se puede expresar mediante el siguiente grafo:
A los gráficos de este tipo se les conocía como "menú" (en inglés, "menu"), y servían para configurar la bomba, la máquina que inventó Turing para automatizar el proceso de búsqueda de las configuraciones de la máquina Enigma en las que era posible que el texto en claro conocido pudiera cifrarse como parte del texto cifrado (y, a la inversa, esa parte del texto cifrado pudiera descifrarse como el texto en claro) o, mejor dicho, para descartar aquellas configuraciones que no permitían esto. A mayor número de bucles - en inglés, "loops" - más configuraciones de la máquina era posible desechar, ya que son muy pocas las que pueden satisfacer todas las restricciones de conectividad impuestas por el "menú".

En nuestro ejemplo se pueden observar los siguientes tres bucles:

1.- "T" ---> "K" ---> "S" ---> "T";
2.- "T" ---> "S" ---> "E" ---> "T";
3.- "T" ---> "E" ---> "W" ---> "R" ---> "T".

Se trata ahora de descartar órdenes de los rotores y posiciones de éstos que no satisfagan las citadas restricciones de conectividad, pero antes de contar esto con más detalle veamos en qué consistía la famosa máquina electromecánica conocida como bomba de Turing, y posteriormente, tras la aportación (simple conceptualmente, pero sin duda genial) de su colega Gordon Welchman, como la bomba Turing-Welchman.

Nada fácil lo que me propongo explicar, ya que ni su diseño ni su implementación (tampoco hay que olvidar a quienes la llevaron a cabo a partir de la lógica de estos genios) son ni mucho menos sencillos.

Por lo que he investigado, la primera versión de la bomba de Turing, a la que llamaron "Victory", entró en funcionamiento en marzo de 1940, y en la siguiente figura represento sus componentes principales conforme a lo que he entendido:
Cada tambor reproducía el cableado de uno de lo rotores de la máquina Enigma (I, II, III, ...), es decir, realizaba las mismas transformaciones de caracteres que éste, y su color identificaba al rotor al que replicaba (tambor rojo ---> rotor I, etc.).

Cada una de las tres baterías de 12 codificadores de doble extremo simulaba hasta 12 máquinas enigma conectadas en serie. Estas tres baterías no estaban conectadas eléctricamente entre sí  y, por tanto, cada una de ellas podía ser configurada para un orden de los tambores y un menú concretos; aunque sí estaban conectadas mecánicamente a un motor que hacía girar de forma sincronizada los tambores de las tres baterías.

La idea del conector de doble extremo surgió por la necesidad de simular el funcionamiento de varias máquinas Enigma trabajando en serie, para lo que se necesitaba separar la entrada ("camino" de ida hacia el reflector) de la salida ("camino" de vuelta desde el reflector) de cada uno de lo rotores. Para ello, cada tambor disponía de dos conjuntos de cableado, que en ambos casos se correspondían al del rotor al que replicaba.

Al  colocarse uno de los tambores sobre la placa en la que se montaba, el cableado interno de cada uno de sus dos conjuntos cerraba el circuito con los correspondientes contactos del par exterior y del par interior de los cuatro círculos concéntricos, respectivamente.

Gráficamente podríamos representarlo de la siguiente manera:
Cuando la bomba encontraba una configuración de la máquina Enigma que no podía desechar se paraba, es decir, ese orden de los rotores y posición de los mismos era compatible con las restricciones impuestas por el menú, por lo que se trataba de una posible solución que debía probarse para comprobar si era la correcta o no.

Sin embargo, en su diseño inicial la bomba no era muy eficaz. En el siguiente post contaré cuál fue la aportación de Gordon Welchman al diseño de la bomba para aumentar su eficacia y retomaré el ejemplo puesto en éste para explicar cómo se configuraba la bomba y su funcionamiento una vez puesta en marcha.

No hay comentarios:

Publicar un comentario