Está en la página 1de 94

Universidad Politécnica

de Madrid
Escuela Técnica Superior de
Ingenieros Informáticos

Doble Grado en Ingeniería Informática y en Administración y


Dirección de Empresas

Memoria de Seguimiento

Criptoanálisis de las máquinas ENIGMA

Autor: Adrián Arana Hernández


Tutor(a): Jorge Dávila Muro

Madrid, mayo, 2023


Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la
Universidad Politécnica de Madrid para su defensa.

Trabajo Fin de Grado


Grado en Ingeniería Informática y en Administración y Dirección de Empresas
Título: Criptoanálisis de las Máquinas Enigma
05/2023

Autor: Adrián Arana Hernández

Tutor:
Jorge Dávila Muro
Lenguajes y Sistemas Informáticos e Ingeniería de Software
ETSI Informáticos
Universidad Politécnica de Madrid

i
Resumen
Para la realización de este trabajo se comenzó con una investigación tanto
técnica como histórica de las máquinas Enigma, desde su relevancia hasta su
funcionamiento. Una vez entendidos los aspectos más relevantes se trató de
implementar un simulador de la máquina Enigma a la vez que se comenzaba a
buscar información sobre su criptoanálisis.
Al desarrollar el simulador de la máquina Enigma se obtuvo un conocimiento
prácticamente total del funcionamiento de la máquina y por lo tanto, se pudo
comenzar en su totalidad a su criptoanálisis.
A la vez que se obtenían conocimientos relacionados con el criptoanálisis de la
máquina se comenzaba a documentar todo lo aprendido en una primera versión
sin formato de la memoria final.
Se decidió optar por comenzar con el criptoanálisis en escenarios de “Known-
Plaintext”. Una vez tomada la decisión, se profundizó en técnicas como las de
Marian Rejewski y obviamente, las bombas de Turing y su funcionamiento.
Cuando se completó el entendimiento de estas técnicas, se comenzó a
implementar un programa en Python que consiguiera obtener la clave de un
mensaje cifrado a partir de una criba dada, basándose en el funcionamiento de
“la bombe”. Con esto se completó el exhaustivo criptoanálisis de la máquina en
este escenario.
Una vez finalizada esta fase, se planteó el problema más complicado en el
trabajo, el criptoanálisis de la máquina Enigma en situaciones de “CipherText-
Only”. Para ello se investigó en numerosos artículos obteniendo diversos
métodos e incluso programas que conseguían obtener la clave de algunos
cifrados. Sin embargo, se trató de dar un enfoque distinto y más eficiente que
el de las técnicas encontradas.
En cuanto se llegó a este punto, se plantearon nuevos retos, como la posibilidad
de aumentar el rendimiento de la búsqueda de claves, el orden de búsqueda o
la condición de parada necesaria para encontrar la clave correcta.
Al final, se desarrolló un programa capaz de atacar mensajes cifrados por la
máquina Enigma a un buen nivel.
Por último, se elaboró una memoria definitiva, con un formato adecuado, que
recoge todos los aspectos necesarios para un trabajo de esta magnitud,
comenzando por abordar el contexto histórico para poner al lector en situación,
explicando tanto los componentes como el funcionamiento de la máquina
Enigma, utilizando ejemplos muy visuales y finalizando con la exposición del
criptoanálisis investigado y desarrollado.
Se finaliza este trabajo con una conclusión y analizando el impacto que el mismo
puede llegar a tener.

ii
Summary
This project began with a technical and historical investigation of the Enigma
machine, from their relevance to their operation. Once the most relevant aspects
were understood, a simulator of the Enigma machine was implemented. At the
same time, information about Enigma cryptanalysis began to be searched.
Thanks to the Enigma machine simulator development, a practically total
knowledge of the operation of the machine was obtained and, therefore, it was
possible to start focusing on its cryptanalysis.
At the same time that knowledge related to the cryptanalysis of the machine
was obtained, everything that had been learned began to be documented in a
first version of the final memory without format.
It was decided to start with the cryptanalysis in “Known-Plaintext” situation.
Once the decision was made, techniques such as Marian Rejewski’s technique
and obviously Turing bombs and their operation were studied.
When the understanding of these techniques was completed, a Python program
began to be implemented with the aim of obtaining the key of an encrypted
message from a given plaintext, based on the operation of "la bombe". This
completed the exhaustive cryptanalysis of the machine in this situation.
Once this phase was finished, the most complicated problem in the work was
raised, the cryptanalysis of the Enigma machine in “CipherText-Only”
situations. For this, numerous articles were investigated, obtaining various
methods and even programs to obtain the key of some encryptions. However,
an attempt was made to give a different and more efficient approach than
techniques found.
As soon as this point was reached, new challenges raised, such as the possibility
of increasing the performance of the search for keys, the search order or the
stop condition needed to find the correct key.
In the end, a program with the capacity of attacking messages encrypted by the
Enigma machine at a good level was developed.
Finally, a final document was prepared, with an appropriate format, which
includes all the necessary aspects for a project of this magnitude, beginning by
giving the historical context to put the reader in a situation, explaining all the
components and the operation of the Enigma machine, using very visual
examples and ending with the exposition of the researched and developed
cryptanalysis.
This work ends with a conclusion and analyzing the impact that it can have.

iii
Tabla de contenidos
1 Introducción ......................................................................................1
2 Desarrollo ..........................................................................................3
2.1 Contexto histórico .............................................................................. 3
2.2 Criptología, criptografía, criptoanálisis y cifrados predecesores a
Enigma ........................................................................................................ 5
2.3 Máquina Enigma .............................................................................. 11
2.3.1 Componentes ............................................................................. 11
2.3.1.1 Teclado ................................................................................... 11
2.3.1.2 Tablero de conexiones ............................................................. 12
2.3.1.3 Rotores ................................................................................... 12
2.3.1.4 Reflector ................................................................................. 13
2.3.1.5 Panel de luces ......................................................................... 14
2.3.2 Funcionamiento ......................................................................... 15
2.3.2.1 Clave....................................................................................... 15
2.3.2.2 Algoritmo de cifrado y descifrado ............................................ 19
2.3.2.3 Malas prácticas ....................................................................... 32
2.3.3 Complejidad teórica ................................................................... 34
2.3.4 Variantes destacadas ................................................................. 38
2.3.4.1 Enigma comercial ................................................................... 38
2.3.4.2 Enigma militar ........................................................................ 38
2.3.4.3 M4 .......................................................................................... 39
2.3.5 Ejemplos de cifrados reales ........................................................ 40
2.3.6 Simulador de máquina Enigma .................................................. 42
2.3.6.1 Herramientas empleadas ........................................................ 42
2.3.6.2 Ejemplos de uso y funcionamiento .......................................... 43
2.4 Criptoanálisis de las máquinas Enigma ............................................ 49
2.4.1 Principales debilidades de la máquina Enigma ........................... 49
2.4.2 Método de Marian Rejewski ........................................................ 52
2.4.3 Criptoanálisis en escenarios de “Known-Plaintext” y palabra
probable ................................................................................................. 56
2.4.3.1 Alan Turing y la “bombe” ........................................................ 56
2.4.3.2 Implementación de ataque “Known-Plaintext” ......................... 67
2.4.3.3 Comparación complejidad en los ataques con la capacidad de
computación actual. ............................................................................ 68
2.4.4 Métodos modernos de criptoanálisis en situaciones de “CipherText-
Only”…………….. .................................................................................... 68
2.4.4.1 Indicadores matemáticos ........................................................ 69
2.4.4.2 Ataques actuales en escenarios de “CipherText-Only” ............. 72
2.4.4.3 Implementación ataque “CipherText-Only”.............................. 74

iv
3 Resultados y conclusiones ...............................................................81
3.1 Resultados obtenidos a cifrados de la máquina Enigma ................... 81
3.2 Conclusiones .................................................................................... 82
4 Análisis de impacto..........................................................................83
4.1 Impacto en criptografía..................................................................... 83
4.2 Impacto en informática..................................................................... 83
5 Bibliografía ......................................................................................84

v
1 Introducción
El presente trabajo se va a centrar en realizar un análisis exhaustivo sobre la
máquina Enigma, una máquina basada en rotores, que se utilizaba para cifrar
mensajes en la Segunda Guerra Mundial.

Para realizar este análisis se han estudiado diversos aspectos de la máquina,


como su diseño en profundidad y su funcionamiento al detalle, así como sus
debilidades y por lo tanto los métodos de criptoanálisis para romper su cifrado
en situaciones de “Cyphertext-Only”, “Known-Plaintext” y de palabra probable.

Este trabajo va a buscar mostrar al mundo un estudio exhaustivo sobre la


máquina Enigma desde diversos campos como las matemáticas, historia,
criptografía e informática, pero siempre con un enfoque didáctico.

Primeramente, se va a realizar una profunda investigación para conocer el


origen de la máquina Enigma, así como su evolución, haciendo hincapié en el
papel que jugó en la Segunda Guerra Mundial a nivel histórico. Acto seguido,
se va a redactar detalladamente la estructura, diseño, funcionamiento y
variantes de las máquinas Enigma.

Con el fin de facilitar la comprensión del lector en cuanto al funcionamiento de


la máquina Enigma, se ha implementado una máquina Enigma gráfica, en
Python, de tal forma que será utilizada para que el lector comprenda los
algoritmos de cifrado y descifrado, paso a paso y visualmente. Además, se va a
recoger el empleo que se hacía de estas máquinas, y qué se necesitaba para que
hubiera comunicación entre dos personas. Se analizará detenidamente la
complejidad que supone un cifrado de esta máquina y sus consecuencias.

Se ofrecerán ejemplos reales de cifrado y de descifrado para demostrar que la


comunicación mediante mensajes cifrados por Enigma era posible y
relativamente segura.

Una vez se haya obtenido un conocimiento sólido sobre las máquinas Enigma y
todo lo que conlleva, se pasará a analizar estrategias para ataques a sus cifrados
en distintos escenarios, para ellos se estudiará detenidamente los métodos
matemáticos, estadísticos y criptoanalíticos utilizados en la Segunda Guerra
Mundial y su efectividad. Sumado a esto, se analizará de la misma forma los
ataques que se pueden realizar, con la capacidad de computación actual, y
nuevamente se evaluará su complejidad y su efectividad.

Para mostrar el alcance de los ataques, su complejidad y su evaluación se han


implementado una serie de ataques en distintas situaciones simulando los
distintos métodos que se desarrollarán a lo largo del trabajo.

Estas implementaciones se utilizarán para realizar experimentos prácticos con


el fin de estudiar cómo las configuraciones de la máquina Enigma afectan a la
efectividad de los ataques y a su vez, poner de manifiesto cuál es la robustez de
la máquina frente a este tipo de ataques.

Este trabajo también va a buscar exponer el impacto que tuvo tanto la máquina
Enigma, como su criptoanálisis en la criptografía actual y en la informática.

1
Como resumen, este trabajo va a tener como objetivo proporcionar unos
conocimientos muy sólidos de la máquina Enigma, sus cifrados, la historia que
se esconde detrás de la máquina, su criptoanálisis, complejidad, debilidades,
sus contribuciones en criptografía e informática, siempre desde un punto de
vista didáctico.

2
2 Desarrollo

2.1 Contexto histórico


La máquina Enigma es un dispositivo electromecánico inventado por Arthur
Scherbius en 1918. Arthur Scherbius fue un ingeniero, doctor e inventor
alemán nacido en la ciudad de Frankfurt y que murió en el año 1929, por lo que
no llegó a ver la magnitud real que tendría su invento en años posteriores. [1] Su
invento marcaría un antes y un después en la historia de la criptografía.

Figura 1. Arthur Scherbius, inventor de la máquina Enigma. [3]

Cabe destacar que la necesidad de cifrar mensajes se remonta a la antigüedad,


de hecho, se tiene constancia de que ya en las antiguas civilizaciones se
empleaban métodos para tratar de ocultar mensajes. [2] Sin embargo, no fue
hasta principios del siglo XX donde se comenzó a usar máquinas como aliadas
a la hora de cifrar, lo que supuso instalar los pilares que años después darían
paso a la criptografía moderna.
El detonante para que aparecieran las máquinas para cifrar mensajes, además
de los innegables avances tecnológicos y en las comunicaciones, fue la
importancia que se le comenzó a dar a la criptografía como herramienta bélica.
Es por esto por lo que se puede afirmar que la máquina Enigma llegó en el
momento justo para revolucionar el sistema de cifrado en las comunicaciones
de la Segunda Guerra Mundial.
Es importante destacar que pese a lo mencionado en el párrafo anterior sobre
la relación entre la máquina Enigma y la guerra, no nació como un instrumento
bélico, sino que en sus orígenes se utilizó civilmente para el cifrado en empresas
y en bancos. Fue años después cuando el ejército alemán comenzó a interesarse
por su potencial y decidió utilizarla como herramienta de cifrado en sus
comunicaciones. [3]

3
A lo largo de los años aparecieron distintas variantes de la máquina Enigma,
hasta el punto de que se crearon modelos específicos para las distintas fuerzas
del ejército, por ejemplo, la Kriegsmarine, la marina, no tenía el mismo modelo
de máquina Enigma que la Luftwaffe, el ejército del aire. Lo que complicó aún
más la tarea de atacar las comunicaciones del ejército alemán.
Pese a toda su evolución y mejoras, no sería hasta el estallido de la Segunda
Guerra Mundial cuando el mundo se enfrentaría al verdadero potencial de la
máquina Enigma. Es una evidencia que cuanto más se intensificaba la guerra
y más avanzaba, más importantes se hacían las comunicaciones y, por
consiguiente, para protegerse del enemigo, era de vital importancia que estas
comunicaciones fueran lo más difíciles posibles de interceptar, y en el caso de
que fueran interceptadas, cosa que era prácticamente imposible evitar, que
estas comunicaciones no aportasen ninguna información.
La máquina Enigma alcanzó tanta importancia en la Segunda Guerra Mundial
que para los Aliados se convirtió en una absoluta prioridad descifrar los
mensajes cifrados por esta máquina. De hecho, la historia del descifrado de la
máquina Enigma es probablemente una de las más conocidas de la historia de
la criptología.
Bien es cierto que, años antes de la Segunda Guerra Mundial el matemático
Marian Rejewski, logró romper el código de la máquina Enigma, gracias a
procedimientos matemáticos y de combinatoria, y a un mal uso por parte de los
alemanes en el cifrado de mensajes, ya que repetían la clave diaria dos veces. [4]

Figura 2. Marian Rejewski, matemático y criptógrafo polaco [4]

Sin embargo, para el inicio de la guerra los alemanes habían aumentado en dos
el número de rotores disponibles para seleccionar en la máquina y dejaron de
repetir la clave diaria dos veces, por lo que en el momento que estalló la guerra
los aliados no eran capaces de descifrar las comunicaciones alemanas.

4
Es entonces donde aparece el nombre de Alan Turing en Bletchley Park, el cual
fue capaz de mejorar los métodos existentes de criptoanálisis para afrontar el
reto de atacar el cifrado de la máquina Enigma. Alan Turing fue capaz de crear
una máquina que conseguía acelerar el proceso de descifrado, la cual fue
bautizada como la “bombe”, ya que era capaz de simular un gran número de
combinaciones en poco tiempo. Esto sumado a otros algoritmos matemáticos y
criptoanalíticos, y al gran conocimiento que se tenía de las comunicaciones
bélicas se pudo comenzar a descifrar mensajes del ejército alemán. [5]

Figura 3. La “bombe” (izquierda) y Alan Turing (derecha) [30]

La capacidad de descifrar mensajes cifrados por Enigma cambió por completo


el curso de la Segunda Guerra Mundial, ya que no solo los Aliados fueron
capaces de saber los movimientos que realizaría el ejército alemán, sino que
además el proyecto de Bletchley Park, al que llamaron “programa Ultra”, era
completamente secreto y por lo tanto los alemanes ni siquiera sabían que los
Aliados conocían sus comunicaciones. [6]

El conocer las comunicaciones alemanas se transformó directamente en


importantes avances en la guerra para los aliados, como la ventaja que
obtuvieron en la Batalla del Atlántico, la cual sin haber conseguido descifrar los
mensajes cifrados por Enigma hubiese acabado, muy probablemente, con la
caída de Reino Unido. [7] Más tarde, estos avances en la guerra para los aliados
se convertirían en 1945 en la victoria de la Segunda Guerra Mundial.

2.2 Criptología, criptografía, criptoanálisis y cifrados


predecesores a Enigma
Antes de comenzar a hablar sobre la máquina Enigma, su funcionamiento,
implicaciones y su criptoanálisis es importante explicar al lector qué es la
criptología, la criptografía y el criptoanálisis, así como la diferencia entre estos
conceptos.

La criptología es la ciencia que se va a encargar de estudiar y de poner solución


a la necesidad de aportar la máxima seguridad en el intercambio de mensajes
entre un emisor y un receptor. [8]

5
La criptografía es una rama incluida en la criptología, que va a consistir en la
implementación de técnicas que tienen como objetivo transformar un mensaje
de tal forma que solo pueda ser entendido por su emisor y por el receptor
correspondiente.

El criptoanálisis es un ámbito de la criptografía que va a tratar el estudio de


sistemas de cifrado con el objetivo final de romper estos sistemas.

Las actividades relacionadas con estos conceptos son muy antiguas, ya que la
necesidad de ocultar mensajes del ser humano a otras personas ha estado
latente en prácticamente toda la historia de la humanidad, en especial en
situaciones bélicas o incluso mercantiles. Por esto se puede afirmar que tanto
la criptología, como la criptografía, como el criptoanálisis han estado
evolucionando y perfeccionándose durante muchísimos años.

A continuación, se van a poner algunos ejemplos de sistemas de cifrado que se


usaron en la antigüedad y que sirvieron de inspiración, o bien, cuya evolución
permitió la existencia de la máquina Enigma.

Cifrado César

El primero que se va a explicar es el cifrado César, llamado así debido a que fue
utilizado por el emperador Julio César, en la Antigua Roma, para cifrar sus
comunicaciones. Su funcionamiento era muy simple, consistía en que, a partir
de un alfabeto, supongamos “ABCDEFGHIJKLMNOPQRSTUVWXYZ”, se
construía otro rotando este alfabeto las posiciones que se estimaran oportunas.
La clave, es decir, el elemento que debían conocer tanto el emisor como el
receptor del mensaje era el número de posiciones que se debían desplazar las
letras. Un ejemplo puede ser:

Supongamos el mensaje “CESAR”, cifrado con la clave 2:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

C D E F G H I J K L M N O P Q R S T U V W X Y Z A B

Tabla 1. Ejemplo de sustitución Cifrado César. Elaboración propia.

La primera fila de la tabla muestra el alfabeto original, mientras que la segunda


fila muestra el nuevo alfabeto creado a partir de rotar en dos posiciones el
original. De esta forma, al juntar los dos alfabetos hemos creado una sustitución
monoalfabética, es decir, un sistema de cifrado que se basa en que cada letra
del alfabeto se sustituye en el mensaje cifrado por otra, siendo así a lo largo de
todo el mensaje.

Para cifrar el mensaje del ejemplo, con la clave mencionada, se buscaría cada
letra del mensaje y se sustituiría por la letra que se encuentre en esa posición
en el nuevo alfabeto. La C se sustituiría por la E, la E por la G, la S por la U, la
A por la C y la R por la T, el mensaje cifrado sería “EGUCT”.

6
Para que el receptor del mensaje consiga descifrar el mensaje bastaría con
conocer la clave, en este caso dos, formar el nuevo alfabeto y hacer el proceso
inverso, buscar en el segundo alfabeto que letras le corresponden en el primero.

En este sistema de cifrado se solía emplear una rueda con dos alfabetos para
facilitar la tarea de cifrado y descifrado, bastaba con mover la rueda las
posiciones necesarias y comenzar a cifrar o descifrar.

Figura 4. Rueda para cifrado César. [31]

Cifrado Vigenère

Este sistema de cifrado puede considerarse una evolución del sistema anterior,
el de César, sin embargo, va a implementar un modelo de sustitución que va a
sentar una de las bases más importantes de la máquina Enigma, la sustitución
polialfabética. Este método de sustitución va a consistir en que la misma letra
de un mensaje puede estar cifrada a lo largo de este por letras distintas. Un
ejemplo de cifrado podría ser, a partir del texto en claro “VIGENERE” obtener el
texto cifrado “ASDFGHJK”. Como se puede observar, la misma letra, en este
caso la “E”, ha sido cifrada por las letras “F”, “H” y “K” respectivamente, es decir,
letras distintas. Esto complica enormemente las tareas de criptoanálisis. [9]

Una vez explicado la sustitución polialfabética se va a desarrollar el


funcionamiento del sistema de cifrado Vigenère. Para ello se va a utilizar la
siguiente tabla:

7
Figura 5. Tabla Cifrado Vigenère. [10]

Si se observa detenidamente la tabla, se puede llegar a la conclusión que


consiste en una cuadrícula con dos índices, cada letra de la fila superior y cada
letra de la columna de la izquierda, y que además cada fila en el interior de la
“cuadrícula” consiste en un alfabeto formado por un cifrado César desplazando
el alfabeto cada vez una posición más.

Una vez se tienen claro todos los elementos, se necesita una clave, que en este
cifrado puede ser una palabra, por ejemplo, “SAL” y un mensaje en claro,
“VIGENERE”. Pues bien, la forma de cifrar con este método es la siguiente:

Se pone el texto en claro junto a la clave, la cual se puede repetir las veces que
sea necesario hasta cubrir todo el mensaje que se quiere cifrar, en este caso:

Mensaje V I G E N E R E

Clave S A L S A L S A

Tabla 2. Ejemplo Cifrado Vigenère. Elaboración propia.

El último paso, es utilizar la tabla que se mostró antes como mapa de


coordenadas, es decir, para obtener la primera letra del mensaje cifrado, basta
con buscar la intersección entre la columna de la V y la fila de la S o viceversa,
en este caso la N, y así con cada par de letras. De esta forma, el mensaje cifrado
sería “NIRWNPJE”.

8
Para que el receptor descifre el mensaje, basta con que conozca la clave y
mediante el uso de la tabla encuentre en la fila o en la columna de la letra que
corresponda de la clave, la letra del texto cifrado. La letra correspondiente del
texto en claro será la fila o la columna, según si se ha empleado la columna o
la fila respectivamente en la clave, donde se encuentre la letra cifrada. [10] Para
que el lector lo comprenda mejor se utiliza el ejemplo anterior:

En el texto cifrado “NIRWNPJE” y clave “SAL”, para descifrar la primera letra, la


N, se va a buscar en la tabla la columna S, por ser la primera letra de la clave,
a continuación, en esta columna se va a buscar la N y se puede observar que
está en la fila de la V, por lo tanto, la V es la letra correspondiente en texto claro.

Cifrado Playfair

En esta ocasión, no se va a explicar el funcionamiento de este sistema de cifrado,


debido a la complejidad de su elaboración y de las reglas para el cifrado y
descifrado, además que su funcionamiento no es tan influyente como los
anteriores en la máquina Enigma. Sin embargo, tiene una característica
fundamental que sí que se pone de manifiesto en la máquina Enigma, esta
característica es que, si a las letras del texto en claro se le aplica la clave, en
este caso es una matriz formada a partir de una palabra, como resultado va a
dar lugar a dos letras cifradas, y viceversa.

Un ejemplo de este funcionamiento puede ser la situación en la que teniendo


las letras “LA” del texto en claro, al aplicar la clave produce las letras “KO”, pues
bien, al aplicar a las letras “KO” esta clave dará como resultado las letras “LA”.
[11]

LA CLAVE KO

KO CLAVE LA

Figura 6. Demostración de que si en cada iteración al resultado de un cifrado, se


le aplica la clave nuevamente se obtendrá el texto claro. Elaboración propia.

Se usan pares de letras ya que el funcionamiento del cifrado Playfair estaba


basado en pares de letras, sin embargo, en la máquina Enigma esta
característica se mantiene de forma individual. Esto quiere decir que, si por
ejemplo en la máquina Enigma se cifraba la letra A y da como resultado la letra
F, en esa misma iteración si se hubiese cifrado la letra F hubiese dado la letra
A.

9
Nomenclators

Los nomenclators son libros o documentos que recogen la sustitución de los


elementos de un alfabeto por otros símbolos. En estos libros, también solían
introducirse los bigramas o trigramas más frecuentes del lenguaje, estando
igualmente sustituidos por uno o varios símbolos. En ocasiones, se solía utilizar
algún texto para crear los Nomenclators, en función de las posiciones de las
letras en el texto. Se ofrece el siguiente ejemplo:

Se tiene el siguiente texto:

“Esto es un texto de ejemplo para crear un libro de códigos”

El Nomenclator basado en las posiciones de las letras resultante sería:

A: 23, 25, 29 B:35 C:26 D: 14, 38


E: 1, 5, 10, 15, 17, 28 G:40 I:34,39 J:16 L:20,33
M:18 N: 8,32 P:19,22 O: 4,13,21,37,41
R:24,27,30,36 S: 2, 6,42 T: 3,9,12 U: 7,31 X:11
Figura 7. Ejemplo de Nomenclator. Elaboración propia.

Por lo tanto, si se quería cifrar el mensaje:

“UN OJO NEGRO”

Un posible cifrado resultante sería:


31, 8, 4, 21, 32, 10, 40, 27, 13

Es importante destacar que hay más posibles cifrados para ese mismo
mensaje, ya que, una letra puede estar representada por varios números. De
hecho, al utilizar distintos números para cifrar la misma letra, se está
aumentando la seguridad, porque si, por ejemplo, se cifra la letra “O” dos
veces con el número “21”, se sabrá que es la misma letra, pero si se cifra una
vez con el “21” y otra con el “4” puede parecer que sean dos letras distintas.
Es un tipo de cifrado bastante influyente en la máquina Enigma, ya que le
aporta la idea de que una letra puede estar cifrada por distintos símbolos, es
decir, se trata de un cifrado polialfabético, y, además, se puede contemplar el
mismo proceso de guardado y transmisión de claves mediante un libro,
documento…

A lo largo de la historia ha habido muchos más sistemas de cifrado influyentes


en la máquina Enigma, sin embargo, los mencionados son los más
determinantes.

10
2.3 Máquina Enigma
La máquina Enigma es una máquina creada con la misión de cifrar mensajes,
de hecho, para ser más exactos al hablar de máquina Enigma se puede definir
a un conjunto de modelos con características, componentes y funcionamiento
muy similares. Los primeros modelos fueron creados y patentados por Arthur
Scherbius y Richard Ritter. Estas máquinas fueron empleadas por los nazis en
la Segunda Guerra Mundial y su criptoanálisis fue determinante para la victoria
de los Aliados en esta. [12]

Figura 8. Imagen de una máquina Enigma. [32]

2.3.1 Componentes

2.3.1.1 Teclado
El teclado en la máquina Enigma no es más que el mecanismo de entrada de la
señal eléctrica con la que va a funcionar. Consistía en una serie de botones,
muy similares a los de una máquina de escribir, donde cada botón representaba
una letra del abecedario. De esta forma se seleccionaba la letra que se quería
cifrar en cada iteración de la máquina Enigma, bastaba con pulsar el botón de
la letra A, por ejemplo, si la letra que correspondía en el mensaje en claro era la
A. Después de esto la máquina comenzaría toda su funcionalidad para
completar el cifrado de esta letra.

Figura 9. Teclado de la máquina Enigma. [33]

11
2.3.1.2 Tablero de conexiones
El tablero de conexiones consiste en una serie de agujeros que se muestran en
la parte anterior de la máquina, más concretamente dos agujeros por cada letra
del abecedario. La funcionalidad de estos agujeros es conectar dos letras
distintas de tal forma que el impulso eléctrico se intercambia, es decir, si antes
de pasar por el tablero de conexiones la señal eléctrica corresponde a la letra H
y esta está conectada a la letra T, la señal eléctrica al salir del tablero de
conexiones será la de la letra T. También existe la opción de no conectar una
letra con ninguna otra, de esta forma la señal eléctrica no será intercambiada
en el tablero de conexiones.

Figura 10. Tablero de conexiones de la máquina Enigma. [34]

Las letras se conectaban mediante un cable cuyas terminaciones o extremos


eran iguales. A modo de ejemplo, utilizando la imagen superior se puede
observar que están conectadas la letra O con la letra S y la A con la J. En lo que
respecta a las demás letras no sufrirán ninguna transformación por parte del
tablero de conexiones. Si se tiene un alfabeto de 26 símbolos como es el de la
imagen, se podrán emplear como máximo 13 cables, es decir, conectar 13 pares
de letras.
Este componente de la máquina Enigma se basa en una sustitución
monoalfabética a lo largo de todo el mensaje. Por ejemplo, si en el tablero de
conexiones se tienen conectadas la letra O con la S, será así durante todo el
mensaje, la letra O se sustituirá por la letra S y viceversa cada vez que la
corriente acceda al tablero de conexiones.
El empleo del tablero de conexiones supone uno de los mayores retos de la
configuración de la máquina Enigma para su criptoanálisis, ya que supondrá
un aumento enorme en el número de posibles claves del que se hablará más
adelante.

2.3.1.3 Rotores
Los rotores son la base del funcionamiento de la máquina Enigma. Su
funcionamiento o base de su funcionamiento es el sistema de cifrado César
explicado anteriormente. Básicamente cada rotor va a tener dos caras en las
que va a poseer un alfabeto distinto en cada una. Estos alfabetos van a estar
conectados de tal forma que van a formar otra sustitución monoalfabética, por
poner un ejemplo, si en el rotor entra una señal eléctrica correspondiente a la
letra B y esta está conectada a la letra K, la señal continuará como letra K.

12
Figura 11. Rotores de la máquina Enigma. [35]

Además, los rotores tienen una muesca, el notch, que sirve para hacer girar al
siguiente rotor en caso de llegar a esta muesca, la cual estará representada por
una letra y se podrá alterar su posición. Esta alteración da lugar a otra
configuración denominada Ring Settings.
Es importante destacar que las configuraciones de los rotores de la máquina
Enigma eran conocidas, de forma que el criptoanálisis de la máquina no se va
a basar en la búsqueda de estas configuraciones. Las configuraciones de los
rotores eran las siguientes: [13]

Rotor ABCDEFGHIJKLMNOPQRSTUVWXYZ NOTCH


I EKMFLGDQVZNTOWYHXUSPAIBRCJ Q-R
II AJDKSIRUXBLHWTMCQGZNPYFVOE E-F
III BDFHJLCPRTXVZNYEIWGAKMUSQO V-W
IV ESOVPZJAYQUIRHXLNFTGKDCMWB J-K
V VZBRGITYUPSDNHLXAWMJQOFECK Z-A
VI JPGVOUMFYQBENHZRDKASXLICTW Z-A/M-N
VII NZJHGRCXMYSWBOUFAIVLPEKQDT Z-A/M-N
VIII FKQHTLXOCBJSPDZRAMEWNIUYGV Z-A/M-N
BETA LEYJVCNIXWPBQMDRTAKZGFUHOS NO TIENE
GAMMA FSOKANUERHMBTIYCWLQPZXVGJD NO TIENE
Tabla 3. Sustituciones y notch de los rotores. [13]

2.3.1.4 Reflector
El reflector consiste en un conjunto de cables al que llega la señal eléctrica tras
pasar por los rotores, este tiene un objetivo similar al del tablero de conexiones,
crear una sustitución monoalfabética para todo el mensaje y al igual que en el
tablero de conexiones si una letra está conectada con otra, esta última está
conectada con la primera, es decir, si la A está conectada con la U, la U estará
conectada con la A. La principal diferencia con el tablero de conexiones es que
en el reflector todas las letras están conectadas. [13]

13
Figura 12. Reflector de la máquina Enigma. [36]

Este componente va a ser el encargado de devolver la señal eléctrica a los rotores


tras haber pasado una vez por estos. Esto deja una particularidad característica
de la máquina Enigma, una letra no puede ser cifrada por sí misma. Esto se
debe a que, pese a que en puntos posteriores se analizará el funcionamiento de
la máquina más en detalle, el reflector va a cambiar la corriente recibida, de tal
forma que la corriente de ida, la que llega al reflector, nunca va a ser la misma
que la de vuelta, la que sale del reflector.
Al igual que en los rotores las configuraciones o sustituciones de los reflectores
eran conocidas y eran las siguientes:

Reflector ABCDEFGHIJKLMNOPQRSTUVWXYZ
B YRUHQSLDPXNGOKMIEBFZCWVJAT
C FVPJIAOYEDRZXWGCTKUQSBNMHL
Tabla 4. Sustituciones de los reflectores. [13]

Como se puede observar en la tabla anterior, cada letra está conectada con otra,
es decir, se sustituye la corriente por la de otra y viceversa. Por ejemplo, en el
reflector B la letra C se sustituye por la U y la letra U por la C.
El reflector era uno de los menores problemas para los criptoanalistas ya que
había pocos modelos, y las sustituciones eran fijas a lo largo de todo el mensaje,
sin embargo, sí que multiplicaban las posibilidades de claves al tenerse en
cuenta con los demás componentes de la máquina.

2.3.1.5 Panel de luces


El panel de luces no era más que un panel con 26 bombillas, una por cada
símbolo del alfabeto que se estuviera usando, en este caso uno por cada letra
del abecedario. Tras pasar la corriente eléctrica por toda la máquina el final del
recorrido era la bombilla del panel de luces que correspondiera a la letra cifrada,
por lo tanto, su función era muy simple, mostrar al usuario qué letra
correspondía en el criptograma o en el texto en claro, según si se estaba cifrando
o descifrando, a la letra que él había pulsado. Esto se hacía iluminando la
bombilla correspondiente.

14
Figura 13. Panel de luces de la máquina Enigma. [37]

2.3.2 Funcionamiento

La máquina Enigma fue una de las primeras máquinas construidas y empleadas


con el objetivo de cifrar, por lo que su funcionamiento era bastante simple a la
par que eficaz. En este apartado se intentará mostrar al lector una visión
completa de todo lo necesario para poder cifrar y descifrar mensajes empleando
la máquina Enigma, así como hacerle entender la complejidad en cuanto a
número de posibles combinaciones que esta conllevaba.

2.3.2.1 Clave
Antes de comenzar con el funcionamiento propiamente dicho, es necesario
conocer cómo se construye la clave de la máquina Enigma. La clave de Enigma
era un conjunto de configuraciones de algunos de los distintos componentes,
explicados anteriormente, que debían conocer tanto el emisor como el receptor
del mensaje. El procedimiento para que ambos sujetos conocieran la clave en el
ejército nazi era el reparto de unos libros donde se escribía la clave con la cual
configurar la máquina cada día.

Figura 14. Libro de códigos de Enigma, utilizado por el ejército alemán. [38]

15
Lo cierto es que durante el periodo en el que se estuvo utilizando la máquina
para cifrar mensajes, se cambió numerosas veces el procedimiento para
establecer claves con el objetivo de aumentar la seguridad y a su vez
incrementar la dificultad para que los criptoanalistas no pudiesen descifrar los
mensajes cifrados por esta máquina. Sin embargo, todos los procedimientos
implicaban la necesidad de un libro de claves como el mostrado en la imagen
superior. A continuación, se va a utilizar esta imagen para mostrar cómo se
formaba una clave para un mensaje de la máquina Enigma y a su vez explicar
la configuración de los componentes:

Supongamos el día 31, el cual tiene los siguientes datos:

Datum
Datum
31

En este campo se va a mostrar el día del mes en el que utilizar la clave mostrada
en los siguientes campos. Es simplemente una fecha con la que emisor y
receptor pueden acordar que clave de todas emplear.

Walzenlage
Walzenlage
IV V I

El primer elemento de la clave de la máquina Enigma, a partir de aquí se


comienza a preparar la máquina para su cifrado. Este campo se refiere a qué
rotores utilizar y en qué orden. Como se vio en el apartado 2.3.1.3 había una
serie de rotores con distintas configuraciones que eran conocidas, pues bien, en
este ejemplo se colocará el rotor IV, 4 en números romanos, a la izquierda, el V
en el medio, 5 en números romanos, y el I a la derecha, 1 en números romanos.

Figura 15. Parte interna de la máquina Enigma. [39]

16
Para colocar estos rotores, había que levantar una tapa de la máquina, y
simplemente se colocaban los rotores que se indicaban y en el orden que
mostraba el libro de claves, de la forma que se muestra en la imagen superior,
conectados entre sí y el de la izquierda conectado al reflector.

Ringstellung
Ringstellung
10 14 02

Esta parte de la clave también corresponde a los rotores. Nuevamente recordar


que en el apartado 2.3.1.3 se mencionó que los rotores tenían una muesca que
hacía girar al siguiente rotor, de derecha a izquierda, y que la posición de esta
muesca era conocida. En este caso la del rotor IV (izquierda) se encuentra entre
la J y la K, aunque hay que aclarar que como no existe otro rotor más a la
izquierda esta muesca, el notch, no tendrá ningún efecto. En cuanto a los otros
dos rotores el V, tendrá el notch entre la Z y la A, y el I entre la Q y la R. Esto
va a implicar que cuando el rotor de la derecha rote de la Q a la R también lo
haga el del medio, y lo mismo pasará con el del medio y el de la izquierda cuando
el segundo cambie de la Z a la A. Se explicará con más detalle más adelante.
Lo importante en este punto es que se puede cambiar la posición del anillo
interno de cada rotor y el Ringstellung va a indicar cuántas posiciones. A
continuación, se muestra gráficamente:

Figura 16. Máquina Enigma con ring settings 01 01 02. Elaboración Propia.

En la fotografía superior, se puede observar como el anillo interno, el que


contiene el abecedario ordenado, se ha visto desplazado en una posición, ya que
el “01” indicaría que no se realiza ninguna modificación con respecto a la
configuración inicial del rotor. En este caso el rotor derecho tenía un
Ringstellung de 02, esto además de afectar al desplazamiento del rotor, que es
un efecto menor, lo que produce es que se desplaza el notch, es decir, ya no se
situaría entre la Q y la R, se situaría entre la P y la Q en términos prácticos.

17
De esta forma, lo que se está consiguiendo es alterar el momento en el que rotan
los rotores que se encuentran a la izquierda de este.

Steckerverbindungen

