Cripto

Introducción §

El cifrado Enigma fue un cifrado de campo utilizado por los alemanes durante la Segunda Guerra Mundial. La Enigma es una de las máquinas de cifrado históricas más conocidas, y en realidad se refiere a una serie de máquinas de cifrado similares. La primera máquina Enigma fue inventada por un ingeniero alemán llamado Arthur Scherbius al final de la primera guerra mundial. Se utilizó comercialmente a partir de principios de la década de 1920 y también fue adoptada por los servicios militares y gubernamentales de varios países, sobre todo por la Alemania nazi antes y durante la Segunda Guerra Mundial. Se produjeron varios modelos diferentes de Enigma, pero el modelo militar alemán, la Wehrmacht Enigma, es la versión más comúnmente discutida.

Si desea cifrar algunos de sus propios mensajes Enigma, eche un vistazo al ejemplo de javascript.

El Algoritmo §

Esta sección hablará de la Enigma I aka Wehrmacht Enigma, otras variantes son similares en la operación. La «clave» de la enigma consta de varios elementos:

  1. Los rotores y su orden
  2. Las posiciones de inicio de los rotores
  3. The ringstellung, o ajustes de los anillos
  4. Steckerverbindungen, o ajustes del tablero de enchufes

Para información sobre los procedimientos utilizados por los alemanes durante la Segunda Guerra Mundial a la hora de enviar mensajes Engima, incluyendo cómo se ajustaban los indicadores, véase esta descripción.

Los rotores §

Supongamos que nuestros rotores son I,II,III moviéndose de izquierda a derecha, y que estamos tratando de cifrar la letra ‘A’. Asumiremos por ahora que mientras la letra ‘A’ es cifrada, cada rotor está en su posición inicial (‘AAA’).Como nuestros rotores son I,II,III moviéndose de izquierda a derecha, el carácter A pasará primero por el rotor III. Cada rotor aplica una operación de sustitución simple. La tabla de sustitución para el rotor III se puede ver a continuación.

ABCDEFGHIJKLMNOPQRSTUVWXYZBDFHJLCPRTXVZNYEIWGAKMUSQO

B se sustituye por D, C se sustituye por F, etc. Así que después de que la letra ‘A’ pase por el rotor, sale como ‘B’. La letra ‘B’ se introduce ahora a través del rotor II, donde se sustituye por ‘J’, etc. La mejor forma de representarlo es mediante una tabla (para una descripción completa de los cableados de los rotores, véase esta página de la wikipedia):

III II I Reflector inv(I) inv(II) inv(III)
A -> B B -> J J -> Z Z -> T T -> L L -> K K -> U

Después de que la carta pase por los rotores III,II,I, llega al reflector y se somete a otra sustitución simple. Después de salir del reflector, la letra vuelve a pasar por los rotores en sentido inverso (esto significa que se aplica la sustitución inversa).Podemos ver en la tabla que después de que la letra cifrada vuelve a salir del rotor III al final, nos quedamos con la letra U. Un paso importante que aún no he mencionado es el hecho de que los rotores se incrementan antes de que cada letra sea cifrada. Si las posiciones de inicio de los rotores son ‘FEQ’, entonces primero se incrementarán a ‘FER’ antes de que la primera letra sea descifrada.

Incrementando los rotores §

Un error común al implementar el enigma es asumir que los rotores actúan como un cuentakilómetros estándar, hay sin embargo algunas diferencias clave. Cada rotor tiene una muesca que provoca el paso del rotor a su izquierda. El rotor I hace que el siguiente rotor pise en la transición de Q a R, el rotor II en la transición E a F, etc. Los rotores I a V se utilizan en el enigma de la Wermacht, más tarde se añadieron más rotores que tenían dos muescas.

I II III IV V VI VII VIII
Q E V J Z Z,M Z,M Z,M

Hay un detalle adicional que confunde, el del «doble paso». Cuando un rotor pisa, también lo hace el que está a su derecha. Esto no se nota cuando el segundo rotor pisa, ya que el primer rotor pisa cada vez que se pulsa una tecla. Sin embargo, cuando el tercer rotor (el más a la izquierda) pisa, hace que el segundo rotor también pise. Esto significa que el período de las máquinas no es 26x26x26, pero sólo 26x25x26.

El Ringstellung §

El Ringstellung (ajustes del anillo) se proporcionan generalmente como una cadena de 3 letras, por ejemplo, ‘FAM’ (o alternativamente como números entre 1 y 26, que representan las letras). En la discusión anterior he asumido que el cifrado de sustitución simple de cada rotor era fijo. La configuración de los anillos ofrece la posibilidad de cambiar el cifrado de sustitución de la siguiente manera. Con una configuración de anillo de ‘A’ (o 1), la sustitución del rotor I se parece a esto:

ABCDEFGHIJKLMNOPQRSTUVWXYZEKMFLGDQVZNTOWYHXUSPAIBRCJ

Con una configuración de anillo de ‘B’ (o 2), la sustitución del rotor I se parece a esto:

ZABCDEFGHIJKLMNOPQRSTUVWXYEKMFLGDQVZNTOWYHXUSPAIBRCJ

Las Steckerverbindungen §

Las steckerverbindungen (tablero de enchufes) es una capa de seguridad añadida que consiste en 13 cables que se conectan a enchufes en la parte frontal de la máquina enigma.Cada cable conecta dos letras, por ejemplo, la P con la O. Estos emparejamientos se especifican como parte del material de la clave. Cuando se teclea una letra, antes de que entre en el primer rotor, se somete a la sustitución según el tablero de conexiones, y después de que salga la letra se somete de nuevo a la sustitución del tablero de conexiones antes de salir. Un ejemplo de configuración del tablero es el siguiente: PO ML IU KJ NH YT GB VF RE AC (Esto significa que P y O se intercambian, M y L se intercambian, etc.).

Si utilizamos el ejemplo anterior en el que la letra ‘A’ fue encriptada con los rotores I, II y III con las posiciones de inicio AAA, tuvimos la letra A encriptada como una U. Si ahora tenemos en cuenta el plugboard, utilizando la configuración del plugboard en el párrafo anterior, la ‘A’ se traduce primero a una ‘C’ antes del cifrado. El cifrado continúa como de costumbre, esta vez la ‘C’ sale como una ‘J’. Esta letra se dirige de nuevo a través del tablero para ser sustituida por una «K». Así que ahora tenemos una «A» que se cifra como una «K» con el plugboard en uso. El plugboard aumenta significativamente la fuerza del cifrado de enigma como un todo, más que la adición de otro rotor podría.

Javascript Ejemplo §

Plaintext

ajustes de clave:
ajustes del anillo:
Rotores:
Configuración de la placa de enchufe:

Texto cifrado

Otras implementaciones §

Para cifrar tus propios mensajes en python, puedes utilizar el módulo pycipher. Para instalarlo, utilice pip install pycipher. Para descifrar mensajes con el cifrado Enigma (u otro cifrado, vea aquí la documentación), vea el ejemplo aquí.

Criptoanálisis §

Para algunos códigos para descifrar automáticamente los mensajes Enigma vea Criptoanálisis de Enigma.

Se ha trabajado mucho en descifrar Enigma, algunos métodos como el rodding y el buttoning up se usaron durante la segunda guerra mundial, pero requieren ‘cribs’, o piezas conocidas de texto plano. Estos métodos se discuten en la página de wikipedia.

Entre los enfoques más modernos se encuentra el documento de Jim Gillogly ‘Ciphertext only Cryptanalysis of the Enigma’. Una carta de seguimiento que corrige algunos errores en el documento se puede encontrar aquí. Otro documento que se basa en el de Jim Gillogly es «Applying Statistical Language Recognition Techniques in the Ciphertext only Cryptanalysis of Enigma», de Heidi Williams. Otro recurso interesante es The Cryptographic Mathematics of Enigma.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.