Documentos de Académico
Documentos de Profesional
Documentos de Cultura
de Madrid
Escuela Técnica Superior de
Ingenieros Informáticos
Memoria de Seguimiento
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.
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.
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
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]
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]
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.
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.
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:
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
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.
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]
7
Figura 5. Tabla Cifrado Vigenère. [10]
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
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:
Cifrado Playfair
LA CLAVE KO
KO CLAVE LA
9
Nomenclators
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…
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]
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.
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.
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]
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]
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.
14
Figura 13. Panel de luces de la máquina Enigma. [37]
2.3.2 Funcionamiento
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:
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
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
Figura 16. Máquina Enigma con ring settings 01 01 02. Elaboración Propia.
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
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:
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.
19
Figura 17. Máquina Enigma con la clave anterior. Elaboración propia.
20
Figura 19. Representación de los rotores. Elaboración propia.
21
Figura 21. Representación del tablero de conexiones. Elaboración propia
22
Obteniéndose así el siguiente estado inicial de la máquina:
23
3. Tablero de conexiones
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.
24
Figura 25. Recorrido de la corriente eléctrica. Elaboración propia.
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:
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.
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.
8. Panel de luces
27
En el ejemplo de las imágenes:
28
01 01 01 01 01 02
01 01 01 01 01 02
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.
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]
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:
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.
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
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.
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.
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
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
2x1/2
Tablero de conexiones
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.
Máquina Enigma
37
2.3.4 Variantes destacadas
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]
39
2.3.5 Ejemplos de cifrados reales
• 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:
Segunda parte:
40
La clave de cifrado fue:
• 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
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
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.
43
1) Primera iteración: letra H.
Resultado: S
Resultado: C
44
3) Segunda iteración: letra L.
Resultado: X
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.
Resultado: P
46
2) Resultado de realizar todas las iteraciones
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.
47
1) Primera iteración: letra P.
Resultado: B
Figura 43. Cifrado del texto “PWMXH YWCOJ XTRTE OKKUC F”. Elaboración
propia.
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.
49
Figura 44. Recorrido de la señal eléctrica para cifrar una letra.
Elaboración propia.
50
Se sabe con certeza que el mensaje en claro y su texto cifrado
correspondiente son los siguientes:
H -> B (salida de los rotores, antes de pasar por segunda vez por el
tablero de conexiones)
H -> S
L -> P (salida de los rotores, antes de pasar por segunda vez por el
tablero de conexiones)
O -> W
L -> T (salida de los rotores, antes de pasar por segunda vez por el
tablero de conexiones)
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.
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:
52
WOMWOM Clave: TFD TTPHCT
Figura 46. Cifrado de la clave WOM repetida dos veces. Elaboración propia.
CUADRO TTZZNR
Clave: WOM
TTPHC TTTZZ NR
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
• 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
• 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
• 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.
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
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:
HOLA
AOKJUYHGBVFDT
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.
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.
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.
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:
60
Se realiza la primera iteración:
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:
62
Obtendríamos la siguiente configuración:
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.
63
Se actualiza la configuración del tablero de conexiones:
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:
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:
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.
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.
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.
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.
𝐹𝑖 𝑥 (𝐹𝑖 − 1)
𝑁 𝑥 (𝑁 − 1)
𝑛 𝐹𝑖 𝑥 (𝐹𝑖 − 1)
𝐼𝑜𝐶 = ∑
𝑖=1 𝑁 𝑥 (𝑁 − 1)
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]
71
2) Análisis de frecuencias
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.
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:
74
Si se pulsa la tecla B va a suceder lo siguiente:
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.
{
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.
0,0 2 1 3 5 7
1,0 2 1 3 5 8
Figura 61. Formato de en archivo csv. Elaboración propia.
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.
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.
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:
B123|0|0|1|3,
B123|0|0|1|7,
80
3 Resultados y conclusiones
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:
82
4 Análisis de impacto
83
5 Bibliografía
3. "Captcha".
Captcha. https://www.cryptomuseum.com/crypto/enigma/hist.htm.
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).
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.).
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)