Steckerverbindungen
BF SD AY HG OU QC WI RL XP ZK

Este elemento de la clave supone el mayor quebradero de cabeza para los


criptoanalistas debido a que el número de posibles combinaciones es muy
elevado. Como se puede observar, esta parte de la clave consiste en 10 pares de
letras. Pues bien, estos diez pares de letras no son más que las letras que se
deben conectar en el tablero de conexiones. La B con la F, la S con la D…

Kenngruppen

Kenngruppen
yqv vuc xxo gvf

Este campo es uno de los procedimientos empleados para asignar otro elemento
de la clave, ya se ha mencionado anteriormente que los procedimientos iban
cambiando a lo largo de los años. En este ejemplo, el procedimiento consistía
en elegir cualquiera de esos 4 grupos de 3 letras y ponerlo al comienzo del
mensaje sin cifrar precedido de otras dos letras que quisiera el emisor del
mensaje.
Por ejemplo, el emisor del mensaje determina que va a utilizar de las 4 opciones
anteriores (“yqv”, “vuc”, “xxo” y “gvf”) el conjunto de tres letras “xxo”. Una vez
decidido esto, elegirá otras dos letras que poner antes que estas, se supone “ht”.
De esta forma el inicio del mensaje que va a mandar sería HTXXO.
Sin embargo, aún no se ha cifrado nada, esto es porque se acaba de introducir
otra de las claves para configurar la máquina Enigma. Una vez escrito el
conjunto de 5 letras anterior, el emisor del mensaje rotará las posiciones de los
rotores, hasta que el de la izquierda llegue a la posición de la letra X, el del
medio a la de la letra X y el de la izquierda a la de la letra O. La H y la T con las
que se inicia el mensaje no significan nada, simplemente son una forma de
ocultar la clave. [14]
Una vez los rotores están en las posiciones indicadas se comienza a cifrar el
mensaje. Es importante destacar que al cambiar la posición de un rotor cambia
completamente el cifrado de la letra que se quiera cifrar y de las siguientes,
como se verá en el siguiente apartado.
De esta forma un posible mensaje enviado por el emisor podría ser:

HTNCI KJRFD BTRHG ASWDF LOPSD…

18
El receptor del mensaje lo recibirá, y buscará en las letras 3, 4 y 5 uno de los
conjuntos que se encuentre en el libro de claves. Una vez identificado, colocará
los rotores en las posiciones adecuadas, y con el mensaje recibido, ignorará los
dos primeros caracteres (verde), los tres siguientes son las posiciones de los
rotores (azul) y descifrará el resto del mensaje (rojo).
Una vez más, es importante destacar que este es solo uno de los muchos
procedimientos que se pusieron en práctica para ocultar la clave y hacer las
comunicaciones lo más seguras posibles, lo realmente destacable en este punto
es que la posición de los rotores también formaba parte de la clave de la
máquina Enigma.

Reflector
Pese a que en la imagen del libro de claves no se hace referencia en ningún
momento a este componente de la máquina, el empleo de un reflector u otro
puede considerarse otro elemento de la clave, ya que altera el resultado del
cifrado, al aplicar una sustitución u otra al llegar a este componente.

2.3.2.2 Algoritmo de cifrado y descifrado


Una vez se ha analizado los elementos necesarios para configurar la clave de la
máquina Enigma se puede exponer con detalle el procedimiento que utilizaba
la máquina para cifrar y para descifrar mensajes. Para esto se va a utilizar un
software desarrollado que simula una máquina Enigma de forma gráfica.
Con el fin de facilitar la comprensión del lector y que además pueda asentar los
conocimientos relacionados con la clave de la máquina Enigma, para que el
lector sea capaz de cifrar y descifrar mensajes, se va a proceder a la explicación
por pasos, siendo el primero de ellos la asignación de la clave:

1. Configuración de la máquina Enigma

El primer paso para cifrar un mensaje de la máquina Enigma es


seleccionar la clave que se va a emplear en el cifrado del mensaje. Se
supone una configuración básica, primeramente, para explicar cada
componente en el software.

La clave de la siguiente máquina Enigma será:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III AAA 01 01 01 AB CD
Tabla 5. Clave de máquina Enigma. Elaboración propia.

19
Figura 17. Máquina Enigma con la clave anterior. Elaboración propia.

El resultado de utilizar esa clave es una máquina Enigma con la


configuración de la imagen anterior. Se va a explicar que es cada
elemento.

Figura 18. Representación del reflector. Elaboración propia.

El recuadro verde corresponde al reflector, en este caso se ha elegido el


reflector B, por lo que si se consulta el apartado 2.3.1.4, se puede
observar que este realiza la sustitución del abecedario que se ve en la
imagen superior a la izquierda por el abecedario que está más a la
derecha. Por poner un ejemplo, si le llegase una señal eléctrica
correspondiente a la letra Y, la sustituiría por la señal eléctrica de la letra
A.

20
Figura 19. Representación de los rotores. Elaboración propia.

Los recuadros morado, amarillo y azul, corresponden al rotor de la


izquierda, el del medio y el de la derecha respectivamente, al haber
seleccionado la configuración de rotores “I II III”, obtenemos las
correspondientes sustituciones que se muestran en la imagen superior.
Para entender cómo influyen los elementos de la clave correspondientes
a las posiciones iniciales, las de las ring settings se analizarán más
adelante, se supondrán las posiciones iniciales “A A B”.

Figura 20. Rotores con posiciones iniciales AAB. Elaboración Propia.

Se puede observar como el rotor de la derecha, el azul, ha rotado una


posición, es decir, ambos alfabetos se han desplazado una posición con
respecto a la configuración “A A A”.

21
Figura 21. Representación del tablero de conexiones. Elaboración propia

Por último, tenemos el tablero de conexiones, para el cual se ha


seleccionado la configuración “AB CD”, por lo que, si se observa
detenidamente la imagen superior, se puede ver como la sustitución que
presenta es de un abecedario en orden con uno con las letras A y B, y C
y D cambiadas, siendo estas las únicas letras que van a intercambiarse.
Las demás letras seguirán sin ser sustituidas por el tablero de conexiones.
Por poner un ejemplo, si llegase una señal eléctrica con la letra A esta
señal se cambiaría por la de la letra B, sin embargo, si llegase una señal
de la letra Z, esta no cambiaría y seguiría siendo una señal eléctrica
correspondiente a la letra Z.

2. Rotación al pulsar una tecla

Una vez se tiene claro cómo afecta la configuración inicial de la máquina


Enigma, es decir, su clave, a su estado inicial, se va a analizar un ejemplo
con la siguiente clave:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III GOL 01 01 01 AB CD EF
GH IJ KL MN
OP QR ST

Tabla 6. Clave de máquina Enigma. Elaboración propia.

22
Obteniéndose así el siguiente estado inicial de la máquina:

Figura 22. Representación de estado de máquina Enigma. Elaboración


propia.

A continuación, el usuario que está cifrando un mensaje con la máquina


pulsará una tecla y lo primero que hará la máquina es rotar una posición
el rotor de la derecha. Por lo que tras pulsar cualquier tecla el estado de
la máquina será el siguiente:

Figura 23. Representación de rotación del rotor derecho. Elaboración


propia.

Como se puede observar el rotor de la derecha, en la imagen señalado


mediante un rectángulo naranja, ha rotado una posición mientras que el
resto de la máquina mantiene la misma configuración.

23
3. Tablero de conexiones

Tras haberse producido la rotación, se produce el avance de la señal


eléctrica por toda la máquina, comenzando por el tablero de conexiones.
En este caso se supone que se ha pulsado la letra R:

Figura 24. Tablero de conexiones. Elaboración propia.

Se puede ver con claridad como la señal que entra (de derecha a
izquierda) es la correspondiente a la letra R que al estar conectada en el
panel de conexiones con la letra Q, va a sufrir un intercambio, por lo que,
a los rotores les llegará la señal eléctrica correspondiente a la letra Q pese
a que el usuario pulsó la letra R.

4. Rotores

Una vez la señal eléctrica pasa por el tablero de conexiones, llega al rotor
de la derecha, después pasará por el rotor del medio y finalmente llegará
al rotor de la izquierda, el cual mandará la señal al reflector. Al rotor de
la derecha le llegará la señal eléctrica correspondiente a la letra Q, debido
al intercambio explicado en el punto anterior.
Antes de continuar, se recuerda al lector, que el rotor de la derecha era
el rotor III, por lo que su sustitución es la siguiente:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
BDFHJLCPRTXVZNYEIWGAKMUSQO
Tabla 7. Sustitución del rotor III. Elaboración propia.

Al rotor de la derecha le llega la señal eléctrica correspondiente a la letra


Q, y teniendo en cuenta la posición en la que se encuentra, al recibir la
señal, la va a recibir con “la letra F”, es entonces cuando se produce la
sustitución interna del rotor, ya que al presentar la sustitución “F -> L”,
señalada en negrita en la tabla anterior, la señal que va a transmitir al
siguiente rotor va a ser alterada.

24
Figura 25. Recorrido de la corriente eléctrica. Elaboración propia.

Tomando como ejemplo la foto anterior para explicar mejor la


transmisión del impulso eléctrico (línea verde) a través de la máquina, se
observa que al rotor de la derecha (azul) le llega el impulso del tablero de
conexiones que está en la posición de la letra Q inicial (círculo rosa).
Debido a la situación actual del rotor de la derecha le llega en la posición
donde se encuentra la letra F (círculo amarillo). Una vez aquí como este
rotor implementa la sustitución F -> L, va a estar conectado a la posición
de la letra L (círculo naranja) que es por donde saldrá el impulso eléctrico,
hacia el siguiente rotor.
El rotor del medio actuará de la misma forma, le llega la señal donde se
encuentra la U, aplica la sustitución U -> P, y envía la señal por la
posición P al siguiente rotor.
De la misma manera, el rotor de la izquierda recibe la señal en la posición
O, aplica la sustitución O -> Y, y envía la señal hacia el reflector.

5. Reflector

La señal eléctrica pasa por los rotores, en este caso tres, hasta que llega
al último componente de la máquina, el reflector, el cual va a funcionar
de una forma bastante similar al tablero de conexiones. En este ejemplo,
se está utilizando el reflector “B”, por lo que:

Figura 26. Funcionamiento del reflector. Elaboración propia.


25
Como se puede observar, la señal eléctrica llega al reflector en la posición
ocupada por la letra P (círculo naranja), en este momento es donde el
reflector va a aplicar la sustitución que le corresponda, en este caso P ->
I. De esta forma, la señal eléctrica saldrá del reflector en la posición que
ocupe la letra I (círculo amarillo) en lugar de la de la P. Esta señal
eléctrica emprenderá el camino de vuelta comenzando por el rotor de la
izquierda.

6. Rotores (II)

Una vez completado el “camino de ida”, la señal eléctrica debe volver para
llegar al panel de luces y el único camino posible es volver por los rotores
y atravesar el tablero de conexiones, eso sí, los rotores deben recorrerlos
de izquierda a derecha en lugar de derecha a izquierda. Para facilitar su
visualización la señal eléctrica del camino de vuelta o de salida se
representa en rojo y la de ida o de entrada se mantiene en color verde.

Figura 27. Segundo recorrido de la corriente eléctrica. Elaboración propia.

Analizando la imagen detenidamente, se puede observar como la señal


sale del reflector (recuadro verde) por la posición correspondiente a la
letra I, lo que va a hacer que llegue al rotor izquierdo (recuadro morado),
se recuerda que era el rotor I, en la posición de la letra V (círculo amarillo).
Una vez en el rotor, se va a implementar la sustitución que corresponda,
en este caso al tratarse del rotor I, la sustitución correspondiente es V -
> I, por lo que la señal viajará, dentro del rotor hasta la posición de la
letra I (círculo naranja) y enviará la señal al rotor del medio.
El rotor del medio actuará de la misma forma, le llega la señal donde se
encuentra la Q, aplica la sustitución Q -> Q, en este caso da la casualidad
de que se sustituye por la misma letra, y envía la señal por la posición Q
al siguiente rotor.
De la misma manera el rotor de la derecha recibe la señal en la posición
O, aplica la sustitución O -> Z, y envía la señal por la posición de la letra
Z hacia el tablero de conexiones.

26
7. Tablero de conexiones (II)

Una vez la señal eléctrica sale por segunda vez de los rotores, esta vez
con sentido de izquierda a derecha, va a llegar al tablero de conexiones,
para que se realice una nueva sustitución.

Figura 28. Funcionamiento del panel de conexiones.

Al observar la imagen anterior se puede observar como la señal eléctrica


sale del rotor de la derecha hasta llegar al tablero de conexiones
(recuadro rojo) y se va a comportar que la primera vez que llego a este, es
decir, va a aplicar la sustitución que corresponda según el cableado con
el que se haya configurado.
En este caso se ve como la señal eléctrica entra en la posición de la letra
N (flecha azul) y sale por la posición de la letra M (flecha naranja) debido
a la sustitución M <-> N

8. Panel de luces

Una vez la señal eléctrica atraviesa el tablero de conexiones en lugar de


volver al teclado, tomará un camino distinto en dirección al panel de
luces, más concretamente a la bombilla correspondiente a la letra que
salió por segunda vez del tablero de conexiones, en este caso la letra M.

27
En el ejemplo de las imágenes:

Figura 29. Representación de letras de entrada y de salida. Elaboración


propia.

Se puede apreciar que en la parte superior aparecen dos letras, la


primera de ellas la R (flecha azul) corresponde al teclado y la letra M
(flecha naranja) corresponde al panel de luces.

Una vez finalizado el funcionamiento básico de la máquina Enigma quedan dos


funcionalidades por analizar, las ring settings y una funcionalidad especial, que
no se sabe a ciencia cierta si es accidental o la máquina fue diseñada así a
propósito, que es la doble rotación del rotor del medio.
Las ring settings no son más que el número de posiciones que se desplaza el
rotor con respecto a su muesca. Por lo tanto, si se fijan unas ring setting de 02
en lugar de 01 el notch ya no se encontrará en su lugar habitual, estará
desplazado un lugar con respecto a las letras que representa el rotor. Para verlo
gráficamente se va a hacer una comparativa de un rotor con las ring settings 01
y el mismo rotor con las ring settings 02.
El rotor derecho que se va a emplear es el rotor I en las posiciones W X V, solo
se modificarán las ring settings en la siguiente tabla:

28
01 01 01 01 01 02

Tabla 8. Comparación de ring settings. Elaboración propia.

Como se puede apreciar aparentemente al cambiar las ring settings se modifica


la posición inicial, y esto es cierto, sin embargo esto no tendría ningún efecto
en la clave de la máquina, sería la misma clave emplear las posiciones W X V
con las ring settings 01 01 02 que emplear las posiciones W X U con las ring
setting 01 01 01. Sin embargo, al modificar las ring settings el funcionamiento
que se está modificando realmente es el de cuándo rotar los siguientes rotores.
Se va a mostrar un ejemplo de cómo influye:
Se supone el mismo rotor del ejemplo anterior y se recuerda que su notch se
encuentra entre la V y la W. A continuación, se va a realizar otra iteración:

01 01 01 01 01 02

Tabla 9. Comparación de ring settings. Elaboración propia.

29
Como se puede observar el rotor del medio ha rotado en ambos casos, sin
embargo, en rotor de la derecha cuando las ring settings son 01 01 02 no ha
llegado al notch, de hecho, debería llegar en la siguiente iteración. Este es el
efecto de las ring settings, al cambiarlas en el rotor de la derecha de 01 a 02 se
ha conseguido desplazar la letras entre las cuales se procede con la rotación del
siguiente rotor, es decir, en lugar de que el rotor del medio rote cuando el
derecho pase de la letra V a la W, lo va a hacer cuando este pase de la U a la V,
aumentando así aun más el espacio de claves.
Por último, queda analizar el funcionamiento de la doble rotación del rotor del
medio. Este suceso consiste en que, pese a que quizá el funcionamiento más
normal de la máquina en cuanto a rotaciones sería que el rotor de la derecha
girase en cada iteración, el del medio cuando el de la derecha llegase al notch,
y el de la izquierda cuando el del medio alcanzase el notch, no es del todo así.
Para que se entienda adecuadamente se va a comparar este funcionamiento con
los números decimales.

Se suponen unidades, decenas y centenas:

Centenas Decenas Unidades Número


0 0 0 0
0 0 1 1

0 0 9 9
0 1 0 10

0 9 8 98
0 9 9 99
1 0 0 100
Tabla 10. Ejemplo del funcionamiento decimal. Elaboración propia.

Si se hace el símil con las rotaciones de los rotores, los números solo rotarían
una vez alcanzado el notch, en el caso de los números el 0. Sin embargo, el
funcionamiento real de la rotación de los rotores es que, aunque el rotor derecho,
las unidades en el caso de los números decimales, no llegara al notch pero el
del medio sí, las decenas, rotarían tanto el de la derecha como el de la izquierda.
Es como sí solo por el hecho de llegar al 100, se pasará al 110 de golpe. A
continuación, se va a ver gráficamente:

Se vuelven a utilizar los rotores I, II y III, como rotor izquierdo, del medio y
derecho respectivamente. En la siguiente tabla se recuerdan sus muescas o
notch:

30
ROTOR NOTCH
I Q-R
II E-F
III V-W
Tabla 11. Rotores y sus notch. [13]

Suponiendo la siguiente situación inicial de los rotes:

Figura 30. Posición inicial de los rotores. Elaboración propia.

Se puede observar que el rotor de la derecha tras una iteración pasará a la letra
W. Si se analizan las rotaciones, se puede determinar que el rotor de la derecha
va a realizar la transición V -> W que es la que corresponde a la de su notch,
por lo que girarán tanto el rotor de la derecha como el del medio.

Figura 31. Posición de los rotores tras una iteración. Elaboración propia.

31
Efectivamente esto es lo que sucede, se producen rotaciones tanto en el rotor
de la derecha como en el del medio, pero a continuación se va a realizar una
iteración más. El rotor de la derecha rotará y realizará la transición W -> X que
no se corresponde con su notch, sin embargo, el rotor del medio, pese a que no
debería girar se encuentra en su posición de notch, ya que si girara realizaría la
transición E -> F. Pues bien, debido al diseño de la máquina va a girar y al
alcanzar su notch también hará girar al de la izquierda. Si se demuestra
gráficamente:

Figura 32. Doble rotación del rotor central. Elaboración propia.

Tras analizar la imagen superior con respecto a las anteriores, se puede deducir
claramente que, tras una nueva iteración de la máquina, han rotado todos los
rotores, el derecho porque lo hace en cada iteración, el del medio por el
fenómeno que se está explicando en este punto y el izquierdo porque el del medio
alcanzó el notch.
Este fenómeno es conocido como doble rotación del rotor del medio.

2.3.2.3 Malas prácticas


Es importante mencionar que la máquina Enigma es una máquina de cifrados
excelente, y al igual que con muchos otros sistemas de cifrado, el que los
criptoanalistas tengan éxito o no depende más del mal uso que se hace del
cifrado que de las posibilidades que el cifrado ofrece. La máquina Enigma no es
una excepción.
A continuación, se van a detallar algunas malas prácticas que se empleaban a
la hora de cifrar mensajes, lo que en muchas ocasiones facilitó el trabajo de los
criptoanalistas, llegando incluso a darse el descifrado total del mensaje.

