lunes, 8 de diciembre de 2008

Criptografía (VII)

La máquina Enigma.

En 1918 Arthur Scherbius se propuso crear una máquina criptográfica para sustituir el hasta ahora utilizado método del lápiz y papel, utilizando la tecnología que le brindaba el siglo XX y de esta manera mejorar el sistema de cifrado y descifrado de mensajes, a la vez que volverlo más impenetrable.
Básicamente la máquina consistía en 3 elementos conectados por cables: el teclado para el texto llano, la unidad modificadora y el tablero para el texto cifrado. El sistema era fácil y rápido, el emisor pulsaba una tecla en el teclado, esta pulsación recorría el modificador y aparecía en un tablero iluminado la letra codificada.
Por supuesto la parte más importante de la máquina era el modificador. Cada tecla del teclado llevaba unido un cable que entraba al modificador, el cual después de una serie de giros y rodeos salía por el otro extremo con la letra cifrada.
La rueda de modificación giraba un veintiseisavo de revolución cada vez que una letra era pulsada, de esta forma si pulsábamos 3 veces la letra B, cada vez era codificada de manera diferente.
Veamos un dibujo que nos lo aclare reduciendo el abecedario a 6 letras.


La primera vez que pulsamos la letra B el modificador la convierte obteniendo la letra A. Entonces el modificador avanza 1/6 de revolución, con lo cual cambia el camino que siguen los cables, así al volver a pulsar la letra B, ahora queda codificada como C. Si la pulsamos una tercera vez, esta codificará como E.
En este caso el patrón se repetirá cada 6 pulsaciones.
Así obtenemos seis alfabetos cifrados, con lo cual la máquinalleva a cabo una cifra polialfabética.
La debilidad es óbvia, pues la repetición se muestra a las 6 pulsaciones de una misma tecla y ya sabemos que las repeticiones es algo muy peligroso en criptografía. Para minimizar esto, se añade un segundo modificador.


Ahora añadamos otro modificador: (esquematizado en 2 dimensiones)

Esto hace que el patrón de codificación no se repita hasta que se han codificado 36 pulsaciones, pues la segunda rueda solo gira una posición cuando la primera ha completado un ciclo completo.


En la primera figura vemos la pulsación original donde b codifica como D. En la segunda vemos el caso de que la primera ya ha dado una vuelta completa y vuelve a codificar, con lo que la segunda rueda avanza un paso. En la tercera figura tenemos el caso en que gira la primera pero al no marcar todavía la vuelta completa la segunda rueda no giraría.
Es como un cuentakilómetros, hasta que el dígito de los metros no da la vuelta competa, no gira la unidad de los kilómetros.

Ahora si tenemos un alfabeto completo de 26 letras, la máquina cifraría con 676 alfabetos cifrados (26x26).

Pero para ponerlo más dificil, la máquina de Scherbius tenía 3 modificadores con lo que esta cifraba con 17.576 alfabetos (26x26x26) y además se añadió un reflector. La función de éste era que la señal volviera a pasar por los 3 modificadores de nuevo pero por diferente camino al de entrada, para posteriormente mostrar la letra cifrada. Veamos el esquema:

Aquí pulsamos la tecla B y obtenemos la letra D. A primera vista el reflector parece inútil pues al ser estático no aumenta el número de alfabetos cifrados, pero veamos su utilidad.

Para enviar un mensaje el operador colocaba los modificadores en una posición inicial, una entre 17.576 posibles. Esta posiciones iniciales de la clave venían dictadas en los libros de códigos, que indicaban la clave para cada día y que estaba a disposición de toda la red de comunicaciones. Aunque distribuir la clave es algo pesado se podría enviar un libro con 28 claves para todo un mes. En cambio la cifra de cuaderno único requería una clave para cada mensaje con lo que la creación y distribución de claves era una tarea inmensa. El emisor codificaba el mensaje el cual era enviado por el operador de radio al receptor.
El receptor, que disponía de otra máquina enigma y el libro de códigos, colocaba los modificadores en la posición indicada para ese día, y tecleaba el texto cifrado, con lo cual le iba apareciendo el texto llano. Esto sólo era posible si existía el reflector. Por ejemplo la letra A podía estar cableada con la F, pero la F podía estar cableada con la H, el reflector evitaba esto, y si la A codificaba F, la F era codificada como A, así el emisor y el receptor compartían claves sin necesidad de cambiar las posiciones internas de la máquina.

No hace falta decir que era muy importante que el libro de códigos no cayera en manos enemigas, sobretodo si tenía una máquina enigma. Pero con la enigma y sin los códigos poco podían hacer, sólo probar las 17.576 posiciones posibles de los rotores o modificadores. Probar una por minuto (colocar rotores y probar un trozo de texto) le llevaría unas 2 semanas, tiempo demasiado largo. Pero claro, si ponemos a 20 personas haciendo las pruebas, obtendrían el mensaje en menos de 1 día. Por eso Scherbius mejoró la máquina. Podría haber puesto más rotores, pero la máquina hubiera sido demasiado grande y pesada para ser transportada por el campo de batalla. Así que utilizó rotores que pudieran ser cambiados en sus posiciones, es decir el primer rotor podía ponerse el tercero, el segundo ponerlo en la primera posición, y el tercero en segundo puesto. Hay seis maneras de poder colocar los 3 rotores por lo que el nivel de codificacion aumenta en un factor de 6.
Además añadió un clavijero entre el teclado y el primer rotor, lo que permitía cambiar algunas letras antes de que entraran en el modificador. Puso 6 cables intercambiables, para poder intercambiar 6 pares de letras. Las modificaciones de las posiciones de los rotores y de los clavijeros tambien debían estar indicadas en los libros de códigos por supuesto.
En la siguiente figura vemos el resultado del clavijero con dos letras intercambiadas en un alfabeto de 6 letras:


Si calculamos el número de claves posibles teniendo en cuenta estas modificaciones obtenemos la friolera de 10.000.000.000.000.000, o sea diez mil Billones de claves.

¿No os gustaría estar en la piel de los criptoanalistas verdad?

No hay comentarios: