lunes, 23 de marzo de 2015

Criptografía (IV): la máquina Enigma (III)

Decía en el post anterior que la segunda versión de mi propia máquina Enigma ya se acerca bastante a las utilizadas por el ejército alemán en la II Guerra Mundial, pero que todavía le faltan ciertas características de funcionamiento adicionales y otros componentes que le fueron incluyendo.

Para avanzar un paso más, en la tercera versión de mi máquina Enigma los rotores son intercambiables (pueden permutarse), es decir, cada uno de ellos puede encajarse en cualquiera de las tres ranuras que los alojan. De esta manera y considerando las 6 posibilidades diferentes (3! = 3 x 2) de encajar los rotores en las ranuras, los alfabetos de sustitución que es posible utilizar son: 26 x 26 x 26 x 6 = 105.456.

Ahora la clave para cifrar y descifrar los mensajes viene dada por: el orden del alojamiento de los rotores en la ranuras (por ejemplo: 2-3-1) y la posición inicial de cada uno de los rotores (por ejemplo: 5-26-1).

En el ejemplo de clave que he puesto, recordar que los rotores se identificaban en las máquinas Enigma con números romanos (I, II y III)  y las letras se identificaban en cada rotor con un número (A=1, B=2,...Z=26), esto significa que el operador debe encajar el rotor II en la ranura 1, el rotor III en la ranura 2 y el rotor I en la ranura 3, y después girar el primero de los rotores así alojados hasta hacer coincidir el número 5 (carácter "E") con su indicador de posición, el número 26 (letra "Z") del segundo rotor con su indicador de posición y el número 1 (carácter "A") del tercer rotor con su respectivo indicador de posición.

Pero para hacer aún más difícil el criptoanálisis añado un nuevo componente a esta tercera versión de mi máquina: el tablero de conexiones.

Este tablero de conexiones, que tiene representadas las 26 letras y está situado en la parte frontal de la máquina, sirve para puentear letras del teclado, de tal forma que sin ninguna clavija insertada la corriente pasa directamente desde el teclado hasta el rotor de entrada, mientras que si, por ejemplo, conectamos en el tablero la letra "A" con la "B" y pulsamos la tecla correspondiente a cualquiera de ellas la corriente se dirige hasta el rotor de entrada por el "camino" correspondiente a la otra, es decir, las letras del teclado intercambian sus "caminos" hacia el rotor de entrada.

Para conseguir esto cada letra en el tablero de conexiones tiene dos conectores (el superior con el teclado - representado en la siguiente figura a la derecha de cada letra del tablero - y el inferior con el rotor de entrada - representado a la izquierda de cada letra del tablero), de tal forma que al insertar una clavija en una letra se desconectan ambos, de la siguiente manera:


Incorporando el tablero de conexiones, el esquema de funcionamiento de la tercera versión de mi máquina Enigma podría ser el siguiente:


Con los rotores intercambiables y el tablero de conexiones, ahora la clave para cifrar y descifrar los mensajes está formada por:

- El orden de alojamiento de los rotores en las ranuras.
- La posición inicial de cada uno de los rotores.
- Las conexiones a realizar en el tablero de clavijas (pares de letras para las que se intercambiarán sus "caminos" hacia el rotor de entrada).

Veamos un ejemplo de cifrado. Supongamos que queremos cifrar el mensaje "PRUEBA" con la clave:

- 1-2-3.
1-1-1.
- A/B, P/S.

Para ello el operador debe encajar el rotor I en la ranura 1, el rotor II en la ranura 2 y el rotor III en la ranura 3, después girar cada uno de los rotores así alojados hasta hacer coincidir el número 1 (carácter "A") con sus respectivos indicadores de posición, posteriormente conectar en el tablero de conexiones la letra "A" con la "B" y la "P" con la "S", y ahora ya teclear cada uno de los caracteres del texto en claro:



Y para descifrar, como siempre, otro operador con una máquina igual debería establecer esa misma configuración (clave) y después teclear cada uno de los caracteres del texto cifrado:



Esta tercera versión de mi máquina Enigma, salvo algún detalle que me falta de contar, es ya muy parecida a algunas de las utilizadas por el ejército alemán en la II Guerra mundial, y digo algunas porque tal y como ya he dicho en esta serie de posts se utilizaron diferentes modelos.

El tablero de conexiones hacía que el cifrado de la máquina Enigma fuera "casi" invulnerable para su época, ya que incrementaba de manera muy significativa las posibilidades.

La fórmula para calcular el número de posibilidades de conectar pares de letras de un total de 26 con 'n' cables (con cada uno de ellos se conecta un par de letras) es la siguiente:


Aplicando esta formula se obtiene el siguiente número de posibilidades en función del número de cables que utilicemos:


Considerando los 3 rotores intercambiables y que la máquina Enigma estándar del ejercito alemán disponía de 10 cables para conectar pares de letras en el tablero de conexiones, el número de posibilidades que a mí me salen (si lo he entendido bien y no me equivoco) es aproximadamente (lo he hecho en Excel, que tiene 15 dígitos de precisión) de:

26 x 26 x 26 x 6 x 150.738.274.937.250 = 15.896.255.521.782.600.000

Pero, aunque el modelo original de la máquina tenía 3 rotores, poco antes del inicio de la II Guerra Mundial la Wehrmacht y la Luftwaffe (las fuerzas de tierra y aéreas del ejército alemán, respectivamente) ampliaron el juego de rotores de 3 a 5 (identificados con los números romanos I, II, III, IV y V) que eran utilizables de 3 en 3 en las tres ranuras dispuestas para alojarlos, mientras que posteriormente la Kriegsmarine (armada o marina de guerra alemana) amplió a 8 el juego de rotores (identificados con los números romanos I, II, III, IV, V, VI,VII y VIII) y los modelos que utilizaba le permitían utilizarlos de 4 en 4.

Por lo que teniendo en cuenta sólo la ampliación del juego de rotores realizada tanto por la Wehrmacht como por la Luftwaffe (5 rotores utilizables de 3 en 3) y los 10 cables ya comentados para conectar pares de letras en el tablero de conexiones, me sale que el número de posibilidades asciende a:

26 x 26 x 26 x 60 x 150.738.274.937.250 = 158.962.555.217.826.000.000

Es decir, con los 15 dígitos de precisión que tiene Excel y si no me equivoco, aproximadamente 159 trillonesciento cincuenta y ocho trillones novecientos sesenta y dos mil quinientos cincuenta y cinco billones doscientos diecisiete mil ochocientos veintiséis millones.

Con este número de posibilidades (las utilizadas por la Kriegsmarine aún tenían másno me extraña que los alemanes pensaran que la máquina Enigma era invulnerable, pero... se equivocaban, aunque esto es ya otra historia que, en todo caso, será objeto de algún post posterior sobre este tema.  

No hay comentarios:

Publicar un comentario