32
Empleo de patrones en la clave

Para que un sistema de cifrado sea lo más seguro posible es necesario que la
clave sea totalmente aleatoria, ya que así los criptoanalistas no pueden empezar
a probar ciertas combinaciones de clave solo por probabilidad de uso.
Muchas veces los operarios de la máquina Enigma, los emisores de mensajes,
empleaban, por ejemplo, para indicar el orden de los rotores, las posiciones “A
B C”, o para configurar el tablero de conexiones, “AB CD EF...”
De esta forma, la clave dejaba de ser aleatoria, es más, se podría comparar a
utilizar una clave para un correo electrónico actual que fuese “1234”. ¿No parece
muy segura verdad? Con este tipo de claves los criptoanalistas solo tenían que
probar estos patrones y acertarían, sin embargo, si la clave es aleatoria, no
sabrían qué clave probar de entre tantas opciones.
Repetición de clave

Otro factor para la seguridad de la clave en cualquier sistema de cifrado es que


las claves sean de un único uso o en su defecto que se use lo menos posible.
Por poner un ejemplo, se supone un mensaje cifrado con la clave:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III AAA 01 01 01 AB CD
Tabla 12. Clave de máquina Enigma. Elaboración propia.

Si se realiza un ataque por fuerza bruta, es decir, probando todas las posibles
claves que existen hasta dar con la adecuada, durante dos horas, no se ha dado
aun con la clave y llega un nuevo mensaje con una clave completamente distinta
habría que volver a probar todas las combinaciones de nuevo, esas dos horas
de ataque no han servido para nada en este nuevo mensaje. Sin embargo, si el
mensaje que llega tiene la misma clave, realmente ya se han realizado dos horas
de trabajo, ya que en esas dos horas se han descartado bastantes
combinaciones que sirven para este nuevo mensaje.
En numerosas ocasiones los operarios utilizaban la misma clave para cifrar
mensajes, como por ejemplo sus iniciales para las posiciones de los rotores,
facilitando así nuevamente el trabajo de los criptoanalistas.

Repetición de clave (en el mismo mensaje)

Si usar la misma clave para cifrar distintos mensajes ya era un gran fallo de
seguridad, incluir la clave dos veces en el mensaje, aunque esta estuviera
cifrada también lo es.

33
Uno de los procedimientos que emplearon los operarios de la máquina Enigma
fue repetir dos veces la clave del mensaje, más concretamente la posición de los
rotores. Este procedimiento consistía en utilizar la clave del día correspondiente
a las posiciones de los rotores, por poner un ejemplo “HGW”, y el operario o
emisor del mensaje pensaría otra clave, se supone “TVC”. Se utilizaba la clave
del día (“HGW”) para cifrar dos veces la clave del mensaje, es decir, la que
pensaba el operario (“TVC”), y el resultado que se obtenía, por ejemplo,
“LGFBDE” se ponía como encabezado del mensaje. A partir de aquí el operario
cambiaría la configuración de la máquina y cifraría con la clave “TVC”.
Al receptor del mensaje le bastaba con utilizar la clave del día para descifrar los
6 primeros caracteres del mensaje, donde obtendría la clave que había pensado
el operario emisor del mensaje, en este caso obtendría “TVCTVC”. A partir de
aquí el receptor ya sabría cuál es la clave con el que estaba cifrado el resto del
mensaje.

No usar letras consecutivas en el tablero de conexiones

Otra mala práctica causada por evitar el empleo de patrones en el tablero de


conexiones por parte de los operarios. Como se ha dicho anteriormente el
empleo de patrones en el tablero de conexiones es una muy mala práctica, sin
embargo, la solución que se propuso no fue mucho mejor. Esta consistía en no
poder conectar letras consecutivas en el tablero de conexiones. Al hacer esto es
verdad que se evita, por ejemplo, las típicas conexiones “AB, CD, EF…”, pero
realmente lo que se está consiguiendo a su vez es reducir considerablemente el
número total de posibles conexiones.

2.3.3 Complejidad teórica


En este apartado se va a explicar matemáticamente el abanico de claves que
permitía la máquina Enigma, para que el lector pueda hacerse una idea
numérica de por qué supone un desafío tan grande su criptoanálisis. Para ello
se va a analizar cada componente por separado y después se juntarán todos los
componentes para ver las claves posibles de la máquina Enigma.

Posiciones iniciales del Rotor

Para el caso de los rotores sus posibilidades son bastante fáciles de calcular,
estaban formados por 26 posiciones que representaban a las letras del
abecedario, por lo tanto, en lo referente a las posiciones de los rotores serán 26
posibilidades. Sin embargo, en la máquina Enigma no se usaba un único rotor,
de hecho, en la mayoría de modelos se usaban tres, en algunos hasta cuatro,
pero para analizar su complejidad se tendrá en cuenta que se usaban 3. Por lo
tanto, existían:

26 x 26 x 26 = 17.576 posibilidades

34
Ring Settings del Rotor

Ahora bien, en los rotores además se podía cambiar el notch, o la muesca que
hacía girar al siguiente rotor, y se podía cambiar en un total de 26 posibilidades,
nuevamente una por cada posición del rotor. En este caso entonces, al tener
tres rotores:

26 x 26 x 26 = 17.576 posibilidades

Selección de los rotores

En este caso como se está hablando de la complejidad teórica de la máquina, se


va a suponer que se desconocían las configuraciones internas de cada rotor, por
lo que tenemos 26 letras unidas a otras 26 letras para formar la sustitución que
aporta cada rotor, al ser tres rotores, en los que se va a considerar que ninguno
de ellos es repetido, se obtienen:

(26! – 1) x (26! – 2) x (26! – 3) = 6,56 x 10^79 posibilidades

En la realidad, al saberse las configuraciones internas de los rotores, no había


que probar todas las posibilidades de configuraciones internas de cada rotor,
bastaba con probar el orden en el que se situaban los rotores, es decir,
suponiendo que hubiera que seleccionar 3 rotores de entre 5 opciones:

5 x 4 x 3 = 60 posibilidades

Reflector
Al reflector le pasa algo parecido al punto anterior, en la realidad se conocía su
configuración interna, por lo que como la máquina Enigma solo tenía un
reflector, solo habría que probar con el número de reflectores posibles que
hubiera, es decir, si hubiera 2 posibles reflectores nos dejaría 2 posibilidades,
si hubiera 3, 3 posibilidades y así sucesivamente.
En cuanto a su complejidad teórica, suponiendo que no se conociera su
configuración interna, se produciría una situación en la que se pueden sustituir
26 letras por otras 26. Sin embargo, como en el reflector A - > B, sería lo mismo
que B -> A, se reducen las posibilidades a la mitad. Además, se le suma la
condición de que si el cable que conecta A -> B es el 1, tiene el mismo efecto
que si es el 7. Por lo tanto, el resultado se dividiría entre 13. El resultado de
posibilidades de la primera conexión sería:

26 x 25 / 2 / 13

35
Las posibilidades de la segunda:

24 x 23 / 2 / 12
En la tercera:

22 x 21 / 2 / 11

Y así sucesivamente hasta llegar al:

2x1/2

Si se multiplican todas las opciones se obtienen:

7,91 x 10^12 posibilidades

Tablero de conexiones

El tablero de conexiones es uno de los componentes más determinantes de la


máquina Enigma, ya que dependiendo del número de conexiones que se
tuvieran, se obtendrían un número de posibles combinaciones u otro. Además,
si se desconocía el número de conexiones empleadas para cifrar el mensaje, se
alcanzaría una cifra enorme de posibilidades.

Las opciones para cada número de conexiones usadas serían:

Nº conexiones Fórmula Posibilidades


0 26! 1
20 𝑥 26!
0!
1 26! 325
21 𝑥 24!
1!
2 26! 44.850
22 𝑥 22!
2!
3 26! 3.453.450
23 𝑥 20!
3!
4 26! 164.038.875
4
2 𝑥 18!
4!

36
5 26! 5.019.391.791.500
25 𝑥 16!
5!
6 26! 100.391.791.500
26 𝑥 14!
6!
7 26! 1.305,093,289,500
27 𝑥 12!
7!
8 26! 10.767.019.638.375
28 𝑥 10!
8!
9 26! 53.835.098.191.875
29 𝑥 8!
9!
10 26! 150.738.274.937.250
210 𝑥 6!
10!
11 26! 205.552.193.096.250
211 𝑥 4!
11!
12 26! 102.776.096.548.125
212 𝑥 2!
12!
13 26! 7.905.853.580.625
213 𝑥 0!
13!
Tabla 13. Número de posibles conexiones según el número de estas. Elaboración
propia.

Si no se conociera el número de conexiones que se establecen en el tablero de


conexiones el total de posibilidades sería la suma de cada una de las opciones
anteriores, es decir 1 + 325 + 44.850…
Lo que suma un total de:

5,33 x 10^14 posibilidades

Máquina Enigma

Para obtener el número de posibilidades de clave que tiene la máquina Enigma,


se debe multiplicar las posibilidades que ofrece cada componente, ya que, por
ejemplo, por cada posibilidad de una configuración del reflector, existen 17.576
formas de configurar la posición inicial de los rotores. [16]
Por lo tanto:

17.576 x 17.576 x 6,56 x 10^79 x 7,91 x 10^12 x 5,33 x 10^14 =


8,54 x 10^109 posibilidades

37
2.3.4 Variantes destacadas

Como se mencionó en el apartado 2.3, las máquinas Enigma son un conjunto


de máquinas de cifrado con unas características, componentes y
funcionamiento muy similares. En este apartado se van a exponer los
principales modelos o los que tuvieron más repercusión y las principales
diferencias entre estos.

2.3.4.1 Enigma comercial


La máquina Enigma comercial fue una de las primeras variantes, de hecho, es
una de las primeras máquinas de cifrado que fue objetivo de criptoanalistas.
Esta máquina contaba con todos los componentes mencionados en el apartado
2.3.1, a excepción del tablero de conexiones, lo que reducía considerablemente
el número de posibles claves y simplificaba enormemente el trabajo de los
criptoanalistas. [17]

Figura 33. Enigma comercial. [41]

2.3.4.2 Enigma militar


Al hablar de Enigma militar, en realidad no se puede hacer referencia a un
modelo concreto, ya que dentro de este grupo aparecen diversas máquinas con
ligeras modificaciones. Sin embargo, la principal diferencia o evolución con
respecto a la máquina Enigma comercial es la incorporación del tablero de
conexiones. Es el modelo más estandarizado y conocido, incorpora todos los
componentes mencionados en el apartado 2.3.1, siendo tres los rotores que
emplea. [18]

38
Figura 34. Enigma militar. [42]

2.3.4.3 M4
Este modelo de la máquina Enigma es destacable debido a su seguridad, fue
usado por la marina del ejército nazi. Era bastante similar al resto de máquinas
Enigma, sin embargo, tenía una serie de diferencias que aumentaban bastante
el número de claves posibles y por lo tanto la seguridad de sus cifrados,
complicando enormemente el trabajo de los criptoanalistas.
Las principales diferencias con respecto a otras Enigma son:
• Empleo de 4 rotores en lugar de 3, aumentando así el espacio de claves
• Incorporación de nuevos rotores, el VI, VII, VIII, BETA y GAMMA. Los tres
primeros ampliaban las opciones para elegir rotor entre las tres ranuras
de la derecha, es decir, los tres rotores más a la derecha podían ser 3 de
entre los 8 posibles en lugar de 3 entre 5 posibles, y los rotores BETA y
GAMMA eran dos opciones para ocupar el rotor de la izquierda.
• Cambio en el notch. Este cambio no se le atribuye tanto al modelo, más
bien se le debe atribuir a la incorporación de la posibilidad de seleccionar
los rotores VI, VII, y VIII, los cuales tenían dos muescas para hacer girar
el siguiente rotor. Además, BETA y GAMMA no tenían esta muesca, ya
que estaban destinados a ser el rotor de más a la izquierda y por lo tanto
no harían girar a ningún otro rotor. [19]

Figura 35. Enigma M4. [43]

39
2.3.5 Ejemplos de cifrados reales

A continuación, se van a mostrar una serie de mensajes reales cifrados con la


máquina Enigma, así como una descripción sobre el mensaje, la clave con la
que fue cifrado y el texto en claro al que representa, con el objetivo de mostrar
al lector el formato de algunos mensajes reales. Como nota informativa al lector,
se debe considerar que la letra X en el texto en claro se utilizaba generalmente
para separar las palabras, es decir, como espacios y que además al transmitirse
los mensajes en malas condiciones y en código morse, podrían existir
interferencias que lo distorsionaban.

• 1941
Mensaje obtenido de un manual de instrucciones de la armada alemana,
este mensaje estaba cifrado con dos claves, por ser demasiado extenso
(el cambiar de clave en mensajes largos favorecía la seguridad).

Primera parte:

GCDSE AHUGW TQGRK VLFGX UCALX VYMIG MMNMF DXTGN


VHVRM MEVOU YFZSL RHDRR XFJWC FHUHM UNZEF RDISI KBGPM
YVXUZ

La clave de cifrado fue:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B II IV V BLA 02 21 12 AV BS CG
DL FU HZ IN
KM OW RX
Tabla 14. Clave de máquina Enigma. Elaboración propia.

El mensaje descifrado es:

AUFKL XABTE ILUNG XVONX KURTI NOWAX KURTI NOWAX NORDW


ESTLX SEBEZ XSEBE ZXUAF FLIEG ERSTR ASZER IQTUN GXDUB
ROWKI XDUBR OWKIX OPOTS CHKAX OPOTS CHKAX UMXEI NSAQT
DREIN ULLXU HRANG ETRET ENXAN GRIFF XINFX RGTX

Segunda parte:

SFBWD NJUSE GQOBH KRTAR EEZMW KPPRB XOHDR OEQGB


BGTQV PGVKB VVGBI MHUSZ YDAJQ IROAX SSSNR EHYGG RPISE
ZBOVM QIEMM ZCYSG QDGRE RVBIL EKXYQ IRGIR QNRDN VRXCY
YTNJR

40
La clave de cifrado fue:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B II IV V LSD 02 21 12 AV BS CG
DL FU HZ IN
KM OW RX
Tabla 15. Clave de máquina Enigma. Elaboración propia.

El mensaje descifrado es:

DREIG EHTLA NGSAM ABERS IQERV ORWAE RTSXE INSSI EBENN


ULLSE QSXUH RXROE MXEIN SXINF RGTXD REIXA UFFLI EGERS
TRASZ EMITA NFANG XEINS SEQSX KMXKM XOSTW XKAME NECXK

• 1942
Enviado desde un submarino en el año 1942, cifrado por una máquina
Enigma M4.

NCZW VUSX PNYM INHZ XMQX SFWX WLKJ AHSH NMCO CCAK UQPM
KCSM HKSE INJU SBLK IOSX CKUB HMLL XCSJ USRR DVKO HULX
WCCB GVLI YXEO AHXR HKKF VDRE WEZL XOBA FGYU JQUK GRTV
UKAM EURB VEKS UHHV OYHA BCJW MAKL FKLM YFVN RIZR VVRT
KOFD ANJM OLBG FFLE OPRG TFLV RHOW OPBE KVWM UQFM PWPA
RMFH AGKX IIBG

La clave de cifrado fue:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
Thin B β II IV I VJNA 01 01 01 AT BL DF GJ
22 HM NW OP
QY RZ VX
Tabla 16. Clave de máquina Enigma. Elaboración propia.

El mensaje descifrado es:

VONVO NJLOO KSJHF FTTTE INSEI NSDRE IZWOY YQNNS NEUNI


NHALT XXBEI ANGRI FFUNT ERWAS SERGE DRUEC KTYWA BOSXL
ETZTE RGEGN ERSTA NDNUL ACHTD REINU LUHRM ARQUA NTONJ
OTANE UNACH TSEYH SDREI YZWOZ WONUL GRADY ACHTS MYSTO
SSENA CHXEK NSVIE RMBFA ELLTY NNNNN NOOOV IERYS ICHTE
INSNU LL

41
• 1943
Enviado desde el buque de guerra Scharnhorst el día que fue hundido
por los británicos.

YKAE NZAP MSCH ZBFO CUVM RMDP YCOF HADZ IZME FXTH FLOL
PZLF GGBO TGOX GRET DWTJ IQHL MXVJ WKZU ASTR

La clave de cifrado fue:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B III VI VIII UZV 01 08 13 AN EZ HK IJ
LR MQ OT
PV SW UX
Tabla 17. Clave de máquina Enigma. Elaboración propia.

El mensaje descifrado es:

STEUE REJTA NAFJO RDJAN STAND ORTQU AAACC CVIER NEUNN


EUNZW OFAHR TZWON ULSMX XSCHA RNHOR STHCO [20]

En todos los mensajes descifrados puede apreciarse, aunque con dificultad en


ocasiones, que el idioma en el que se escribían era el alemán.

2.3.6 Simulador de máquina Enigma

Para facilitar la comprensión del funcionamiento de la máquina, se ha


desarrollado un simulador gráfico, del que ya se han mostrado algunas
imágenes en puntos anteriores.

2.3.6.1 Herramientas empleadas


Para desarrollarlo se ha optado por utilizar el lenguaje de programación Python,
debido a la increíble cantidad de librerías que ofrece y se ha aplicado la lógica
del funcionamiento de la máquina Enigma, creando una clase por cada
componente de esta, excepto el reflector, el cual se ha representado como una
lista.
Para su implementación gráfica se han utilizado la librería pygame por su
facilidad para usarse y su gran utilidad. [45]

42
2.3.6.2 Ejemplos de uso y funcionamiento
El funcionamiento del simulador de la máquina Enigma es muy similar en
cuánto a lógica de programación del proceso real que sigue la máquina para
cifrar:
1) Se pulsa una tecla.
2) Rota el rotor de la derecha.
3) Se comprueba si algún rotor ha llegado al notch y si es así se rota el rotor
correspondiente.
4) Con la nueva configuración se procede a cifrar la letra de entrada.
5) Se utiliza el objeto Plugboard (Tablero de conexiones) para realizar la
conversión de una letra a otra con la que estuviera conectada.
6) Se pasa por tres objetos Rotor (rotores) realizando las sustituciones
necesarias.
7) Se realiza la sustitución necesaria del reflector, utilizando la letra que le
llega y obteniendo su posición en una lista que guarda el alfabeto
correspondiente a la sustitución. Al obtener su posición, se obtiene
automáticamente la sustitución. Por ejemplo, si llega la letra N al reflector
y la letra N está en la posición 2 de la lista se deduce que la N se sustituye
por la C, y la C por la N.
8) Se pasa por tres objetos Rotor (rotores) realizando las sustituciones
necesarias.
9) Se utiliza el objeto Plugboard (Tablero de conexiones) para realizar la
conversión de una letra a otra con la que estuviera conectada.
10) Se muestran en la parte superior tanto la letra de entrada como la de
salida.

Algunos ejemplos de uso:

Se comienza con un ejemplo de uso muy simple, en el que únicamente se va a


cifrar una palabra de cuatro letras, y se observarán cada una de las iteraciones
de la máquina.
Mensaje en claro: HOLA
Clave:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III TJM 08 03 04 AS BV CL
DG FM HZ
IN KU OW
RX
Tabla 18. Clave de máquina Enigma. Elaboración propia.

