domingo, 15 de marzo de 2015

Criptografía (II): la máquina Enigma (I)

Posiblemente la máquina de cifrado más famosa del siglo XX fue la máquina Enigma, utilizada por el ejército alemán en la II Guerra Mundial.

Se trataba de una máquina electromecánica que automatizaba el proceso de cifrado y descifrado de mensajes utilizando un sistema de sustitución polialfabético con tal número de alfabetos involucrados que se consideraba la hacían invulnerable a los métodos de criptoanálisis conocidos hasta la fecha.

La máquina Enigma constaba de una unidad de cifrado de varios rotores (discos circulares planos), montados sobre un mismo eje, con 26 contactos eléctricos (uno por cada letra del alfabeto inglés) en cada una de las caras de cada rotor.

Además, también tenía una batería, un teclado similar al de una máquina de escribir y un panel de luces (una por cada letra del alfabeto inglés).

Para cifrar los mensajes se introducía mediante el teclado cada carácter del texto a cifrar y en el panel de luces se mostraba el carácter cifrado que le correspondía.

Al pulsar el operador en el teclado una letra del mensaje a cifrar la corriente eléctrica de la batería se dirigía hacia el contacto eléctrico correspondiente a la letra con la que se conectaba en la primera cara del primer rotor, desde ahí al contacto de la letra con la que se conectaba en su cara posterior y después hacia el de la letra con la que se conectaba en la primera cara del segundo rotor, y así sucesivamente hasta atravesar todos los rotores. A partir de ahí y a través de un reflector, en el camino de vuelta la corriente eléctrica atravesaba de nuevo todos los rotores (contactos de las letras conectadas en ambas caras) hasta la salida del primer de ellos, que, a su vez, se conectaba a una de las letras del panel de luces, diferente a la letra introducida en el teclado, que el operador apuntaba y después, una vez completado el proceso de cifrado de todo el mensaje, transmitía.

Ya hablaremos de la operación para descifrar los mensajes (que adelanto que era la misma, siempre y cuando se dispusiera de la misma máquina y se conociera la "clave"), pero hasta el momento queda claro, ¿no?. Pues, por favor, que alguien me lo explique que yo no he entendido nada :).

Pues bien, para intentar entenderlo me propongo diseñar la primera versión de mi propia máquina Enigma (comparto lo que voy aprendiendo sobre ella, pero igual tengo que ir haciendo correcciones a medida que vaya estudiando su funcionamiento o si algún lector de este humilde blog me indica que me he equivocado al exponerlo).

Considerando los cuatro elementos fundamentales que he comentado que la componían (aunque ya he dicho que había alguno más, e incluso se añadió algún otro para hacer todavía más complejo el criptoanális): una batería, un teclado, un rotor para la unidad de cifrado y un panel de luces, el esquema de funcionamiento para la primera versión de mi máquina Enigma podría ser el siguiente:

En mi primera versión de la máquina Enigma, con el rotor en su posición inicial, cada uno de los caracteres del alfabeto inglés (26) está conectado desde el teclado al contacto que le corresponde al mismo carácter en el rotor, éste al contacto de otro carácter del rotor, y este último a la luz del panel que corresponde a ese carácter.

De tal forma que si el operador pulsa en el teclado un carácter correspondiente al texto en claro se iluminará en el panel de luces el carácter conectado en el rotor al carácter del texto en claro. El carácter iluminado sería el carácter correspondiente al mensaje cifrado.

Además, en mi primera versión de esta máquina, el rotor puede ser girado manualmente por el operador hasta poner el carácter que desee en el indicador de posición. Ese carácter es la clave con la que se cifrará el mensaje.

Supongamos ahora que queremos cifrar el mensaje "PRUEBA" con la clave "A". Para ello, el operador giraría el rotor hasta hacer coincidir el carácter "A" con el indicador de posición, tal y como se muestra en la figura.

Veamos el proceso de cifrado:


Para descifrar el mensaje, otro operador con una máquina igual y conociendo la clave simplemente giraría el rotor hasta hacer coincidir el carácter "A" con el indicador de posición e introduciría mediante el teclado cada carácter del mensaje cifrado, tras cada uno de los cuales se iluminaría el carácter correspondiente al texto en claro. De la siguiente forma:


Hasta aquí mi primera versión de la máquina no es gran cosa (cifrado muy débil), ya que se trata de un sistema de sustitución monoalfabético (utiliza un solo alfabeto y, por tanto, cada carácter del texto a cifrar se sustituye siempre por el mismo carácter en el texto cifrado), es decir, sólo he conseguido automatizar los procesos de cifrado y descifrado del cifrado César y mejorarlo un poco, ya que el desplazamiento para sustituir una letra por otra no es fijo y, además, el desplazamiento concreto entre un determinado carácter y aquel que lo sustituye depende de la clave que se utilice (26 posibilidades).


Pero incluyamos una característica más a esta primera versión de mi máquina: con cada pulsación de una tecla el rotor gira un veintiseisavo (1/26) de una vuelta completa.

Veamos como funcionaría ahora el proceso de cifrado del mensaje "ROTOR" con la clave "A". Para ello, como ya sabemos, el operador debe girar el rotor hasta hacer coincidir el carácter "A" con el indicador de posición:


Como se ve en el ejemplo, la primera versión de mi máquina Enigma ya cifra utilizando un sistema de sustitución polialfabético (26 alfabetos), ya que cada letra no se sustituye siempre en el texto cifrado por el mismo carácter (en el ejemplo la primera "R" se sustituye por "T", mientras que la segunda se sustituye por "Z"), pero aún así sigue presentando un cifrado débil.

Y para descifrar, como siempre, otro operador con una máquina igual giraría el rotor hasta hacer coincidir la clave ("A") con el indicador de posición e introduciría mediante el teclado cada carácter del mensaje cifrado. De la siguiente forma:


En posteriores posts intentaré completar esta primera versión con nuevas características y elementos hasta aproximarme lo más posible a una máquina Enigma similar a las utilizadas por el ejército alemán en la II Guerra Mundial.

4 comentarios:

  1. Hola,
    Me preguntaba si me podrías explicar mejor el ejemplo 4 ,por favor, la T pasa a U, la U pasa a la S y no entiendo como pasa de S a R.

    Muchas Gracias

    ResponderEliminar
  2. Buenas Anónimo:

    En el ejemplo 4, con el indicador en la posición de la letra "A" y antes de pulsar cualquier tecla, el conector al que está conectado cada letra del teclado está situado encima de la misma letra del rotor y lo mismo para el conector al que está conectado cada una de las lámparas del panel de luces.

    Así, si al pulsar una tecla el rotor no girara la corriente iría de la letra pulsada al conector situado encima de esa misma letra del rotor, de ahí y mediante el cableado interno del rotor a la letra conectada con ella, y de ahí a la lámpara conectada con el conector que está encima de esta última (la lámpara correspondiente a esta misma última letra, ya que el rotor no ha girado).

    En el ejemplo 4, con el indicador de posición en la letra "A" y si el rotor no girara, por ejemplo al pulsar la letra "T" la corriente iría al conector situado encima de la letra "T" del rotor, de ahí a la letra "V" (cableado interno del rotor) y de ahí a la lampara conectada con el conector encima de la letra "V", es decir, la lámpara "V", ya que el rotor no ha girado.

    Ahora bien, si tras pulsarse una letra del teclado el rotor gira un veintiseisavo de vuelta (una letra) en sentido contrario al de las agujas del reloj, los contactos, tanto conectados al teclado como al panel de luces, estarán situados sobre cada letra inmediatamente siguiente. Con el indicador de posición en la letra "A": el de la "A" sobre la "B", el de la "B" sobre la "C"..., el de la "R" sobre la "S", el de la "S" sobre la "T", el de la "T" sobre la "U",...

    De esta forma si pulsamos la "T" en el teclado la corriente iría al contacto situado sobre la "U", por el cableado interno del rotor de la "U" a la "S", y esta última tendría encima el conector conectado con la lámpara correspondiente a la "R", encendiéndose dicha lámpara.

    No sé si lo he explicado muy bien, pero si te surgen dudas o no he sido capaz de explicarlo convenientemente, no dudes n preguntar.

    ResponderEliminar
  3. Buenas Anónimo:

    Tras releer la respuesta igual no queda muy claro. Los gráficos que hay en esta entrada pretenden ser explicativos, para comprender a un primer nivel cómo funcionaba la máquina enigma y, en consecuencia, me he permitido alguna licencia para ello.

    Para comprender mejor cómo era el circuito eléctrico de la máquina mira la tercera entrada.

    Un saludo,

    ResponderEliminar
  4. Hola Mikel,
    Muchas gracias por tu respuesta, me ha quedado claro.
    Un saludo.

    ResponderEliminar