43
1) Primera iteración: letra H.

Figura 36. Cifrado de la letra H. Elaboración propia.

Resultado: S

2) Segunda iteración: letra O.

Figura 37. Cifrado de la letra O. Elaboración propia.

Resultado: C

44
3) Segunda iteración: letra L.

Figura 38. Cifrado de la letra L. Elaboración propia.

Resultado: X

4) Segunda iteración: letra A.

Figura 39. Cifrado de la letra A. Elaboración propia.

Resultado: M

45
Se continúa con otro ejemplo, en el cual se va a cifrar una frase corta, y además
tal y como se hacía en los cifrados originales se sustituirán los espacios entre
palabras por la letra X.

Mensaje en claro: BUENAS TARDES A TODOS


Clave:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B III V I ALO 12 25 01 LO PI TN
Tabla 19. Clave de máquina Enigma. Elaboración propia.

1) Primera iteración: letra B.

Figura 40. Cifrado de la letra B. Elaboración propia.

Resultado: P

46
2) Resultado de realizar todas las iteraciones

Figura 41. Cifrado de “BUENAS TARDES A TODOS”. Elaboración propia.

Resultado: PWMXH YWCOJ XTRTE OKKUC F

Con el fin de demostrar que un mensaje cifrado con una clave determinada da
lugar a un cifrado, al cual si se le vuelve a introducir en la máquina con la
misma clave daría el mensaje original se propone como ejemplo de uso el cifrado
obtenido en el anterior caso.

Mensaje cifrado: PWMXH YWCOJ XTRTE OKKUC F


Clave:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B III V I ALO 12 25 01 LO PI TN
Tabla 20. Clave de máquina Enigma. Elaboración propia.

47
1) Primera iteración: letra P.

Figura 42. Cifrado de la letra P. Elaboración propia.

Resultado: B

2) Resultado de realizar todas las iteraciones

Figura 43. Cifrado del texto “PWMXH YWCOJ XTRTE OKKUC F”. Elaboración
propia.

Resultado: BUENAS TARDES A TODOS

48
2.4 Criptoanálisis de las máquinas Enigma
El criptoanálisis de las máquinas Enigma fue una de las prioridades durante
los años anteriores y durante la Segunda Guerra Mundial, debido a que podría
suponer una gran ventaja conocer las comunicaciones del enemigo para actuar
en consecuencia. Sin embargo, hoy en día sigue siendo tema de estudio, debido
a su complejidad e impacto.

2.4.1 Principales debilidades de la máquina Enigma

En el caso de la máquina Enigma, se conocía cuáles eran sus componentes, qué


algoritmo utilizaba su cifrado y cómo se configuraba la clave, por lo que una
buena práctica para su criptoanálisis puede ser comenzar analizando si existen
debilidades a la hora de cifrar. Entendiendo por debilidades, características de
su cifrado que puedan reducir el espacio de claves o en su defecto simplificar el
esfuerzo a realizar en su criptoanálisis.

A continuación, se van a exponer una serie de debilidades en el algoritmo de


cifrado de la máquina Enigma:

• Imposibilidad de que una letra sea cifrada por sí misma


Esto se debe al empleo del reflector. Como ya se ha explicado
anteriormente, la señal eléctrica de la máquina Enigma tenía un camino
de ida (desde el teclado hasta el reflector) y un camino de vuelta (desde
el reflector hasta el panel de luces), al pulsar una tecla, se produce la
rotación del o de los rotores y entonces comienza el cifrado, formándose
así un “camino” hasta el reflector en forma de señal eléctrica.
Llegados a este punto, al reflector, si se analiza detalladamente cuál es
la única opción de que la letra de salida sea la misma que la que se ha
pulsado es volviendo por el mismo camino.
Aquí es donde entra en juego la función del reflector, el cual va a hacer
que la señal eléctrica vuelva por el mismo camino, imposibilitando así
que la letra de entrada sea igual que la letra de salida.
Se pone un ejemplo a continuación para poder visualizarlo con mayor
claridad:

49
Figura 44. Recorrido de la señal eléctrica para cifrar una letra.
Elaboración propia.

Se puede observar que la única posibilidad, una vez la señal llega al


reflector para que la máquina devuelva la letra A otra vez, sería volver
exactamente por la línea verde. Sin embargo, esto es imposible debido a
que el reflector siempre va a sustituir una letra por otra y por lo tanto
impedir así que el recorrido de la señal eléctrica de ida sea igual al de
vuelta.

La explicación de por qué es una debilidad es bastante simple, descarta


opciones a la hora de conocer si un texto en claro corresponde a un
cifrado. Por ejemplo, se puede afirmar al 100% que la siguiente palabra
y el siguiente cifrado, o no se corresponden, o no ha sido el resultado de
cifrar esa palabra con ninguna clave de la máquina Enigma:

Texto en claro: HOLA


Texto cifrado: SODT

Se puede observar que la O coincide en la misma posición y es imposible


que la O pueda ser el resultado de cifrar la letra O con la máquina Enigma.
Como ya se verá en los siguientes apartados, una de las principales
debilidades de la máquina aprovechada por los Aliados para su
criptoanálisis.

• Conexiones del tablero fijas a lo largo del mensaje


Pese a que el tablero de conexiones es uno de los componentes
principales en cuanto al aporte de complejidad de la máquina, el que
mantenga la misma configuración a lo largo de todo el mensaje puede ser
un inconveniente. Esto se basa en el principio de que cuanto más se use
la clave más vulnerable se vuelve, y en este caso, además puede generar
contradicciones que facilitan el criptoanálisis de Enigma. Para ver esto,
se propone el siguiente ejemplo:

50
Se sabe con certeza que el mensaje en claro y su texto cifrado
correspondiente son los siguientes:

Texto en claro: HOLA


Texto cifrado: SWST

Ahora bien, se propone una configuración de rotores determinada y el


tablero de conexiones vacío, y se comprueba que, en la primera iteración,
es decir en la que corresponde a H -> S, si se pulsa una H obtenemos
una B, por lo tanto, para que se cumpla que el texto claro corresponda
al texto cifrado en el tablero de conexiones la H no debe estar conectada
y la B debe estar conectada a la S.

1) Primera iteración de Enigma

H -> B (salida de los rotores, antes de pasar por segunda vez por el
tablero de conexiones)

Tablero de conexiones Letras sin conexión


BS H
Tabla 21. Letras conectadas y sin conectar hasta el momento.
Elaboración propia.

H -> S

2) Segunda iteración de Enigma

L -> P (salida de los rotores, antes de pasar por segunda vez por el
tablero de conexiones)

Tablero de conexiones Letras sin conexión


BS PW HO
Tabla 22. Letras conectadas y sin conectar hasta el momento.
Elaboración propia

O -> W

3) Tercera iteración de Enigma

L -> T (salida de los rotores, antes de pasar por segunda vez por el
tablero de conexiones)

Tablero de conexiones Letras sin conexión


BS PW TS HOL
Tabla 23. Letras conectadas y sin conectar hasta el momento.
Elaboración propia

L -> S

51
Como se puede observar, ha aparecido una contradicción al realizar
varias iteraciones, ya que en el tablero de conexiones las letras solo
pueden estar o no conectadas o conectadas una vez, en el ejemplo
anterior la S estaría conectada dos veces. De esta forma, se puede afirmar
con total seguridad que o está mal la configuración de los rotores o
incluso que para este orden de rotores no solo la S está mal en el tablero
de conexiones, sino que se pueden descartar todas las conexiones
obtenidas hasta la contradicción.
Es importante hacer ver al lector que el ejemplo anterior es muy simple
y poco realista, ya que esta debilidad será expuesta en apartados
posteriores, sin embargo, con este ejemplo se quiere hacer ver la base de
esta debilidad de la máquina Enigma, que no es otra que generar
contradicciones que reducen el espacio de claves de la máquina.

2.4.2 Método de Marian Rejewski

Marian Rejewski fue un matemático y criptógrafo polaco que consiguió descifrar


mensajes cifrados por la máquina Enigma en 1932, gracias al mal uso o malas
prácticas que se empleaban a la hora de cifrar mensajes. [21]

Figura 45. Fotografía de Marian Rejewski [40]

El mal uso del que se aprovechó Rejewski fue uno de los explicados en el
apartado “2.3.2.3 Malas prácticas”, en el cual, en el mensaje se enviaba cifrada
dos veces la clave del mensaje o clave de sesión. Por recordar brevemente como
era este procedimiento:

1) Se tenía una clave del día. Ejemplo: “TFD”


2) El operario emisor del mensaje pensaba otra clave para el mensaje o clave
de sesión. Ejemplo: “WOM”
3) El operario configuraba la máquina Enigma con la clave “TFD” y cifraba
el conjunto de tres letras “WOM” dos veces seguidas.

52
WOMWOM Clave: TFD TTPHCT

Figura 46. Cifrado de la clave WOM repetida dos veces. Elaboración propia.

4) El operario cambiaba la configuración de la máquina a la clave “WOM” y


cifraba el mensaje.

CUADRO TTZZNR
Clave: WOM

Figura 47. Cifrado utilizando la clave del día. Elaboración propia.

5) El mensaje que enviaba quedaba de la siguiente forma, en amarillo la


parte correspondiente a la clave y en verde al texto del mensaje:

TTPHC TTTZZ NR

A continuación, se va a exponer de la forma más simplificada posible el método


que empleó Rejewski para atacar el cifrado de la máquina Enigma:

Primeramente, se tuvo en cuenta que todas las claves de sesión estaban cifradas
con la misma clave diaria, y que, además, cuando el operario cifraba la clave de
sesión dos veces, en el texto cifrado las letras en la posición 1 y 4, las de la 2 y
la 5 y las de la 3 y la 6 serían las mismas respectivamente. Utilizando el ejemplo
anterior:

TTPHC TTTZZ NR

• La T y la H corresponden a la letra W en texto claro.


• La T y la C corresponden a la letra O en texto claro.
• La P y la T corresponden a la letra M en texto claro.

De esta forma, Rejewski decidió montarse una especie de tablas en el que


recogería las correspondencias anteriores, a modo de ejemplo, una de las tablas
podría ser:

• Correspondencia 1-4
T
H

53
• Correspondencia 2-5
T
C

• Correspondencia 3-6
P
T

A medida que eran interceptados más mensajes a lo largo de ese día, se iban
ampliando estas tablas, por ejemplo, se supone que se interceptaron los
siguientes mensajes (se escriben solo las 6 primeras letras):

1) OCUOYJ
2) UINJXN
3) CVGFBC
4) PBRQGL
5) BXHBKH
6) IHVUZB
7) MZIRJM
8) XETLIA
9) AAAAHD
10) FJDNVZ
11) NGZKUX
12) KUXZPP

Las tablas actualizadas quedarían:

• Correspondencia 1-4
ABCFIKMNOPTUX
ABFNUZRKOQHJL
Tabla 24. Tabla de correspondencias 1-4. Elaboración propia.

• Correspondencia 2-5
ABCEGHIJTUVXZ
HGYIUZXVCPBKJ
Tabla 25. Tabla de correspondencias 2-5. Elaboración propia.

• Correspondencia 3-6
ADGHINPRTUVXZ
DZCHMNTLAJBPX
Tabla 26. Tabla de correspondencias 3-6. Elaboración propia

54
Si se observan detenidamente las tablas, más concretamente la de la
correspondencia 3-6 se puede obtener un ciclo:

A→D→Z→X→P→T→A

Este ciclo se va a dar tras 6 conexiones o links, cada conexión es una


correspondencia, por ejemplo, A → D.
Tras recoger muchos más mensajes y aumentar los datos en estas tablas de
correspondencias, se obtendrán unos ciclos determinados para cada tabla.
Rejewski se dio cuenta que esto no era casualidad, y que era el efecto de una
determinada configuración de rotores, y pese a que el tablero de conexiones
podría alterar los ciclos, alteraría solo las letras, no el valor de los links.
Como ejemplo, si se sigue iterando sobre las tablas anteriores con nuevos
mensajes, se va a suponer que se obtienen, por ejemplo:

• Correspondencia 1-4
3 ciclos de 8,8 y 12 links
• Correspondencia 2-5
5 ciclos de 7, 8, 8, 9 y 11 links
• Correspondencia 3-6
3 ciclos de 6, 9 y 10 links

Ante estos resultados, solo quedaría probar qué configuración de rotores y qué
orden coincide con estos ciclos. Reduciendo así el número de posibles claves a
26 x 26 x 26 x 6 (En ese momento eran solo 3 rotores a distribuir en 3 ranuras,
es decir, 3 x 2 x 1) = 105.456 posibilidades. Siendo aun muchas posibilidades,
para lo que la inteligencia polaca inventó lo que denominaron bombas
criptológicas, que no eran más que máquinas que simulaban el funcionamiento
de la máquina Enigma y con las que buscaban encontrar las correspondencias,
ciclos y links esperados.

Es cierto que después de averiguar la configuración de los rotores habría que


conseguir la configuración del tablero de conexiones y ring settings, pero ya
probando para una configuración específica de rotores. Además, en ese
momento se empleaban solo 6 conexiones en el tablero de conexiones, por lo
que había 14 letras que no se intercambiaban, de esta forma al averiguar la
configuración de los rotores se obtendrían muchos caracteres del texto plano
correctos, pudiendo así hacer suposiciones o pruebas en base a palabras
conocidas. Por ejemplo, si se podía ver como resultado de descifrar el texto con
la correcta configuración de rotores los siguientes caracteres:

HILAATIDIS

55
Podría suponerse que la I estaba conectada con la O en el tablero de conexiones
y el mensaje en claro sería:

HOLAATODOS

Nótese que este es un ejemplo muy simple, y es importante destacar que el


tablero de conexiones realizaba las sustituciones antes de los rotores y después,
por lo que era difícil observar un mensaje tan claro.
Por último, al hablar de este método es importante destacar que cada conjunto
de correspondencias, con sus ciclos y links, es característico de cada orden de
rotores y de sus posiciones iniciales, es decir, eran como las huellas dactilares
de una configuración determinada, por lo que se elaboró una especie de
diccionario con estas configuraciones y sus correspondencias, links y ciclos. De
esta forma, si se volvía a repetir alguna clave, bastaba con buscar sus
correspondencias, links y ciclos y se sabría la configuración sin necesidad de
volver a utilizar la bomba criptológica. [22] Esto podría establecer unas bases que
incluso hoy en día podrían ser útiles.

2.4.3 Criptoanálisis en escenarios de “Known-Plaintext” y palabra


probable

El método estudiado en el apartado anterior parece lo suficientemente bueno


como para seguir usándolo y no tener la necesidad de buscar otros ataques al
cifrado de la máquina Enigma, sin embargo, es necesario recordar que el método
anterior solo es posible gracias a una mala práctica de los operarios de la
máquina. En el momento en el que esta práctica se eliminase el método anterior
ya no serviría, y eso fue lo que pasó. Es entonces cuando aparece la figura de
Alan Turing.

2.4.3.1 Alan Turing y la “bombe”


Alan Turing fue un matemático y criptólogo inglés que fue contratado por el
ejército británico. Durante la Segunda Guerra Mundial la necesidad de conocer
las comunicaciones del enemigo se volvió crucial. Por esto, el ejército británico
decidió llevar a cabo un proyecto altamente secreto en Bletchley Park, este
proyecto tenía el objetivo principal de descifrar los mensajes cifrados por la
máquina Enigma. [23]
El número de posibilidades de clave de la máquina Enigma era estratosférico,
por ello se debía aprovechar cualquier debilidad de la máquina que simplificase
la búsqueda de la clave. Esta fue le prioridad de Turing.
Además, se contaba con una gran ventaja que sería crucial a la hora de descifrar
mensajes cifrados por Enigma y es que, a pesar de no conocer el contenido de
los mensajes, en muchas ocasiones se podía suponer algún fragmento o palabra
del texto, dando lugar a los ataques conocidos como “Known-Plaintext” o por
palabra probable. De hecho, fue gracias al conocimiento de que casi todos los
mensajes acababan con las palabras “Hi Hitler” y a que en muchos mensajes se
incluían fechas y coordenadas. [24]

56
A continuación, se va a explicar en qué consistía el método que empleó Turing
para atacar el cifrado de la máquina Enigma, pero primeramente se deben
conocer cuáles eran las debilidades que aprovechó, las cuales fueron
básicamente:

• Imposibilidad de que una letra sea cifrada por sí misma


Ya que, gracias a esto, se podían descartar posiciones del texto donde se
creía que estaba el texto en claro que se buscaba. Por ejemplo:

Si se buscaba el texto en claro:

HOLA

Y se tenía el mensaje cifrado:

AOKJUYHGBVFDT

Bastaba con ir desplazando el texto en claro a lo largo del mensaje cifrado


y si en alguna posición coincidía alguna letra, se descartaba. Con el
ejemplo anterior:

A O K H I X A F A
H O L A ❌
H O L A ✔️
H O L A ❌
H O L A ❌
H O L A ✔️
H O L A ❌
Tabla 27. Detección de posibles cribas. Elaboración propia.

En este caso, de 6 posiciones iniciales de las que partir, se pueden


descartar 4 de ellas, lo que implica que sin hacer casi ningún esfuerzo se
puede asegurar con total seguridad que la palabra “HOLA” no se
encuentra en ninguna de esas 4 posiciones, teniendo que buscarla así en
las otras dos únicamente.

• Conexiones del tablero de conexiones fijas a lo largo del mensaje


Gracias a esta debilidad de la máquina Enigma, se pudieron implementar
los ataques “Known-Plaintext” y por palabra probable, ya que podrían
descartarse numerosas posibles posiciones iniciales de rotores. De hecho,
en ocasiones podría incluso descartar todas las posibilidades excepto
una, la correcta, y además, al buscar descartes, en las posiciones de
rotores en las que no se encontraban descartes, se podía obtener
información sobre algunas de las conexiones del tablero de conexiones.
Bien es cierto que, dependiendo del texto en claro que se utilizara, junto
a su correspondiente cifrado podría descartar muy pocas posiciones, sin
embargo, ya era mejor que probar con todas las posibles configuraciones
de rotores.
57
Una vez vistas, las debilidades que constituyen las bases del funcionamiento de
la bomba de Turing y de los ataques por “Known-Plaintext” se va a proceder a
explicar cual era el funcionamiento que se utilizaba:

Se debe mencionar que las bombas de Turing, estaban basadas en la bomba


criptológica de Rejewski, por lo que no dejaban de ser una máquina que
simulaba el funcionamiento de la máquina Enigma o mejor dicho de varias
máquinas Enigma.
Para empezar, se comenzaba utilizando la información que se conocía sobre los
mensajes de los alemanes, como su estructura, temas y otros componentes para
poder hacer suposiciones de texto en claro. A estas suposiciones junto a su
texto cifrado correspondiente, se las denominó cribas. Es importante destacar
que en ocasiones las cribas eran muy buenas, pero otras no lo eran tanto,
existía un factor suerte que era determinante para reducir al mínimo las
posibilidades de clave de Enigma.
Ahora bien, en ocasiones por el conocimiento de la estructura de los mensajes
se conocía cual era el texto en claro y justo su cifrado correspondiente. Si esto
no se conocía, había que recurrir a la debilidad de la máquina Enigma de que
una letra no se podía cifrar por sí misma para determinar posiciones en las que
se pudiera encontrar el texto cifrado correspondiente siguiendo el procedimiento
explicado anteriormente.
Una vez hecho esto, se contaba con una criba que podía ser, por ejemplo:

Texto en H O L A P E D R O
claro
Texto R I V H D T A I T
cifrado
Tabla 28. Ejemplo de criba. Elaboración propia.

A partir de aquí, para conocer una aproximación de la calidad de la criba se


formaría un menú, esto es una especie de diagrama de estados en el que se
representará cada iteración de la máquina Enigma en relación a los resultados
de la criba, formando el menú de la criba anterior:

Figura 48. Menú elaborado a partir de una criba. Elaboración propia.

58
Los menús suelen ser mejores, es decir, proporcionan un menor número de
falsos positivos, ya se verá más adelante lo que son exactamente, si contienen
ciclos y varios nodos. Por lo que se puede suponer que la criba anterior no será
demasiado buena. Supongamos otra criba:

Texto H O L A P E D R O Q U E T A L E S T A S
en
claro
Texto X G N D B R B P U X H A I F R Q F M U T
cifrado
Tabla 29. Ejemplo de criba. Elaboración propia.

Por lo tanto su menú sería:

Figura 49. Menú elaborado a partir de una criba. Elaboración propia.

Por limpieza se ha puesto tanto la continuación de la R como de la S abajo ya


que no forman ciclos, aunque sí que deberían aparecer en el menú en sus
respectivos lugares.
En este menú, se puede apreciar la aparición de dos ciclos, uno de ellos
representado con flechas en rojo H -> X -> Q -> E -> A -> U -> H y el otro
representado con flechas en verde E -> R -> P -> B -> D -> A -> E, además
contiene muchos más nodos que el anterior, de tal forma que se puede afirmar
a ciencia cierta que es mejor criba que la anterior. [25]
59
Una vez se encontraba una buena criba, se procedía a configurar la bomba.
Esta iba a disponer de un cableado especial de forma que se hacía una
suposición del tablero de conexiones, por ejemplo, la letra E estaría conectada
con la U, y se probaba esta combinación junto con los resultados que se iban
obteniendo hasta llegar a una contradicción, es decir que apareciera otra E u
otra U conectada con otra letra distinta. Si sucedía esto, se descartaban los
resultados obtenidos, y se probaba con otra conexión, por ejemplo, la E con la
V, si se encontraba otra contradicción se volvían a descartar los resultados, pero
si no se encontraba, podía ser un indicativo de que era buen camino para llegar
a la clave.
Por esto, los ciclos en los menús eran tan importantes, porque como mínimo al
tener dos iteraciones que conducían a la misma letra, tras pasar por varias
iteraciones, obligaba a realizar una comprobación. Se va a realizar un ejemplo
de todo esto, con la criba del menú anterior:

Algoritmo para encontrar contradicciones


Se comienza con un orden de rotores, por ejemplo ZZZ y se supone una conexión
del tablero de conexiones para la H, en este caso H <-> A, comienza a funcionar
la bomba:
Se recuerda la criba:

Texto H O L A P E D R O Q U E T A L E S T A S
en
claro
Texto X G N D B R B P U X H A I F R Q F M U T
cifrado
Tabla 30. Ejemplo de criba anterior. Elaboración propia.

Configuración previa:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III ZZZ 01 01 01 AH
Tabla 31. Clave de máquina Enigma. Elaboración propia.

60
Se realiza la primera iteración:

Figura 50. Cifrado gráfico de la letra H. Elaboración propia.

En la imagen anterior, se puede analizar cual sería el comportamiento de la


primera iteración de la bomba, que para recordarlo, no era más que un
simulador de máquinas Enigma sofisticado. Primeramente, entraría la H en la
máquina que al estar supuestamente conectada con la A en el tablero de
conexiones (representado con las letras TC), se produciría esta sustitución. A
continuación, la letra A llegaría a los rotores (círculos en gris) con la posición
que se está analizando (en este caso Z Z Z) y el cifrado proporciona una E.
Ahora si se observa la criba, en concreto la primera posición se tiene que si se
introduce una H en esta iteración debe dar una X. Por lo tanto, al salir de los
rotores la letra E y puesto que solo se puede permitir como resultado la letra X,
se debe añadir al tablero de conexiones la conexión E <-> X.
Se actualiza la configuración:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III ZZZ 01 01 01 AH EX
Tabla 32. Clave de máquina Enigma. Elaboración propia.

Se procede con la siguiente iteración de los rotores, por lo que la posición actual
será la posición Z Z A. Si se sigue con la criba se debe introducir la letra O y
debe obtener como resultado una G. Entre las letras que no están ya siendo
utilizadas por el tablero de conexiones se selecciona otra, la B en este caso.

61
La iteración sería:

Figura 51. Cifrado gráfico de la letra O. Elaboración propia.

Y la nueva configuración, por lo tanto:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III ZZZ 01 01 01 AH EX BO
GZ
Tabla 33. Clave de máquina Enigma. Elaboración propia.

Si se realiza una iteración más, siguiendo el mismo procedimiento:

Figura 52. Cifrado gráfico de la letra L. Elaboración propia.

62
Obtendríamos la siguiente configuración:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III ZZZ 01 01 01 AH EX BO
GZ CL NO
Tabla 34. Clave de máquina Enigma. Elaboración propia.

Al ejecutar esta última iteración se ha producido una contradicción, ya que,


siguiendo la criba, en este caso la O debería estar obligatoriamente conectada
con la N, pero ya lo estaba anteriormente con la B, por lo tanto, esta
configuración del tablero de conexiones no es posible.
A partir de aquí, se volvería a proceder de la misma forma, pero comenzando
con la conexión H <-> B, ya que la conexión H <-> A ha sido descartada.
Si se sigue iterando, se llegará a la conclusión de que, en este caso, todas las
posibles configuraciones para el tablero de conexiones son descartadas, habría
alguna letra que no podría ir conectada a ninguna ni consigo misma, por lo
tanto, se descarta la posición inicial Z Z Z como posible clave de cifrado en este
mensaje.
Como se ha mencionado antes, el que haya ciclos en el menú es señal de una
mejor calidad de la criba, pero no solo porque obligue a realizar la comprobación
de que si una iteración es H <-> X y otra H <-> U, la H deberá estar conectada
con la misma letra en el tablero de conexiones en ambas iteraciones o bien no
estar conectada en ninguna de las dos. Hay otra ventaja muy importante en los
ciclos, y es que, si se analizan estos, en lugar de toda la criba, las conexiones
que encuentre del tablero de conexiones la bomba pueden ser completamente
descartadas para ese orden de rotores, simplificando así la búsqueda de la clave.
[22] Se propone el siguiente ejemplo:

Se utiliza el ciclo H -> X -> Q -> E -> A -> U y las posiciones de los rotores ZZZ.
Se comienza con el procedimiento anterior, por lo que se conecta la letra H con
la A en el tablero de conexiones.

Figura 53. Cifrado gráfico de la letra L. Elaboración propia.

63
Se actualiza la configuración del tablero de conexiones:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III ZZZ 01 01 01 AH EX
Tabla 35. Clave de máquina Enigma. Elaboración propia.

Se puede observar que el procedimiento y el resultado es el mismo que la


primera iteración anterior, sin embargo, esta vez, en lugar de con la iteración
número 2, se va a realizar la iteración correspondiente a los siguientes nodos
del ciclo, es decir, X -> Q y por lo tanto es la iteración 10 de la máquina, lo que
se traduce en:

Figura 54. Cifrado gráfico de la letra L. Elaboración propia.

Como se puede observar en la imagen, los rotores no han avanzado solo una
posición con respecto a la iteración anterior, se han colocado en la posición
correspondiente a la iteración 10 de la máquina. Además, en esta iteración
corresponde introducir una letra X, la cual está conectada a la letra E como se
ha obtenido anteriormente. De esta forma se obtiene una V al salir de los rotores
en esta posición y por lo tanto, una Q al salir del tablero de conexiones. Se
actualiza la configuración:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III ZZZ 01 01 01 AH EX VQ
Tabla 36. Clave de máquina Enigma. Elaboración propia.

64
Se continúa iterando de la misma forma, esta vez buscando la iteración Q -> E,
que corresponde a la posición 16 de la criba, por lo que:

Figura 55. Cifrado gráfico de la letra L. Elaboración propia.

Se avanzan los rotores hasta la posición correspondiente, en este caso Z Z O, la


posición 16 con respecto a la inicial y se obtiene que habría que conectar la L
con la E:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III ZZZ 01 01 01 AH EX VQ
LE
Tabla 37. Clave de máquina Enigma. Elaboración propia.

La letra E está conectada dos veces, por lo que se descartaría esta configuración
del tablero de conexiones y además por ser un ciclo, estas conexiones no serán
las correctas en ningún caso para este orden de rotores, por lo que no haría
falta comprobar más la A con la H, la E con la X…
Pero, ¿y si se prueba con la posición inicial de rotores AAA? Se analiza el mismo
ejemplo anterior, pero con la posición inicial AAA:

Se utiliza el ciclo H -> X -> Q -> E -> A -> U. Se comienza con el procedimiento
anterior, por lo que se conecta la letra H con la A en el tablero de conexiones.

• Probando con la conexión inicial H <-> A, se descartarían las conexiones:


Tablero de conexiones descartado: AH AX BX EI KQ
• Probando con la conexión inicial H <-> B, se descartarían las conexiones:
Tablero de conexiones descartado: AH AX BH BX EI KQ
• Probando con la conexión inicial H <-> C, se descartarían las conexiones:
Tablero de conexiones descartado: AH AX BH BX CH EI FQ KQ QX
65
• Probando con la conexión inicial H <-> D, se descartarían las conexiones:
Tablero de conexiones descartado: AH AX BH BX CH DH EI EO FQ KQ
MX QV QX
• Probando con la conexión inicial H <-> E, se descartarían las conexiones:
Tablero de conexiones descartado: AH AJ AX BH BX CH DH EH EI EO
EY FQ FX HU KQ MX Q QV QX
• Probando con la conexión inicial H <-> F, se descartarían las conexiones:
Tablero de conexiones descartado: AE AH AJ AS AX BH BX CH CQ DH
EH EI EO EY EX FH FQ FX HU KQ MX Q QV QX
• Probando con la conexión inicial H <-> G:
1) El tablero de conexiones tras la primera iteración sería: GH X
2) El tablero de conexiones tras la segunda iteración del ciclo sería: GH
QR X
3) El tablero de conexiones tras la tercera iteración del ciclo sería: EF
GH QR X
4) El tablero de conexiones tras la cuarta iteración del ciclo sería: AB EF
GH QR X
5) El tablero de conexiones tras la quinta iteración del ciclo sería: AB EF
GH QR U X
6) En la sexta iteración, U -> H, se cifra la letra U, ya que, por lo obtenido
anteriormente no va conectada a ninguna letra, y se obtiene una G,
que según la criba solo podría ir conectada a la H. Justo la conexión
que se había supuesto inicialmente.

Tras comprobar esta configuración con el resto de la criba, se obtienen más


conexiones del tablero de conexiones, quedando:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III AAA 01 01 01 AB CD EF
GH IJ KL
MN OP QR
ST
Tabla 38. Clave de máquina Enigma. Elaboración propia.

Al no haberse encontrado nuevamente ninguna contradicción, se puede afirmar


que se ha encontrado la clave adecuada de los rotores y del tablero de
conexiones, o bien que es un falso positivo, es decir, una clave con la que no se
ha encontrado ninguna contradicción en la criba, pero que, sin embargo, al
aplicarse no se obtiene como resultado un texto en claro con sentido. Cuanto
peor es la calidad de la criba más falsos positivos aparecerán, llegando incluso
a no simplificar nada el trabajo de criptoanálisis si era de mala calidad.

66
2.4.3.2 Implementación de ataque “Known-Plaintext”
Para implementar un ataque en escenario de “Known-Plaintext” en la actualidad
se puede seguir el mismo procedimiento o uno bastante similar, ya que los
resultados son bastante buenos.
A continuación, se presentan unas indicaciones del algoritmo seguido para
implementar un software que simula el funcionamiento de la bomba de Turing
y por lo tanto que permite atacar a cifrados de la máquina Enigma en
situaciones de “Known-Plaintext”:
1) Buscar ciclos en la criba elaborada. Se obtiene el ciclo más grande para
reducir así el número de posibles falsos positivos. Recordar que para la
herramienta que se ha desarrollado debe haber ciclos en la criba o dará
error, debido a que una criba sin ciclos dará un número excesivo de falsos
positivos, cosa que no interesa para nada.
2) Para cada posible orden de rotores y de sus posiciones iniciales se crea
una matriz (26x26) llena de 0 que va a representar las conexiones que no
se puedan dar. Si en algún momento algún valor se cambia por 1, la
conexión se da como imposible.
3) En lugar de recorrer todos los elementos de la criba, se va a buscar cada
elemento perteneciente al ciclo en orden.
4) Se va a comprobar una letra que no esté en la matriz de letras imposibles
para probar la conexión con la letra de la criba correspondiente. El
resultado de su cifrado será la posible conexión de la otra letra de la criba
que esté en la misma posición.
5) Se guarda la conexión en una matriz (26x26) de posibles conexiones,
donde las intersecciones representarán la conexión entre dos letras si
están a 1.
6) Se comprueba que ningún valor se ponga a 2, ya que representaría una
contradicción.
7) Se repiten los pasos 4 a 6 a lo largo de todo el ciclo obtenido
anteriormente.
8) Si se ha encontrado alguna contradicción se descarta la configuración de
rotores.
9) Si no se ha encontrado ninguna contradicción se guarda la configuración
como posible resultado.

Una vez descartadas varias posibles configuraciones de rotores, se va a realizar


un nuevo filtrado. Este va a consistir en analizar las configuraciones de rotores
posibles junto a las conexiones del tablero de conexiones y las conexiones que
no son posibles obtenidas anteriormente, a lo largo de toda la criba en búsqueda
de contradicciones. Se recorre la criba dos veces por si al empezar este filtrado
no se tiene información de ninguna conexión de las dos letras iniciales. De esta
forma se pasaría a las siguientes, y a lo mejor a lo largo de la criba se obtiene
alguna conexión de alguna de las dos letras anteriores, reduciendo así el
número de falsos positivos y aumentando el número de conexiones del tablero
de conexiones obtenidas. [44]

67
2.4.3.3 Comparación complejidad en los ataques con la capacidad de
computación actual.
Este apartado es solo un replanteamiento para el lector del trabajo que
conllevaba todo el proceso de las bombas de Turing y el poco tiempo y recursos
que habría que destinar hoy en día.
• La primera comparación es a la hora de comprobar si una criba es
aparentemente buena o no. Como se ha mencionado anteriormente
cuantos más elementos y ciclos tuviera el menú de la criba
probablemente sería mejor.
En la Segunda Guerra Mundial esto debía hacerse a mano, es decir,
comparar el texto plano con el cifrado y elaborar el menú. Hoy en día hay
incluso librerías en varios lenguajes que obtienen los ciclos de una criba
en apenas unos milisegundos.
• Comprobar si una criba es posible aprovechando la debilidad de que una
cifra no puede ser cifrada por sí misma. Es una tarea que cualquier
persona podría realizar en apenas en unos segundos, pero si hay que
realizar esta comprobación a lo largo del posible texto, requiere bastante
más tiempo. Con los lenguajes de programación actuales bastaría con
unos pocos segundos para los textos más largos.
• Las bombas de Turing pese a ser un gran avance para la época no tiene
nada que ver con los ordenadores actuales, los cuales pueden
desempeñar la misma tarea en muchísimo menos tiempo.
• La comprobación de los posibles positivos obtenidos de las bombas,
pasaba por que una persona apuntara la clave y probara en una máquina
Enigma real, si daba un texto con sentido bien, si no lo daba a seguir
buscando. Actualmente bastaría con comprobar el Índice de
Coincidencia del texto, del cual se hablará más adelante. Este se podría
obtener en unos milisegundos y con ello bastaría para saber si estamos
ante la clave correcta. Turing también podría haber empleado el Índice
de Coincidencia, pero con la tecnología de la época le hubiera llevado más
tiempo que comprobar si cada resultado descifrado tenía sentido.

Como conclusión simplemente mencionar que lo que en la época de Turing


podría llevar horas y horas, actualmente se podría obtener en apenas unos
pocos minutos sin ni siquiera tener un código optimizado.

2.4.4 Métodos modernos de criptoanálisis en situaciones de


“CipherText-Only”

En la actualidad, el cifrado de la máquina Enigma sigue siendo todo un reto y,


por lo tanto, objeto de estudio. En este escenario en el que solo se conoce el
texto cifrado, no se pueden aprovechar las debilidades de la máquina Enigma
expuestas en el apartado 2.4.1, ya que en todas ellas es necesario utilizar texto
en claro que se encuentre cifrado en el texto que se quiere atacar para
aprovecharlas, y en este escenario no se cuenta con nada de texto claro. Por lo
que a priori, solo se presenta una opción, el ataque por fuerza bruta.

68
Este ataque consiste en probar todas y cada una de las posibles combinaciones
existentes hasta dar con la clave correcta. El problema aparece cuando se tiene
en cuenta la complejidad real de la máquina Enigma, es decir, su espacio de
claves. Y si por casualidad se encontrara la combinación correcta de claves no
se tiene el texto en claro correspondiente para comprobarlo. En este punto se
va a ir mostrando al lector algunos puntos clave sobre cómo abordar este reto.

2.4.4.1 Indicadores matemáticos


Antes de comenzar un ataque por fuerza bruta de esta magnitud, se debe
entender que lo más importante es aumentar el rendimiento o la velocidad a la
que se prueba cada posible combinación. Esto además supone un problema, el
cómo comprobar la calidad de cada combinación para saber si estamos ante
una posible solución. En este apartado se van a presentar dos indicadores
matemáticos que pueden servir de ayuda a la hora de encontrar la clave.

1) Índice de Coincidencia (IoC)


Esta técnica o indicador matemático fue propuesto a principios del siglo XX,
de hecho, fue una de las técnicas consideradas para usarse en los
criptoanálisis de Bletchley Park, aunque no se decantaran por esta al final.
Este indicador va a proporcionar un valor numérico directamente asociable
a cómo de aleatorio es un texto.
En realidad, para entender el índice de coincidencia es importante remarcar
que en los lenguajes naturales la aparición de las letras no es casual. De
hecho, técnicamente el índice de coincidencia lo que va a medir es la
probabilidad de que al seleccionar dos letras cualesquiera en un texto sean
las mismas.
Para poner en práctica esta técnica es necesario disponer de un texto, contar
el número de veces cada letra y conocer el número de letras del texto. Una
vez se conocen todos estos elementos, se puede aplicar la siguiente fórmula
para cada letra:

𝐹𝑖 𝑥 (𝐹𝑖 − 1)
𝑁 𝑥 (𝑁 − 1)

Donde “Fi” es el número de veces que aparece cierta letra en el texto y N es


el número total de caracteres que hay en el texto.
Como el índice de coincidencia se calcula para todas las letras de un
abecedario, habría que repetir esta fórmula para cada letra, por lo tanto, la
fórmula del índice de coincidencia sería:

𝑛 𝐹𝑖 𝑥 (𝐹𝑖 − 1)
𝐼𝑜𝐶 = ∑
𝑖=1 𝑁 𝑥 (𝑁 − 1)

Donde “n” representa el número de caracteres distintos que presenta un


alfabeto. [26]

69
Para que se entienda mejor se va a poner un ejemplo con los siguientes
textos:

Texto no aleatorio
“La Informática es la rama de la Ingeniería que estudia el hardware, las
redes de datos y el software necesarios para tratar información de forma
automática. Aunque pueda parecerte una definición muy abstracta,
estamos seguros de que sabes mucho más de Informática de lo que crees.
Y si no, sigue leyendo un poco más.” [27]

Letra A B C D E F G H I J K L M
F 37 2 11 13 35 6 3 2 17 8 11
F-1 36 1 10 12 34 5 2 1 16 7 10
F(F-1) 1332 2 110 156 1190 30 6 2 272 0 0 56 110

Letra N Ñ O P Q R S T U V W X Y Z
F 14 18 4 4 19 20 13 14 2 4
F-1 13 17 3 3 18 19 12 13 1 3
F(F-1) 182 0 306 12 12 342 380 156 182 0 2 0 12 0
Tabla 39. Tabla de frecuencias de las letras del texto. Elaboración propia.

27 𝐹𝑖 𝑥 (𝐹𝑖 − 1) 4852
𝑰𝒐𝑪 = ∑ = = 𝟎, 𝟎𝟕𝟑𝟕𝟒𝟕
𝑖=1 𝑁 𝑥 (𝑁 − 1) 257 𝑥 256

Texto aleatorio
Pdgsgknnlabkbbexdopymotbfbztxyzyeufdfqnwrewautmaelxcplyuoqkqxmfbt
ozgadroptrawzdzkjhutecqfsmogifsteyqprvtvdzwqlirrsnetcqctnxyblyaocpmkq
rrxksprmuuececnjpznjbdjpvkhujhqnqezgljacyzbdehargkqkmqrtwkwoiwllctr
asvnirsoledquhilywvwqizjjojnqdsohgivqfpigpptkwncmrhpwiyw.

Letra A B C D E F G H I J K L M
F 9 9 10 10 12 7 8 7 9 9 11 10 8
F-1 8 8 9 9 11 6 7 6 8 8 10 9 7
F(F-1) 72 72 90 90 132 42 56 42 72 72 110 90 56

Letra N Ñ O P Q R S T
F 11 11 13 16 14 8 13
F-1 10 10 12 15 13 7 12
F(F-1) 110 110 156 240 182 56 156

70
Letra U V W X Y Z
F 8 6 12 6 10 10
F-1 7 5 11 5 9 9
F(F-1) 56 30 132 30 90 90
Tabla 40. Tabla de frecuencias de las letras del texto. Elaboración propia.

27 𝐹𝑖 𝑥 (𝐹𝑖 − 1) 2434
𝑰𝒐𝑪 = ∑ = = 𝟎, 𝟎𝟑𝟔𝟗𝟗𝟓
𝑖=1 𝑁 𝑥 (𝑁 − 1) 257 𝑥 256

Como se puede apreciar en los ejemplos anteriores, se han creado tres tablas
con tres filas. La primera “F” el número de veces que aparece cada letra en
cada texto, la segunda “F – 1” el número de veces que aparece cada fila en
cada texto restándole 1 y la tercera, la multiplicación de las dos filas
anteriores, ya que en la fórmula la expresión que se utiliza es F x (F – 1).
Tras obtener el índice de coincidencia de cada texto, se obtiene en el primero
un resultado de 0,073747 y en el segundo 0,036995. Son resultados
bastante indicativos, ya que en el índice de coincidencia los textos aleatorios
presentan valores cercanos al 0,0385. De hecho, se puede observar la
siguiente tabla para ver una aproximación de los valores del índice de
coincidencia:

Figura 56. Imagen que muestra los IoC de algunos idiomas. [44]

Por lo tanto, para textos no aleatorios en español el índice de coincidencia


tendrá un valor cercano a 0,077. En el primer ejemplo se ha obtenido un
IoC=0,073747, lo que es bastante cercano. Esto es un claro indicativo de
que el primer texto no es aleatorio. Sin embargo, en el segundo texto se ha
obtenido un IoC=0,036995, lo que es bastante cercano a 0,0385, indicando
así que es un texto completamente aleatorio.
Es importante destacar que, aunque cada idioma tenga un IoC aproximado
distinto, el índice de coincidencia no debe utilizarse para conocer en que
idioma está escrito un texto.

71
2) Análisis de frecuencias

Este es otro indicador matemático que consiste en averiguar las


apariciones de una letra, bigrama (conjunto de dos letras), trigrama
(conjunto de tres letras) o n-grama (conjunto de n letras) en un texto. De
esta forma a los textos se les puede dar una puntuación en función a las
letras, bigramas… más frecuentes en un idioma. [28]
Por ejemplo, si en un texto aparece el trigrama “ing” muchas veces es muy
probable que el texto sea un texto en inglés.
Como inconveniente principal de este método o indicador es que se debe
conocer el idioma del texto que se está analizando si se quiere utilizar como
instrumento para saber si un texto es aleatorio o no, ya que, por ejemplo,
si se está realizando un ataque por fuerza bruta a la máquina Enigma y se
está utilizando como detector para saber si el texto ha sido descifrado, no
sirve de nada utilizar las frecuencias del inglés si el texto está en español
porque nunca detectará que ha sido descifrado.

2.4.4.2 Ataques actuales en escenarios de “CipherText-Only”


Como se ha mencionado en el apartado anterior, el único ataque posible a la
máquina Enigma hoy en día es el ataque por fuerza bruta. Sin embargo, es
cierto que hay estrategias que pueden ayudar a guiar a los criptoanalistas a
comenzar el ataque por una clave parcial o por otra, con el fin de encontrar la
clave completa habiendo examinado el menor número de claves posibles.
De hecho, hay algunas estrategias elaboradas por criptógrafos que permiten
descifrar algunos mensajes en muy poco tiempo. Una de las estrategias más
famosas en el mundo de la criptografía es la implementada por James J. Gillogly.
Esta se basa en una debilidad de la máquina Enigma de la que no se ha hablado
antes en este trabajo, y es que en el tablero de conexiones no todas las letras
solían estar conectadas, por lo tanto, en el momento que se encontrase la
configuración de los rotores correcta, el resultado de descifrar el mensaje cifrado
será mejor en comparación a descifrar el cifrado con una configuración errónea.
Se puede ver con el siguiente ejemplo:
Se supone un texto, “Hola qué tal estás” cifrado con la siguiente configuración:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III AAA 01 01 01 AB CD EF
GH
Tabla 41. Clave de máquina Enigma. Elaboración propia.

El texto resultante: XIADW PCREP CBNFF

72
Si se comienza un ataque por fuerza bruta dejando el tablero de conexiones
vacío, es decir sin conectar ninguna letra, ocurrirá lo siguiente con algunas
configuraciones de rotores:

• II IV V Z S J
Se obtendrá el texto: PGIEV IAAKW QILKS
• I III V KOI
Se obtendrá el texto: KZCVX YPWKE ZRMEK
• I II III AAA
Se obtendrá el texto: GOZLQ UATWL WFTDW

Parece que todos los resultados son textos completamente aleatorios, pero si se
compara el último de ellos con el mensaje original:

H O L A Q U E T A L E S T A S
G O Z L Q U A T W L W F T D W
Tabla 42. Comparación entre texto en claro y texto cifrado. Elaboración propia.

Se puede apreciar como coinciden bastantes letras y si se recuerda del apartado


anterior, existe un indicador matemático para conocer si un texto es muy
aleatorio o no, el índice de coincidencia. Pues bien, si se aplica el índice de
coincidencia a todos los textos se obtendrá que el más alto o el más alejado al
valor 0,0385 será el de la configuración correcta de rotores.
Es importante destacar que el ejemplo anterior es muy básico ya que no tiene
casi conexiones en el tablero de conexiones, y además es un texto demasiado
corto como para que el índice de coincidencia sea fiable.
De hecho, aquí se presentan las dos principales debilidades del método
planteado por James J. Gillogly, el aumento de conexiones en el tablero de
conexiones aumenta la dificultad, el índice de coincidencia funciona mejor
cuanto más largo es el mensaje y, cuanto más largo sea el mensaje más costoso
será comprobar todas las posibles combinaciones. Por lo tanto, es un método
que no siempre tiene éxito ya que solo analiza las configuraciones que obtienen
una mayor puntuación, y en ocasiones no son las correctas.
Sin embargo, sí que sienta las bases del índice de coincidencia como principal
guía en la búsqueda de la clave correcta.
Por otra parte, también emplea análisis de bigramas y trigramas ya que en
textos más cortos y tras pequeños cambios, como puede ser un cambio de
conexión de una letra a otra en el tablero de conexiones, pueden ofrecer mejores
resultados. Aunque se sigue necesitando conocer el idioma del texto original y
además que la clave esté parcialmente encontrada porque es necesario que se
formen bigramas y trigramas con sentido, algo que es imposible si la clave de la
máquina es totalmente errónea. [29]

73
2.4.4.3 Implementación ataque “CipherText-Only”
Cualquier estrategia es buena si ayuda a reducir el espacio de claves que
examinar de la máquina Enigma, o, mejor dicho, si ayuda a dar antes con la
clave correcta del cifrado.
Por esto, el ataque que se va a implementar va a tener como referencia principal
el índice de coincidencia como elemento tanto de parada, es decir, que indique
que se ha encontrado la clave correcta, como de guía, para ver que claves
comprobar antes o cuales después.
Antes de comenzar con la implementación de este método, es importante
destacar que las estrategias vistas, funcionan como simuladores de Enigma.
Con un código más o menos eficiente el funcionamiento es siempre el mismo,
se coge la primera letra, se hace una rotación, se comprueba si alguno de los
otros rotores debe rotar y con la nueva posición se realiza la sustitución en el
tablero de conexiones, en el rotor de la derecha, en el del medio, en el de la
izquierda, en el reflector, y nuevamente en los rotores y en el tablero de
conexiones. Demasiadas iteraciones para una sola letra, incluso con un código
muy eficiente, ya que para una sola letra no tarda prácticamente nada, para un
texto de, por ejemplo, 200 letras tampoco, pero repitiendo esto por cada posible
combinación de rotores, de sus posiciones iniciales, ring settings, reflector y
tablero de conexiones, se convierte en muchísimo tiempo, un tiempo imposible
hasta para un ordenador actual.
Por ello en este punto, se propone lo siguiente:

¿Y si no hiciera falta hacer todas estas iteraciones en cada letra?


Igual se pueden aprovechar otras ventajas de la tecnología actual y no solo las
velocidades con las que trabajan los ordenadores actualmente, como la
capacidad de almacenamiento.
Hoy en día es muy fácil y asequible crear, almacenar e incluso navegar sobre
cantidades enormes de datos. Dicho esto, se va a explicar algo que puede
parecer una obviedad pero que puede ser una gran ventaja para el criptoanálisis
de la máquina Enigma.
Se supone la siguiente clave:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III AAA 01 01 01 AB CD EF
GH
Tabla 43. Clave de máquina Enigma. Elaboración propia.

74
Si se pulsa la tecla B va a suceder lo siguiente:

Figura 57. Cifrado gráfico de la letra B. Elaboración propia.

Y si se cambian las conexiones del tablero de conexiones y la clave queda así:

Reflector Orden de los Posición Rings Tablero de


rotores inicial de los Settings conexiones
rotores
B I II III AAA 01 01 01 AC BD EF
GH
Tabla 44. Clave de máquina Enigma. Elaboración propia.

Si se pulsa la tecla C va a suceder lo siguiente:

Figura 58. Cifrado gráfico de la letra B. Elaboración propia.

Analizando las dos imágenes, se puede observar que la sustitución después de


que actúe el tablero de conexiones la primera vez y antes de que lo haga por
segunda vez es idéntica. Y esto se va a cumplir en cualquier iteración de la
máquina Enigma. Por lo tanto, se puede dividir la máquina Enigma en solo 3
sustituciones, la primera de ellas la que realiza el tablero de conexiones la
primera vez, la segunda la que realiza el resto de la máquina (a lo que se le va a
denominar sustitución interna), y la tercera la del tablero de conexiones la
segunda vez.
75
Por esto, se plantea una nueva pregunta:

¿Y si se almacenara la sustitución interna en bloque?


Esta va a ser la base del ataque a los cifrados en situaciones de “CipherText-
Only”, se va a crear un archivo o varios en los que se guarde cada posible clave
de rotores junto con la letra a cifrar y su correspondiente resultado o letra
cifrada.
De esta forma, gracias a las mejoras en la capacidad de almacenamiento y
manipulación de datos, cada vez que tengamos que cifrar una letra, se realiza
la sustitución del tablero de conexiones y acto seguido se busca en uno de los
archivos qué letra proporcionará el cifrado interno de la máquina en lugar de
tener que ir realizando sustituciones por cada rotor y en el reflector. Pero este
no es el único lugar donde podemos aprovechar el almacenamiento para
optimizar la búsqueda.
Una vez explicada la base del ataque, se va a exponer por fases explicando sus
ventajas con respecto a los métodos más tradicionales:
Es importante destacar que se ha probado el método para 5 rotores y todos sus
posibles órdenes y posiciones iniciales, 2 posibles reflectores, y 10 conexiones
del tablero de conexiones, sin tener en cuenta las conexiones de letras
consecutivas ya que no estaban permitidas, por ejemplo, la conexión A <-> B.
Esta era una de las formas de elaborar claves en cifrados de la Segunda Guerra
Mundial. Además, por simplificar las pruebas de este ataque se han omitido las
ring settings, aunque el procedimiento sería el mismo.

1) Creación de archivos
La primera y más novedosa fase con respecto a otros ataques al cifrado
de la máquina es la creación de archivos que guarden las configuraciones
de rotores junto a sus letras de entrada y sus correspondientes letras
cifradas, omitiendo el tablero de conexiones.
Mediante el método tradicional de simuladores de la máquina Enigma,
en este caso sería, realizar la sustitución del rotor de la derecha, el del
medio, el de la izquierda, la del reflector y otra vez la de todos los rotores,
se cifran todas las posibles letras con todas las posibles combinaciones.

Por lo tanto, el procedimiento a seguir no es más que recorrer todas las


posibles opciones de orden de rotores y de sus posiciones iniciales, los
posibles reflectores, así como, las 26 letras del abecedario para cada
configuración de los anteriores elementos.

Realmente es un proceso que no es importante optimizar ya que solo se


utilizará una vez y se obtienen resultados que se podrán utilizar las veces
que se quiera. Este proceso va a devolver un formato similar al de la
imagen que se muestra a continuación:

{
B123|0|0|0|0: 1
}
Figura 59. Formato de salida para configuraciones de Enigma.
Elaboración propia.

76
La letra “B” de la clave corresponde al reflector empleado, los números
123 a los rotores que se han usado y el orden en el que se han
predispuesto, en este caso el rotor de la izquierda será el 1, el del medio
será el 2, el de la derecha será el 3…
Los siguientes tres 0 separados por el símbolo “|” corresponden a las
posiciones iniciales de los rotores. El último 0 corresponde al orden en el
alfabeto de la letra que será cifrada por los rotores, en este caso el 0
correspondería a la “A”. Por último, el valor resultante de esta clave, en
este caso, es el 1 y corresponde al orden en el alfabeto de la letra que es
el resultado de haber cifrado otra, en este ejemplo sería la letra “B”.
Tras crear estas estructuras con todas las posibles combinaciones se van
a guardar todos los pares clave, valor en un archivo csv u otro formato
que facilite la manipulación de grandes cantidades de datos.
Se guardarán con el siguiente formato:
B123|0|0|0|0,1
B123|0|0|0|0,0
B123|0|0|0|2,16
B123|0|0|0|3,12
Figura 60. Formato de en archivo csv. Elaboración propia.

Y así con todas las posibilidades. De esta forma se ha logrado obtener


todas las opciones de cifrado interno de la máquina.
Para el tablero de conexiones se ha hecho algo muy parecido, pero solo
se han guardado todas las posibles combinaciones de 3 conexiones con
el siguiente formato en el archivo csv:

0,0 2 1 3 5 7
1,0 2 1 3 5 8
Figura 61. Formato de en archivo csv. Elaboración propia.

En este caso el número de la izquierda solo representa el número de


configuración del tablero de conexiones, por comodidad, y los números
de la derecha representan el orden de las letras conectadas en pares dos
a dos. En este caso, el primer elemento representaría las conexiones:

A <-> C, B <-> D y F <-> H

Realmente, este punto podría realizarse de muchísimas formas y con


numerosos formatos. Además, se eligen 3 conexiones del tablero de
conexiones en lugar de las 10, aunque este número podría variar, para
tener que recorrer el menor número de claves posibles, pero con la
condición de que si estamos ante la clave correcta el Índice de
Coincidencia sea mayor que los de claves incorrectas.

77
Lo que realmente importa y lo que se desea transmitir en este punto es
la ventaja que supone guardar todas estas iteraciones. Al tenerlas
guardadas, da igual el mensaje que se tenga que descifrar de la máquina
Enigma porque no se tendrán que realizar todas las iteraciones
necesarias, bastará con ir consultando estos archivos y obtener los
resultados de cifrado, algo que es tremendamente más eficiente y
aplicable a cualquier estrategia actual o nueva que pueda surgir de
búsqueda de claves. Además, otra ventaja es que estos archivos pueden
utilizarse para prácticamente cualquier lenguaje de programación, por lo
que pueden servir para cualquier persona que quiera desarrollar un
ataque a la máquina Enigma.

2) Seleccionar orden de búsqueda de claves


Una vez se tienen creados todos los archivos relacionados con las
configuraciones de claves, se puede comenzar a hallar la clave correcta.
Para lograrlo, primeramente, se van a recorrer todas las posibles claves
de rotores, tanto su orden como su posición inicial y se tratará de
descifrar el mensaje cifrado en cuestión.
Ahora bien, ¿cómo se sabe cuál es la configuración de rotores correcta?
La respuesta es que no se puede saber con certeza. Sin embargo, se
puede utilizar el Índice de Coincidencia, de una forma similar al método
de James J. Gillogly visto anteriormente.
Para cada configuración de rotores, se va a obtener una puntuación del
Índice de Coincidencia de su descifrado y acto seguido se van a ordenar
todas estas configuraciones en base a esta puntuación.
Esta es una búsqueda muy costosa y que requiere tiempo, pero se cuenta
con una ventaja gracias al paso anterior. Los órdenes de los rotores y sus
posiciones junto a su letra de entrada y de salida, ya están hechos,
simplemente bastará con saber qué rotores tienen que rotar en cada caso
y obtendremos cada letra cifrada. Es decir:

o Se comienza con el orden de rotores (“1”, “2”, “3”) y las posiciones


iniciales (“A”, “A”, “A”).
o El proceso para descifrar cada letra sería:
▪ Comprobar rotaciones de los rotores y llevarlas a cabo.
▪ Buscar en el archivo la letra resultante con la configuración
actual.
o Se guardan las frecuencias de las letras y se obtiene el Índice de
Coincidencia.
o Se repite el proceso para cada configuración de rotores.
o Se guardan todas en una lista y se ordena según el IoC.

Sigue siendo un proceso costoso y que además depende de la longitud


del texto a descifrar, sin embargo, solo se realizará una vez y es muy
probable que la configuración correcta de rotores esté en las primeras
posiciones de la lista. Esto se debe a lo explicado anteriormente sobre
que las letras que no estén conectadas en el tablero de conexiones ya
llevarán la corriente correcta para el texto en claro correspondiente.

78
3) Búsqueda de conexiones y configuración de los rotores correcta
Aquí llega la parte clave para el descifrado del mensaje y la parte más
importante de este trabajo, donde se pondrá de manifiesto los avances
conseguidos. Para exponerlos adecuadamente se van a ir describiendo
por pasos y el porqué de cada uno.
o Llegados a este punto se cuenta con:

▪ Un mensaje cifrado.
▪ Un archivo o varios con todas las configuraciones posibles
de rotores y sus letras de entrada y de salida.
▪ Una lista ordenada en base al Índice de Coincidencia de las
configuraciones de rotores.

o Iterar sobre cada configuración de rotores.


o Crear una estructura, como un diccionario o un mapa, o incluso
una lista, que recoja el equivalente a ir recorriendo el texto con la
posición de rotores correspondiente:
Por ejemplo, si se tiene el texto “HOLA”, el orden de rotores (“1”,
“2”, “3”) y la posición inicial de rotores (“A”, “A”, “A”). Se crearía un
diccionario similar a:
{
0: B123|0|0|1|,
1: B123|0|0|2|,
2: B123|0|0|3|,
3: B123|0|0|4|,
}
Figura 62. Estructura que representa la configuración de los
rotores en cada iteración del cifrado de la palabra HOLA.
Elaboración propia.

De esta forma, se tienen todas las posiciones de rotores del texto


predefinidas.
o Crear grupos de búsqueda y aprovechar threads o procesos, por
ejemplo, el primero busca de la configuración del tablero de
conexiones de la 0 a la 1.000.000, el segundo de la 1.000.000 a la
2.000.000. En cada grupo realizar los siguientes pasos
simultáneamente.
o Cargar datos del tablero de conexiones.
o Probar con todas las posibles conexiones de tres pares para el
texto cifrado y el respectivo diccionario de posiciones. Es decir:

79
▪ En este caso, se tiene el mensaje “HOLA”, su equivalente en
números sería “7 14 11 0”.
▪ Se comprueba si la H está conectada:

• Si lo está se intercambia la H por la letra con la que


está conectada, por ejemplo, la D (3) y se busca en el
archivo de configuración de rotores lo siguiente:

B123|0|0|1|3,

• Si no lo está se busca directamente en el archivo de


configuración de rotores:

B123|0|0|1|7,

▪ Se hace lo mismo para cada letra del texto.


▪ Obtener el Índice de Coincidencia.

o Comprobar los resultados con mayor Índice de Coincidencia de los


grupos de búsqueda definidos.
o Se recogen las conexiones más repetidas y se descifra el mensaje.
o Si estamos ante la configuración correcta de rotores, se obtendrá
un IoC significativamente mayor al resto de configuraciones, y
además se obtienen algunas posibles conexiones correctas del
tablero de conexiones. Si no estamos ante la configuración
correcta se pasa a la siguiente configuración de rotores y se realiza
todo el proceso.
o Finalmente, se buscan el resto de las conexiones comprobando
con cuales de ellas el IoC es mayor que el obtenido anteriormente
utilizando las letras que no están ya conectadas.
o Se mete el mensaje con la clave total obtenida y se comprueba que
se obtiene un mensaje en claro. Puede haber ligeras desviaciones
por alguna conexión errónea del tablero de conexiones. Este paso
ya se requiere el factor humano y el conocimiento del idioma que
este posea.

A modo de conclusión, se ha desarrollado un programa capaz de conseguir


determinar la clave de un mensaje cifrado por esta máquina en un tiempo
bastante asequible gracias a tener todas las configuraciones posibles
predefinidas anteriormente.
El último paso expuesto tiene un potencial increíble, en casos de uso realizados
ha sido capaz de alcanzas la cifra, aproximadamente, de unos 50 millones de
iteraciones de la máquina Enigma por segundo.

80
3 Resultados y conclusiones

3.1 Resultados obtenidos a cifrados de la máquina


Enigma
Se han ejecutado diversas pruebas de todos los programas desarrollados, sin
embargo, en este apartado se busca mostrar algún ejemplo del software para el
ataque a cifrados de la máquina Enigma en situaciones de “CipherText-Only”.
En esta situación solo tenemos un texto cifrado. Tras tratar de descifrarlo con
una configuración cualquiera se obtuvo un índice de coincidencia de 0.042, por
lo que se establecerá como condición de parada, aquellos textos que al ser
descifrados den un Índice de Coincidencia de 0.044.

Figura 63. Captura de software desarrollado. Elaboración propia.

Como se puede observar en la imagen, se ha introducido en la variable “text” el


texto cifrado y en la variable “IoC_stop el Índice de Coincidencia que se quiere
como parada.
Tras ejecutarse el programa, se obtiene lo siguiente:

Figura 64. Captura de software desarrollado, se muestra el tiempo de


ordenación para la configuración de rotores y la primera configuración a
analizar. Elaboración propia.

Figura 65. Captura de software desarrollado, resultado de ejecución.


Elaboración propia.

81
Lo cual es la configuración correcta ya que ofrece un Índice de Coincidencia
elevado y se puede comprobar que el texto que devuelve es muy parecido a algo
con sentido. Como conclusión se puede extraer que la configuración es
prácticamente correcta en su totalidad, a excepción de alguna conexión del
tablero de conexiones. Solo faltaría aplicar el factor humano.
El tiempo de ejecución total ha sido de 1007 segundos.

3.2 Conclusiones
En conclusión, se puede afirmar que la máquina Enigma fue una revolución en
el mundo de la criptografía tanto por su forma de cifrar mensajes como por el
criptoanálisis que se hizo y que se sigue haciendo de sus cifrados.
Además, ha sido tan relevante en la historia que ha influido bastante en el
progreso de varias y distintas ciencias, llegando a ser una de las causas por las
que hoy existen ordenadores en prácticamente todos los hogares, impulsando
las matemáticas aplicadas en especial a la estadística y probabilidad y, sobre
todo, revolucionando el mundo de la criptografía.
Por otra parte, hay que destacar, que este ha sido un trabajo que recoge
aspectos muy variados sobre la máquina Enigma, no centrándose únicamente
en su criptoanálisis, sino que se aborda también el funcionamiento de la
máquina, sus componentes, algo de su historia e influencia.
Para finalizar, destacar que el objetivo principal de este trabajo se puede resumir
en dos factores principales:

1) Ofrecer un punto de vista didáctico al lector.


Se ha tratado en todo momento de explicar al lector toda la materia del
trabajo, como si no se tuviera ninguna noción de los temas que se
abordan. Utilizando varios ejemplos, y siendo estos, lo más visuales
posibles.

2) Realizar aportaciones reales al mundo de la criptografía.


Por otra parte, se ha buscado proponer un nuevo enfoque al
criptoanálisis de la máquina Enigma, pero que a su vez pueda servir de
base para el ataque a otros cifrados.

82
4 Análisis de impacto

4.1 Impacto en criptografía


En cuanto al impacto de este trabajo al mundo de la criptografía, se puede
destacar, como se ha mencionado anteriormente, el nuevo enfoque de los
ataques a los cifrados de la máquina Enigma por fuerza bruta. Esto ha sido
posible gracias a los numerosos avances tecnológicos de los últimos años, los
cuales permiten manipular una gran cantidad de datos en muy poco tiempo.
Basándose en este factor, se ha demostrado que incluso una tarea con
tantísimas combinaciones de clave posibles como es el cifrado de la máquina
Enigma se convierte en una tarea considerablemente más asequible si se aplica
este nuevo enfoque.
Probablemente, este método de ataque a los cifrados de la máquina Enigma
pueda sentar una base para el criptoanálisis de otros cifrados más modernos y
que se utilizan hoy en día.
Por último, se quiere destacar que este trabajo se ha realizado con el fin de
transmitir unos conocimientos que puedan servir a cualquier persona del
mundo de la criptografía, por lo que el impacto que tiene en esta materia se
puede definir como un aporte para todo aquel que utilice este trabajo como base
para cualquier investigación.

4.2 Impacto en informática


Además del impacto en la criptografía que obviamente puede llegar a tener este
trabajo, tiene un impacto relevante en la informática, pues son dos ciencias que
van muy ligadas en la actualidad. Esto se debe al inevitable aumento en la
complejidad de los sistemas de cifrado y la necesidad del empleo de ordenadores
para la criptografía.
Por esto, en este trabajo se han desarrollado programas en el lenguaje Python,
además de aplicar otros conocimientos relacionados con la Ingeniería
Informática.
Como aportación del trabajo a esta ciencia se puede destacar la manipulación
de grandes cantidades de datos como elemento de criptoanálisis, probablemente
ligando o introduciendo de forma indirecta el “Big Data” como aliado a este,
derivando de esta forma, muy probablemente, en la investigación y desarrollo
en una ciencia que ya de por sí está muy de moda y que pretende ser una de
las más importantes en el futuro.

83
5 Bibliografía

1. "Arthur Scherbius, Segunda Guerra Mundial". Segunda Guerra


Mundial. https://segundaguerramundial.es/personajes/arthur-
scherbius/.

2. "Criptología: técnicas antiguas y modernas de cifrado de mensajes".


okdiario.com. https://okdiario.com/ciencia/criptologia-tecnicas-
antiguas-modernas-cifrado-mensajes-8482577.

3. "Captcha".
Captcha. https://www.cryptomuseum.com/crypto/enigma/hist.htm.

4. "MARIAN REJEWSKI, EL DESCIFRADOR DE ENIGMA". AMANTES DE


LA HISTORIA. http://amantesdelahistoria-
aliado.blogspot.com/2020/09/marian-rejewski-el-descifrador-de-
enigma.html.

5. Colaboradores de los proyectos Wikimedia. "Enigma (máquina) -


Wikipedia, la enciclopedia libre". Wikipedia, la enciclopedia
libre. https://es.wikipedia.org/wiki/Enigma_(máquina).

6. Tok.wiki. "Ultra ContenidoyFuentes de inteligencia". leer wikipedia con


nuevo diseño. https://hmong.es/wiki/Ultra (accedido el 23 de abril de
2023).

7. Colaboradores de los proyectos Wikimedia. "Batalla del Atlántico -


Wikipedia, la enciclopedia libre". Wikipedia, la enciclopedia
libre. https://es.wikipedia.org/wiki/Batalla_del_Atlántico.

8. "RedIRIS - Criptología". RedIRIS - Welcome to


RedIRIS. https://www.rediris.es/cert/doc/unixsec/node29.html (acced
ido el 14 de mayo de 2023).

9. "MOOC Crypt4you UPM". Criptored - Protección de la información y


ciberseguridad. https://criptored.es/crypt4you/temas/criptografiaclasi
ca/leccion6.html#apartado3-1 (accedido el 14 de mayo de 2023).

10. "Cómo un cifrado del siglo XVII se convirtió en la base de un cifrado


irrompible del siglo XX". Soluciones de ciberseguridad de Kaspersky para
hogares y empresas |
Kaspersky. https://www.kaspersky.es/blog/vigenere-cipher-
history/6804/ (accedido el 14 de mayo de 2023).

11. Xeternum. Criptografía - Cifrado de Playfair explicado en un minuto. (18


de agosto de 2019). Accedido el 14 de mayo de 2023. [Video en línea].
Disponible: https://www.youtube.com/watch?v=9O3poI53p7k

84
12. "Maquina Enigma Alemana". Tecnologia Fácil: Electricidad, Electrónica,
Informática, etc. https://www.areatecnologia.com/maquina-enigma-
alemana.htm#:~:text=Enigma%20fue%20la%20máquina%20criptográfic
a,intentar%20descifrarla,%20así%20lo%20atestigua. (accedido el 14 de
mayo de 2023).

13. "La Máquina "Enigma"". https://www.u-


historia.com/uhistoria/tecnico/articulos/enigma/enigma.htm (accedid
o el 14 de mayo de 2023).

14. "Enigma Message Procedures". CIPHER MACHINES AND


CRYPTOLOGY. https://www.ciphermachinesandcryptology.com/en/eni
gmaproc.htm (accedido el 15 de mayo de 2023).

15. "Los fallos humanos que derrotaron a Enigma | OpenMind".


OpenMind. https://www.bbvaopenmind.com/tecnologia/innovacion/lo
s-fallos-humanos-que-derrotaron-a-enigma/ (accedido el 16 de mayo de
2023).

16. "Itchen Valley Amateur Radio Club". Itchen Valley Amateur Radio
Club. https://www.ivarc.org.uk/ (accedido el 31 de mayo de
2023).Enigma D. (s.f.).

17. CryptoMuseum. https://www.cryptomuseum.com/crypto/enigma/d/

18. Enigma M1, M2, M3. (s.f.).


CryptoMuseum. https://www.cryptomuseum.com/crypto/enigma/m3/
index.htm

19. Enigma M4. (s.f.).


CryptoMuseum. https://www.cryptomuseum.com/crypto/enigma/m4/
index.htm

20. Enigma/Sample Messages - Franklin Heath Ltd Wiki. (s.f.). Franklin


Heath Ltd
Wiki. http://wiki.franklinheath.co.uk/index.php/Enigma/Sample_Mes
sages

21. MARIAN REJEWSKI | EL CODIGO ENIGMA | DESCIFRAR LAS


COMUNICACIONES NAZIS. (s.f.). ARTISTAS O
GUERREROS. https://artistasoguerreros.blogspot.com/2019/08/mari
an-rejewski-1905-1980-el-codigo.html

22. Singh, S. (2000). The Code Book. Fourth Estate.

23. Alan Turing, el arma secreta de los aliados. (s.f.).


historia.nationalgeographic.com.es. https://historia.nationalgeographic
.com.es/a/alan-turing-arma-secreta-aliados_16352

24. DESCIFRANDO ENIGMA : POR QUÉ ALEMANIA PERDIÓ LA SEGUNDA


GUERRA MUNDIAL. (s.f.).
InfoActualidad. https://infoactualidad.ucm.es/index.php/ser-
complutenses/2-uncategorised/638-descifrando-enigma-por-que-
alemania-perdio-la-segunda-guerra-mundial
85
25. From Bombe 'stops' to Enigma keys A remarkably ... - Bletchley Park. (s.f.).
yumpu.com. https://www.yumpu.com/en/document/read/11424587/
from-bombe-stops-to-enigma-keys-a-remarkably-bletchley-park

26. Índice de Coincidencia – IC – Numerentur.org. (s.f.).


Numerentur.org. https://numerentur.org/indice-de-coincidencia-ic/

27. La Informática. (s.f.).


Inicio. https://www.informatica.us.es/index.php/conoce-tu-futura-
escuela/la-informatica

28. Frequency Analysis Tool - Online Letter Ngram Counter/Analyzer. (s.f.).


dCode - Solveurs, Crypto, Maths, Codes, Calculs en
Ligne. https://www.dcode.fr/frequency-analysis

29. Computerphile. (2021, 12 de abril). Cracking Enigma in 2021 -


Computerphile [Video].
YouTube. https://www.youtube.com/watch?v=RzWB5jL5RX0

30. Google-Ergebnis für https://www.thecrazyprogrammer.com/wp-


content/uploads/2023/01/Alan-Turing.jpeg?ezimgfmt=ng:webp/ngcb1.
Accedido el 31 de mayo de 2023. [Imagen].
Disponible: https://images.app.goo.gl/akN9SSf2RqCcfqiP6

31. Accedido el 31 de mayo de 2023. [Imagen].


Disponible: https://images.app.goo.gl/Myqp1Uyw9RKvKQko7

32. Google-Ergebnis für


https://static.abc.es/media/cultura/2020/06/03/enigma-k0v--
1200x630@abc.jpg. Accedido el 31 de mayo de 2023. [Imagen].
Disponible: https://images.app.goo.gl/ZLsSBMownt2wtine7

33. Accedido el 31 de mayo de 2023. [Imagen].


Disponible: https://images.app.goo.gl/P7Pns5SayoNHKgrP9

34. Accedido el 31 de mayo de 2023. [Imagen].


Disponible: https://images.app.goo.gl/fKivcFY6beAC9YE57

35. Aviso de redirección. Accedido el 31 de mayo de 2023. [Imagen].


Disponible: https://images.app.goo.gl/YwuVm5EkmiCDbADi6

36. Google-Ergebnis für https://lainakai.com/wp-


content/uploads/2021/04/image1-1024x683.jpg. Accedido el 31 de
mayo de 2023. [Imagen].
Disponible: https://images.app.goo.gl/z5Qo1FUJDp2ZijKf9

37. Accedido el 31 de mayo de 2023. [Imagen].


Disponible: https://images.app.goo.gl/nwNdtsCQjXVRCQY98

38. Accedido el 31 de mayo de 2023. [Imagen].


Disponible: https://images.app.goo.gl/NWVZLjQDgkSYonTX7

39. Accedido el 31 de mayo de 2023. [Imagen].


Disponible: https://images.app.goo.gl/7b35hd48E9JZV7XPA
86
40. One moment, please... Accedido el 31 de mayo de 2023. [Imagen].
Disponible: https://www.cryptomuseum.com/crypto/enigma/d/img/A
320_open_large.jpg

41. Accedido el 31 de mayo de 2023. [Imagen].


Disponible: https://www.cryptomuseum.com/crypto/enigma/m3/img/
m1_m897_000_large.jpg

42. Accedido el 31 de mayo de 2023. [Imagen].


Disponible: https://www.cryptomuseum.com/crypto/enigma/m4/img/
300012/087/full.jpg

43. "Index of Coincidence Calculator - Online IoC Cryptanalysis". dCode -


Solveurs, Crypto, Maths, Codes, Calculs en
Ligne. https://www.dcode.fr/index-coincidence (accedido el 31 de mayo
de 2023).

44. I. Reolid Torres, "Paralelizando la máquina Enigma", Universidad


Politécnica de Cataluña, 2022.

45. Coding Cassowary. Coding the Enigma machine. (26 de marzo de 2022).
Accedido el 31 de mayo de 2023. [Video en línea].
Disponible: https://www.youtube.com/watch?v=sbm2dmkmqgQ

87
Este documento esta firmado por
Firmante CN=tfgm.fi.upm.es, OU=CCFI, O=ETS Ingenieros Informaticos -
UPM, C=ES
Fecha/Hora Wed May 31 23:14:19 CEST 2023
Emisor del EMAILADDRESS=camanager@etsiinf.upm.es, CN=CA ETS Ingenieros
Certificado Informaticos, O=ETS Ingenieros Informaticos - UPM, C=ES
Numero de Serie 561
Metodo urn:adobe.com:Adobe.PPKLite:adbe.pkcs7.sha1 (Adobe
Signature)

También podría gustarte