Diseño de un sistema criptográfico a partir de la máquina ENIGMA

Anuncio
Diseño de un sistema criptográfico
a partir de la máquina ENIGMA
Jonathan Ortigosa Hernández
10.01.2007
Trabajo optativo sobre Criptografía
Índice
Índice ............................................................................................................................ 2
LA MÁQUINA ENIGMA ............................................................................................ 5
Historia de la máquina Enigma................................................................................ 6
Descripción de la máquina Enigma......................................................................... 7
Rotores .................................................................................................................... 8
Rueda de entrada................................................................................................. 12
Reflector ................................................................................................................ 12
Panel de conexiones ............................................................................................ 12
Accesorios ............................................................................................................. 13
Descripción matemática ..................................................................................... 13
DISEÑO DE UN SISTEMA CRIPTOGRÁFICO .................................................. 14
Motivación del diseño .............................................................................................. 14
Diseño del Reflector ................................................................................................ 16
Diseño de los rotores .............................................................................................. 17
Rotores diseñados para el sistema criptográfico............................. 20
Diseño del panel de conexiones............................................................................. 26
Sistema criptográfico en pseudocódigo ............................................................... 27
Paquete con las definiciones de variables y funciones necesarias ............. 27
Programa Principal del sistema Criptográfico................................................ 31
Ejemplo del funcionamiento del sistema.............................................................. 32
Encriptando un texto en plano........................................................................... 32
Desencriptando un texto codificado ................................................................. 33
Análisis matemático del criptosistema planteado .............................................. 34
CLAVES DE LOS ROTORES ................................................................................... 34
CLAVES DEL PANEL DE CONEXIONES ................................................................. 34
NÚMERO TOTAL DE CLAVES................................................................................. 35
DEDICACIÓN INVERTIDA EN EL TRABAJO .................................................. 36
CONCLUSIONES........................................................................................................ 37
BIBLIOGRAFÍA......................................................................................................... 38
Página 2 de 38
Trabajo optativo sobre Criptografía
La introducción de la máquina Enigma supuso un gran avance,
especialmente necesario para la nueva concepción de guerra relámpago introducida
por Alemania. Al contrario que en la primera guerra mundial, la movilidad de las
unidades era la clave de la Blitzkrieg, y esa movilidad necesitaba un sistema seguro
de radiar las órdenes, sobretodo para los submarinos, que debido a su escaso
número, debían utilizarse al máximo tanto en rentabilidad como en capacidad
operativa. En ese caso, además, no existía otro método de comunicación. Además
Enigma, amen de la seguridad, introducía un nuevo concepto más, el de la facilidad
de
manejo
y
transporte
en
relación
a
sistemas
anteriores.
Se desarrollaron diferentes códigos para las diferentes necesidades. Unos
ejemplos de ellos en la marina pueden ser el código Hydra, para los barcos del mar
Baltico; Thetis, para los submarinos no operacionales en el mar del norte; Tibet
para los barcos de reabastecimiento; Hermes, para las unidades del mediterráneo,
o el famoso Triton, conocido por los aliados como Shark y que fue uno de sus
peores dolores de cabeza, al introducirse en febrero de 1942 un rotor más a la
máquina.
La poca prudencia del personal encargado de manejar dicha máquina
propició que los códigos de la Wehrmacht y la Luftwaffe fueran desencriptados por
los aliados. Ejemplos flagrantes de ello podrían ser el envío del mismo mensaje,
plano primero y cifrado acto seguido, para regodeo de los científicos de Bletchley
Park. Los aliados también desarrollaron sus propios sistemas para conseguir la
información que necesitaban. Una vez rotos los códigos de la Luftwaffe, principal
encargada de las transmisiones metereológicas, no costaba demasiado reconstruir
Página 3 de 38
Trabajo optativo sobre Criptografía
sus variaciones en base a informes enviados por estos y conocidos por todos, como
podía ser en un momento dado las condiciones climatológicas en el mar concreto.
Esto se aplico directamente sobre el código de los buques destinados a ese fin.
Cuanto mayor era el tráfico de mensajes, mayor la probabilidad de encontrar el
código. Uno de los nunca hallados fue la clave especial 100, para los barcos
corsarios, precisamente por el mínimo uso que hicieron de ella.
Pero la principal fuente de información para la rotura de códigos siempre
fue su captura. Para ello se organizaron operaciones especiales contra los barcos
espías alemanes o contra los encargados de retransmitir las condiciones climáticas
en las diferentes zonas. La captura de varios de ellos, como el Krebs o el Munchen,
demostraría a los aliados la necesidad de entrenar personal muy especializado para
este tipo de operaciones. El U-33, hundido en el estuario del Clyde, permitió
recuperar los primeros rotores de la maquina, pero los submarinos eran por
naturaleza muy difícilmente apresables.
El punto de inflexión en los acontecimientos fue la captura del U-110, el 9
de mayo de 1941 y, sobre todo, la capacidad e ingenio por parte de los ingleses de
mantener esa captura en secreto, incluso para sus propios tripulantes. La falta de
cumplimiento de las ordenes dadas por Lemp de abrir las ventilaciones, después de
ser su submarino gravemente dañado por el ataque de la corbeta Aubretia y los
destructores Bulldog y Broadway, propicio la captura de la máquina enigma y el
código vigente, conocido con el nombre de Ultra. Esto supuso un giro de 180
grados en la lucha antisubmarina realizada por los aliados a partir de esa fecha.
El centro neurálgico, que propicio los primeros ordenadores programables
de la historia, fue Bletchley Park. Allí se reunieron los mejores científicos y
criptoanalistas, junto con todo el personal necesario capaz de manipular la enorme
cantidad de datos, que se recopilaban de una forma absolutamente manual,
procedentes de los diferentes campos de antenas receptoras instalados en territorio
aliado, principalmente Inglaterra. Allí las bombas, nuevos ordenadores
completamente mecánicos, procesaban esos datos a velocidades que hoy nos
parecerían irrisorias, pero que en su momento fueron responsables de la rotura de
códigos para la batalla del atlántico. Palabras como ‘beso’ (coincidencia de dos
criptogramas diferentes), ‘criba’ (cualquier dato que proporcione pistas,
generalmente tabla de cifras capturadas o texto plano) ‘desmontar’ (eliminar un
primer estrato de cifra en un criptograma supercifrado, es decir, doblemente
cifrado), ‘susurros’ (sonido emitido por una estación transmisora inmediatamente
antes de empezar la transmisión cifrada) etc. corrieron de boca en boca entre los
hombres que consiguieron algo que los alemanes creyeron imposible. Es indudable
que en el viejo caserón victoriano rodeado de barracones se gano un tercio de la
Segunda Guerra Mundial.
Página 4 de 38
Trabajo optativo sobre Criptografía
LA MÁQUINA ENIGMA
Fig. 1 MÁQUINA ENIGMA M
Página 5 de 38
Trabajo optativo sobre Criptografía
Historia de la máquina Enigma
La primera patente de la máquina data de 1919, y es obra del holandés
Alexander Koch, que comparte honores con el alemán Arthur Scherbius quien
desarrolló varias versiones de la máquina Enigma y asociado con otro ingeniero,
Richard Ritter, el cual fundó la empresa Chiffriermaschinen Aktien Gesellschaft en
Berlín, para su producción. La primera versión comercial, conocida con el nombre
de Enigma-A, fue puesta a la venta en 1923, siendo su finalidad inicial facilitar la
comunicación de documentos entre comerciantes y hombres de negocios de forma
secreta. A esta primera versión le siguieron tres modelos comerciales,
convirtiéndose el modelo denominado Enigma-D en el más importante, y el que
tuvo verdadero éxito, tras su adquisición por parte de la marina alemana en 1926.
El ejército alemán comenzó a utilizar el diseño básico de la máquina en 1929, cuyo
uso pasó prácticamente a la totalidad de las organizaciones militares alemanas y la
jerarquía Nazi. En la marina alemana fue conocida con el nombre de máquina "M".
Versiones de la máquina Enigma fueron utilizadas por Alemania, y otras
potencias del Eje, en prácticamente todas las comunicaciones vía radio y telégrafo.
Incluso la información relativa a las previsiones meteorológicas era cifrada con la
máquina Enigma. Una versión comercial sin modificaciones de la máquina se utilizó
para cifrar las comunicaciones militares de los españoles durante la Guerra Civil
Española y los italianos durante la Segunda Guerra Mundial. Las codificaciones de
las versiones comerciales de la máquina fueron descifradas por criptoanalistas
británicos
El hecho de que el cifrado de Enigma había sido roto durante la guerra
permaneció en secreto hasta finales de los años '60. Tras el fin de la guerra, los
británicos y estadounidenses vendieron las máquinas Enigma sobrantes a muchos
países alrededor del mundo, que se mantuvieron en la creencia de la seguridad de
ésta. Su información no era tan segura como ellos pensaban, que por supuesto, fue
la razón para que británicos y norteamericanos pusieran a su disposición las
máquinas.
En 1967, David Kahn publicó su libro The Codebreakers, que describe la
captura de la máquina Enigma Naval del U-505 en 1945. Comentó que en aquel
momento ya se podían leer los mensajes, necesitando para ello máquinas que
llenaban varios edificios. Hacia 1970 los nuevos cifrados basados en ordenadores se
comenzaron a hacer populares a la vez que el mundo migraba a comunicaciones
computarizadas, y la utilidad de Enigma (y de las máquinas de cifrado rotatorio en
general), rápidamente decrecían. Se decidió en ese momento "dejar salir al gato de
la bolsa", y comenzaron a aparecer informes oficiales sobre las operaciones de
Bletchley Park en 1974.
Página 6 de 38
Trabajo optativo sobre Criptografía
Descripción de la máquina Enigma
Fig. 2 Diagrama de cableado de enigma. Se muestra el flujo de corriente eléctrica que resulta al
presionar la letra A. La A será codificada por D, pero nunca podrá codificarse la A por sí misma.
Al igual que el resto de máquinas criptográficas basadas en rotores, la
máquina de Enigma es una combinación de sistemas mecánicos y eléctricos. El
sistema mecánico consiste en un teclado; un juego de discos rotativos llamados
rotores, los cuales están colocados a lo largo de un huso; y un mecanismo que hace
girar uno o varios rotores cuando una tecla es pulsada. El continuo movimiento de
los rotores provoca que la clave con la que se codifica el mensaje varíe cada vez
que se pulsa una tecla.
El sistema mecánico varía de tal modo que en cada variación se forma un
circuito eléctrico diferente. Dicho circuito es el encargado de encriptar el mensaje,
por tanto, la encriptación se realiza eléctricamente. Cuando se presiona una tecla,
el circuito se cierra, el flujo de corriente atraviesa varios componentes para
encender en última instancia una bombilla, la cual indica la letra de salida. Por
ejemplo, si quisiésemos cifrar un mensaje que comienza ANX…, deberíamos pulsar
primero la tecla A, lo que nos llevaría a que se encendiese la bombilla Z. Z sería la
primera letra del mensaje encriptado. Tras ello, nos dispondríamos a pulsar la
segunda tecla, y así sucesivamente hasta terminar el mensaje.
Página 7 de 38
Trabajo optativo sobre Criptografía
Para explicar la máquina Enigma, usaremos el diagrama de la figura 2.
Para simplificar el ejemplo, sólo muestran cuatro componentes de cada uno. En
realidad, hay 26 bombillas, teclas, enchufes y cortocircuitos dentro de los rotores.
La corriente fluye desde la batería (1) pasando por el interruptor bidireccional
(2) de la letra pulsada al enchufe (3). El enchufe permite realizar una nueva
conexión entre el teclado (2) y la rueda de entrada fija (4). Después, la
corriente fluye a través de los cortocircuitos de los tres (Wehrmacht Enigma) o
cuatro (Kriegsmarine M4) rotores (5) y entra en el reflector (6). El reflector
devuelve la corriente a los rotores (5) y rueda de entrada (4), por un camino
diferente. Debido a que el enchufe S está conectado por las clavijas (8) al enchufe
D, la corriente atraviesa dicho enchufe en dirección al interruptor bidireccional
(9) iluminando la bombilla D.
Debido al continuo cambio de los circuitos eléctricos cada vez que se pulsa
una tecla hace de Enigma una máquina de cifrado polialfabeto, lo que le proporció
su alta seguridad
Rotores
Estructura interna de un rotor
Tres rotores en secuencia
1.
2.
Anillo de marcas
Punto que marca la
letra A
3. Anillo del alfabeto
4. Contactos entre
anillos
5. Cortocircuitos
6. Pines
7. Anillo de ajuste
8. Rueda de giro
manual
9. Engranaje
10. Engranaje
Fig. 3 Estructura interna del rotor
El núcleo principal de la máquina Enigma son los rotores, de unos 10
centímetros de diámetro cada uno. Los rotores están hechos de caucho o de
baquelita. En una cara tienen una serie de pines de cobre (fig. 5) y en la otra una
serie de contactos circulares eléctricos (fig. 4). Los pines y contactos representan el
alfabeto. Cuando dos rotores son colocados secuencialmente, los pines de uno y los
contactos del otro hacen contacto formando un circuito eléctrico. En el interior del
rotor, un juego de 26 cables une cada pin con un contacto siguiendo un modelo
complejo. El alambrado de cables se diferencia para cada rotor.
Página 8 de 38
Trabajo optativo sobre Criptografía
Fig. 4 y 5 (respectivamente). Vistas de las dos caras de un rotor
Por sí mismo, cada rotor realiza un tipo muy simple de cifrado: sustitución
simple. Por ejemplo, el pin correspondiente a la letra E podría ser conectado al
contacto de la letra T. La complejidad de la máquina se basa en el empleo de varios
rotores en serie - tres o cuatro - y el movimiento regular de los rotores; lo que
proporciona un cifrado más seguro.
Cuando un rotor se introduce en la máquina puede ser colocado en
cualquiera de sus 26 posibles posiciones. Cuando el compartimento de los rotores
está cerrado, éstos pueden ser girados desde el exterior mediante una rueda que
sobresale del compartimento (Fig. 3 nº8). La posición puede verse a través de una
ventanilla que muestra una posición del anillo de marcas (Fig. 3 nº1) por cada
rotor. De este modo el operador puede conocer cual es la posición de los rotores en
un momento dado, además de poder cambiar dicha posición. La posición se indica
mediante una letra de la A a la Z por cada rotor – 26 posiciones –.
Cuando salió la primera máquina Enigma sólo existían tres rotores para las
versiones de la máquina Enigma de la Armada y de la Fuerza Aérea. El 15 de
diciembre de 1938 pasaron a cinco rotores, de los cuales sólo tres se introducían en
la máquina. Dichos rotores fueron denominados con números romanos: I, II, III, IV
y V. Esto fue tomado como medida de seguridad por los alemanes.
La Wehrmacht, versión Naval del Enigma, siempre tuvo más rotores que
las versiones de las demás fuerzas militares, en un principio seis, llegando hasta
tener ocho. Los rotores adicionales llamados VI, VII y VIII tenían alambrados
diferentes y diversos pasos a la hora de girar.
El Enigma Naval (M4) consiguió acomodar cuatro rotores en el espacio
donde las otras versiones introducían únicamente tres rotores. Esto se debe a que
se sustituyó el reflector original por uno más fino. El cuarto rotor podía ser de dos
tipos, Beta o Gama, y no giraba al teclear, únicamente podía ser colocado en una
de sus 26 posiciones.
Página 9 de 38
Trabajo optativo sobre Criptografía
Diversos rotores utilizados en la segunda guerra mundial
Rotor #
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Fecha
Modelo Enigma
IC
[]
1924
Commercial
Enigma A, B
IIC
[]
1924
Commercial
Enigma A, B
IIIC
[]
1924
Commercial
Enigma A, B
Rotor #
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Fecha
Modelo Enigma
I
JGDQOXUSCAMIFRVTPNEWKBLZYH
07.02.1941 German Railway
II
NTZPSFBOKMWRCJDIVLAEYUXHGQ
07.02.1941 German Railway
III
JVIUBHTCDYAKEQZPOSGXNRMWFL
07.02.1941 German Railway
UKW
QYHOGNECVPUZTFDJAXWMKISRBL
07.02.1941 German Railway
ETW
QWERTZUIOASDFGHJKPYXCVBNML
07.02.1941 German Railway
Rotor #
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Fecha
Modelo Enigma
I-K
PEZUOHXSCVFMTBGLRINQJWAYDK
FEB-1939
Swiss K
II-K
ZOUESYDKFWPCIQXHMVBLGNJRAT
FEB-1939
Swiss K
III-K
EHRVXGAOBQUSIMZFLYNWKTPDJC
FEB-1939
Swiss K
UKW-K
IMETCGFRAYSQBZXWLHKDVUPOJN
FEB-1939
Swiss K
ETW-K
QWERTZUIOASDFGHJKPYXCVBNML
FEB-1939
Swiss K
Rotor #
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Fecha
Modelo Enigma
I
EKMFLGDQVZNTOWYHXUSPAIBRCJ
1930
Enigma I
II
AJDKSIRUXBLHWTMCQGZNPYFVOE
1930
Enigma I
III
BDFHJLCPRTXVZNYEIWGAKMUSQO
1930
Enigma I
IV
ESOVPZJAYQUIRHXLNFTGKDCMWB
DEC-1938
M3 Army
V
VZBRGITYUPSDNHLXAWMJQOFECK
DEC-1938
M3 Army
VI
JPGVOUMFYQBENHZRDKASXLICTW
1939
M3 & M4 Naval
(FEB 1942)
VII
NZJHGRCXMYSWBOUFAIVLPEKQDT
1939
M3 & M4 Naval
VIII
FKQHTLXOCBJSPDZRAMEWNIUYGV
1939
M3 & M4 Naval
Rotor #
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Fecha
Modelo Enigma
Beta
LEYJVCNIXWPBQMDRTAKZGFUHOS
Spring
1941
M4 R2
Gamma
FSOKANUERHMBTIYCWLQPZXVGJD
Spring
1942
M4 R2
Reflector
A
EJMZALYXVBWFCRQUONTSPIKHGD
Reflector
B
YRUHQSLDPXNGOKMIEBFZCWVJAT
Reflector
C
FVPJIAOYEDRZXWGCTKUQSBNMHL
Reflector
B Thin
ENKQAUYWJICOPBLMDXZVFTHRGS
1940
M4 R1 (M3 + Thin)
Reflector
C Thin
RDOBJNTKVEHMLFCWZAXGYIPSUQ
1940
M4 R1 (M3 + Thin)
Fig. 6 Rotores más utilizados en la segunda guerra mundial, mostrando por cada uno su nombre,
sus conexiones, su fecha de creación y el modelo en el que se instaló.
Página 10 de 38
Trabajo optativo sobre Criptografía
Movimiento de los rotores
Los rotores giran cada vez que se pulsa una tecla, evitando así, el
encriptamiento por sustitución simple. Esto produce una transformación
criptográfica diferente para cada posición, haciendo que la máquina Enigma sea de
sustitución polialfabética.
Dado que el anillo con marcas contiene todas las letras del alfabeto, y que
de éstas, una y solo una, por rotor puede verse por la ventanilla asociada a cada
uno, dicho avance puede verse como el cambio de letra para un rotor. Cada vez
que se pulsa una tecla el rotor situido de más a la derecha avanza una posición.
Cuando el susodicho rotor de una vuelta completa, el rotor situado a su izquierda
girará una posición, es decir, generalizando: Si tenemos k rotores numerados de
derecha a izquierda, decimos que, cuando el rotor situado en la posición i avance
26 posiciones, el rotor situado en la posición i+1 avanzará una posición.
Con tres rotores, la máquina tiene un período de 26 × 26 × 26 = 17.576.
Dado que existían diferentes versiones de la máquina, éstas también se
diferenciaban en el movimiento de los rotores, existían máquinas con pasos
diversos, lo cual disminuía el período, pero creaba la falsa apariencia de que se
utilizaban rotores distintos, generando grandes quebraderos de cabeza a los
criptoanalistas.
En las máquinas de cuatro rotores, el reflector era cambiado por un rotor,
que mecánicamente no se movía, pero que “a mano”, podría colocarse en
cualquiera de sus 26 posiciones, lo que aumentaba considerablemente la seguridad
del mensaje.
Históricamente, los mensajes fueron limitados a 200 caracteres, así no
había ningún riesgo de repetir la clave en ningún momento.
Página 11 de 38
Trabajo optativo sobre Criptografía
Rueda de entrada
La rueda de entrada conecta el enchufe a los rotores. Si bien, las conexiones
internas de dicha rueda tienen relativamente poca importancia en cuestiones de
seguridad, obstaculizaron el progreso del criptoanálisis polaco cuando intentaban
deducir las conexiones de los rotores. El Enigma comercial conectaba las entradas y
salidas siguiendo el famoso orden QWERT del teclado:
Q A, W B, E C ...
Sin embargo, el Enigma militar las conectaba siguiendo el orden alfabético:
A A, B B, C C …
Esta modificación creo desconcierto en los criptoanalistas, ya que hacía que
las ecuaciones del criptoanálisis no tuviesen sentido.
Reflector
El reflector está conectado al último rotor, y es el encargado de que la
corriente eléctrica, que viene del teclado a través de los rotores, regrese por éstos
últimos hacia las lámparas por una ruta diferente. El reflector asegura que la
máquina es autoreflexiva: un texto cifrado en un estado determinado de los rotores
se descifra sólo para ese estado. Sin embargo, el reflector también nos brinda un
gran defecto; que una letra no pueda ser cifrada por si misma, lo que fue
aprovechado por los criptoanalistas en la segunda guerra mundial.
En la historia del Enigma se usaron numerosos tipos de reflectores
distintos.
Panel de conexiones
El panel de conexiones
(panel delantero de la Figura 7)
permite conectar cables entre
pares de letras. Fue presentado
en las versiones de la máquina
para el ejército en 1930. El panel
de conexiones contribuye a la
seguridad del cifrado de una
forma muy positiva. Conociendo
los rotores de una máquina sin
panel de conexión se puede
extraer
utilizando
métodos
manuales el texto plano del texto
encriptado con relativa rapidez,
algo imposible si se utiliza dicho
panel.
Fig. 7 Panel de conexiones de la
máquina Enigma M
Página 12 de 38
Trabajo optativo sobre Criptografía
Para utilizar dicho panel únicamente hay que conectar las dos clavijas de
un cable a dos letras distintas del panel, por ejemplo, podríamos conectar la E con
la Q. El efecto que produce dicha elección es que las letras señaladas se
intercambian antes de entrar en el huso de los rotores y tras salir de éstos. Por
ejemplo, cuando un operador teclea una E, la señal se desvía a la Q antes de entrar
en los rotores. Generalmente se utilizaban 6 cables, llegando a 13 en algunos
casos.
Accesorios
En algunas máquinas, como la M4, se instalo una pequeña impresora que
podía imprimir los caracteres en una cinta de papel. Esto, además de ser práctico,
aumentaba considerablemente la seguridad dado que se podía instalar la impresora
a una distancia considerable, haciendo que únicamente el operario que manejaba la
máquina tuviera acceso al texto plano.
Otro accesorio era un panel de lámparas remoto. Dicho accesorio se
instalaba para que, desde una distancia considerable, se pudiesen ver las bombillas
iluminadas impidiendo que nadie tuviese acceso al texto en plano, salvo el operario
escritor.
También se introdujeron cuadros de conexiones externos con un número
variable de clavijas.
Descripción matemática
La transformación que hace la máquina Enigma con cada letra puede ser
especificada matemáticamente como un producto de permutaciones. Dada una
máquina Enigma del Ejercito alemán de tres rotores, sea P la transformación del
cuadro de conexiones, U la del reflector y, L, M y R las acciones de los rotores
izquierdo, medio y derecho respectivamente. Entonces el cifrado E puede ser
expresado como:
E = PRMLUL
−1
M
−1
R
−1
P
−1
Cada vez que se pulsa una tecla el estado de los rotores varía. Por ejemplo, si el
rotor derecho R gira i posiciones, la transformación se convierte en ρiRρ − i, donde ρ
es la permutación cíclica de trazas. Asimismo, los rotores medio e izquierdo pueden
ser representados como el varío de j y k de M y L respectivamente. La función de
cifrado entonces puede ser descrita como:
E = P(ρiRρ
−i
)(ρjMρ
−j
)(ρkLρ
−k
)U(ρkL
−1
ρ
−k
Página 13 de 38
)(ρjM
−1
ρ
−j
)(ρiR
−1
ρ
−i
)P
−1
Trabajo optativo sobre Criptografía
DISEÑO DE UN SISTEMA CRIPTOGRÁFICO
Motivación del diseño
Durante la primera mitad del siglo XX hasta que dejo de ser segura,
Enigma fue una máquina con un sistema criptográfico muy fuerte, si no se conocían
los rotores en número de claves posibles era 26! (26 x 25 x 24 x … x 2 x 1)
Su criptoanálisis sólo fue posible por la desidia de los alemanes a la hora
de enviar sus mensajes. Pero a pesar de ello, la máquina distaba mucho de ser
perfecta, tenía varios fallos, entre los que destaca por su importancia el que una
letra no podía ser codificada por sí misma. Cuestionarme el por qué una letra no
podía ser codificada por si misma fue el punto de comienzo de este trabajo. Si
dicho fallo hubiese sido solucionado en tiempo de guerra, cuando se utilizaba la
Enigma, los criptoanalistas de la Alianza, en vez de tardar horas en descifrar los
mensajes, hubiesen tardado días, lo que hubiese proporcionado una gran ventaja
militar al Eje.
Comencé a documentarme y en pocos días pude observar que el fallo se
producía por el diseño del Reflector. Fue entonces, cuando decidí resolver dicho
fallo en el presente trabajo. Empecé a investigar los circuitos de Enigma y
finalmente encontré el verdadero problema; éste se debía a que Enigma era una
máquina criptográfica mecánica y eléctrica. Dado su diseño, si una letra se
codificaba por si misma, se producía un cortocircuito y no se iluminaba ninguna
bombilla. Fue entonces cuando comprendí porqué no se soluciono el problema en
su día, el coste de diseñar un sistema criptográfico que codificase también una letra
por sí misma era muy superior a la seguridad añadida al efectuar dicho arreglo.
Decidí solventar yo mismo dicho error, para ello existían 2 posibles vías de
resolución:
•
•
Abordar el problema desde su perspectiva de diseño, es decir, solventarlo en
el plano mecánico y eléctrico.
Trasladar el sistema al plano informático e intentar solucionarlo desde dicha
dimensión.
Escogí la segunda opción dado que la primera podría desembocar en un
trabajo exhausto y, potencialmente en ninguna solución concreta. En el sistema
informático el coste de la solución se reducía considerablemente dejando el valor de
la seguridad añadida constante y muy por encima. Por tanto, es rentable solventar
el problema. También debo comentar, que en este trabajo no se citan las nuevas
deficiencias de seguridad criptográficas que aparecen al cambiar al sistema de
dimensión, ya que en el plano informático existen nuevas y diferentes amenazas.
La detección de dichos problemas podría incrementar exponencialmente el tiempo
empleado en la realización del trabajo, y dado que dicho tiempo es bastante
acotado se delega en posibles trabajos posteriores.
Concluyendo, el trabajo realizado es, simplemente, el inicio del camino que
debe realizarse para generar un sistema criptográfico fuerte en el plano informático
basado en la Enigma. Posteriormente, en el apartado Conclusiones se analizarán los
posibles caminos que pueden tomarse a partir de este trabajo para la creación de
susodicho sistema.
Página 14 de 38
Texto plano
Página 15 de 38
PANEL DE CONEXIONES
ROTORES
REFLECTOR
SISTEMA CRIPTOGRÁFICO
Texto
encriptado
DESENCRIPTAMIENTO
ENCRIPTAMIENTO
LEYENDA
Trabajo optativo sobre Criptografía
Fig. 8 Esquema del sistema criptográfico basado en la máquina Enigma
Trabajo optativo sobre Criptografía
Diseño del Reflector
Para definir matemáticamente la transformación criptográfica que se da en
el reflector debemos crear una función con las siguientes propiedades:
1. Debe ser una función involutiva, es decir, una función que ella misma
es su inversa:
f ( f ( x)) = x, ∀x( x ∈ Dom( f ) )
2. Debe ser una función discreta, dados los datos de entrada y salida,
éstos pueden tener únicamente 28 valores distintos.
Dicha función ha de ser una transformación por sustitución monoalfabética
por sustitución en alfabetos permutados.
En la Enigma, dado que se basaba en procedimientos mecánicos y
eléctricos la función de transformación genérica era la siguiente:
y = f R ( x) ⇔ x = f R ( y ) ∧ x ≠ y ∧ x, y ∈ ε = {A, B, C ,.., Z }
Dicha función generaba un gran defecto al sistema criptográfico de la
máquina: “ningún carácter podía ser codificado por sí mismo”. En el sistema
propuesto, dicho error ha sido solucinado. Solventar dicho problema en una
máquina eléctrica era muy complejo, dado que habría que crear caminos diversos
para encriptar y desencriptar, pero dado que, nosotros nos hallamos en el plano
informático, simplemente cambiando una condición de dicha función podemos
solventarlo.
y = f R ( x) ⇔ x = f R ( y ) ∧ x, y ∈ ε = {A, B, C ,.., Z ,·} ∧ ∃(u ∈ ε ) / u = f (u )
Dicha función viene a decir que dada la función de transformación del
reflector, existe al menos un carácter del alfabeto para el cual la función de
transformación devuelve el mismo carácter, es decir, dicho carácter se codifica por
sí mismo. Puede existir más de uno que se codifique por si mismo, pero no es
recomendable que existan más caracteres que se codifiquen por si mismos que el
diezmo del cardinal del conjunto del alfabeto. Ej. Nuestro sistema tiene 28
caracteres en el alfabeto, de lo que se deduce que como máximo de caracteres que
se codifiquen por sí mismos tenemos 2,8, por tanto, haciendo redondeo por
truncamiento, obtenemos 2 caracteres. En nuestro sistema existen 2 de este estilo,
la N y la U.
La función de transformación se representa a continuación (fig. 9) como
un vector de N posiciones, siendo N el cardinal del conjunto alfabeto. La letra de
entrada se transforma en la letra de salida situada en la posición que ocupa la
primera en el orden común en el que se expresa el alfabeto castellano. Ej. La N se
encriptará como la N, la A como la F,…
A
F
B
S
C
O
D
K
E
Q
F
A
G
P
H
Z
I
W
J
Y
K
D
L
M
M
L
N
N
Ñ
V
O
C
P
G
Q
E
R
·
S
B
T
X
U
U
Fig. 9 Vector que representa la transformación llevada a cabo en el reflector
Página 16 de 38
V
Ñ
W
I
X
T
Y
J
Z
H
·
R
Trabajo optativo sobre Criptografía
Diseño de los rotores
Dado que, el sistema que se está diseñando deja atrás los problemas de
los sistemas criptográficos mecánicos y eléctricos, para definir la transformación
criptográfica que se hace en cada rotor ponemos utilizar el campo matemático.
La transformación criptográfica será definida como una función con las
siguientes propiedades:
1. Ser una función involutiva, es decir, una función que ella misma es su
inversa:
f ( f ( x)) = x, ∀x( x ∈ Dom( f ) )
2. Ser una función discreta, dados los datos de entrada y salida, éstos
pueden tener únicamente 28 valores distintos.
Para definir dichas funciones he utilizado un modelo de encriptamiento
conocido como el cuadrado de Vigenère (fig. 10). Dicho cuadrado fue diseñado
por Blaise de Vigenère en el año 1586 como una extensión del método Cesar de
encriptamiento. (véase Traité des chiffres où secrètes manières d'escrire) Se
basa en una encriptación polialfabética, por lo que el ataque por análisis de
frecuencia no tiene sentido. Dicho cuadro consiste en una tabla de tamaño NxN,
siendo N el número de caracteres del alfabeto del texto a encriptar. Cada
columna representa un carácter del alfabeto y cada fila representa un carácter
de la clave utilizada. Las filas se pueden representar tanto con números (clave
numérica, utilizado por Vigenère) o con letras. (palabra-clave, utilizada en el
diseño propuesto) Cada fila y cada columna representa un vector de N
posiciones tales que contienen una permutación del alfabeto. Dichas
permutaciones no son colocadas al azar, sino que siguen una pauta,
consecuencia de la propia definición de la función de transformación.
Página 17 de 38
Trabajo optativo sobre Criptografía
Fig. 10 Cuadrado de Vigenère como criptosistema
Ahora que ya conocemos el criptosistema a utilizar por cada rotor, solo nos
queda definir la función de transformación. Dado que la función buscada es
involutiva, no debemos definir funciones distintas para la encriptación y la
desencriptación, por tanto sólo hablaremos de la letra de entrada (variable
independiente) y la letra de salida (variable dependiente). Además, debemos
añadirle la letra correspondiente a la posición del rotor, que será nuestra clave.
Resumiendo, tendremos una función con dos variables para cada rotor, pero si
fijamos la posición de dicho rotor, tenemos una función de una única variable,
para la cual dicha función será involutiva. Dado que la tabla solo contiene como
entrada y como salida los caracteres del alfabeto del texto también se asegura
que dicha función sea discreta. Matemáticamente podemos definirlo de la
siguiente forma:
Sea x una letra del alfabeto,
f i la función involutiva respecto a x
de
transformación del rotor i con clave a, y = f i (x ) una letra del alfabeto que
resulta de aplicar la función de transformación f i a x . Sea a una letra del
alfabeto que representa la clave de la función de transformación f i para un
momento dado, entonces la función de transformación se define como:
y = f i ( x, a ) ⇔ x = f i ( y, a ) ∧ x, y, a ∈ ε = {A, B, C ,.., Z ,·}
Esquemáticamente y tomando el cuadrado de Vigenère, se puede ver de la
siguiente forma:
Clave
Letra de entrada
Letra de salida
Fig. 11 Obtención de la letra de salida a partir de una clave y una letra de entrada dadas de manera
manual.
Dado que ya hemos definido todas las características de la función de
transformación, ahora lo único que nos queda es decidir que metodología seguir
para la construcción de dichos cuadrados. Para construir un cuadrado de
Vigenère, primero, colocamos el alfabeto en orden en la cabecera de las
columnas y en la cabecera de las filas colocamos la permutación del alfabeto
que elegimos como clave para ese rotor. Posteriormente rellenamos la primera
fila con la permutación elegida como clave. Para cada fila i comprendida entre 2
y N colocamos la permutación desplazada i-1 posiciones a la derecha. (Fig 12)
Página 18 de 38
Trabajo optativo sobre Criptografía
COLUMNA 1
FILA 1
COLUMNA N
X1,X2,X3……..,X(N-i+1),X(N-i+2),…..……X(N-1),XN
...
FILA i
X(N-i+2)……...XN X1,X2,X3,……………......X(N-i+1) X(N-i+2)……...XN
Fig. 12 Procedimiento para obtener la fila i-ésima a partir de la permutación inicial en la creación de
un cuadradazo de Vigenère.
Una vez colocadas todas las permutaciones, ordenamos las filas por orden
alfabético de su identificador consiguiendo el cuadrado de Vigenère con las
propiedades deseadas.
En el sistema propuesto se han diseñado 6 funciones de transformación (6
rotores) utilizando el método de los cuadrados de Vigenère. Dicho método no
fue muy utilizado durante los dos siglos posteriores a su descubrimiento ya que
realizarlo dicho método de forma manual es muy propenso a errores dado el
laborioso y fatigante proceso de encriptamiento-desencriptamiento. El sistema
propuesto se basa en la informática, dicho problema no nos afecta, dado que un
computador realiza dicha tarea en tiempo constante y sin errores.
A continuación se muestras las permutaciones iniciales tomadas para cada
rotor del sistema propuesto:
Rotor #
ABCDEFGHIJKLMNÑOPQRSTUVWXYZ·
1
ABCDEFGHIJKLMNÑOPQRSTUVWXYZ·
2
QWERTYUIOPASDFGHJKLÑZXCVBNM·
3
BDFHJLCPRTXVÑZNY·EIWGAKMUSQO
4
ESOVPZ·JAYQUIRHXÑLNFTGKDCMWB
5
EKMFLÑGDQVZNTOWYHXUSPAIBE·CJ
6
AJDKS·IRUXBLHWTÑMCQGZNPYFVOE
Fig. 13 Permutaciones iniciales de los rotores
Página 19 de 38
Trabajo optativo sobre Criptografía
Rotores diseñados para el sistema criptográfico
Rotor 1
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
·
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
·
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
·
·
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
Z
·
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
Y
Z
·
A
B
C
D
E
F
G
H
I
J
K
L
M
N
Ñ
O
P
Q
R
S
T
U
V
W
X
X
Y
Z
·
A
B
C
D
E
F
G
H
I
J
K
L
M
N
Ñ
O
P
Q
R
S
T
U
V
W
W
X
Y
Z
·
A
B
C
D
E
F
G
H
I
J
K
L
M
N
Ñ
O
P
Q
R
S
T
U
V
V
W
X
Y
Z
·
A
B
C
D
E
F
G
H
I
J
K
L
M
N
Ñ
O
P
Q
R
S
T
U
U
V
W
X
Y
Z
·
A
B
C
D
E
F
G
H
I
J
K
L
M
N
Ñ
O
P
Q
R
S
T
T
U
V
W
X
Y
Z
·
A
B
C
D
E
F
G
H
I
J
K
L
M
N
Ñ
O
P
Q
R
S
S
T
U
V
W
X
Y
Z
·
A
B
C
D
E
F
G
H
I
J
K
L
M
N
Ñ
O
P
Q
R
R
S
T
U
V
W
X
Y
Z
·
A
B
C
D
E
F
G
H
I
J
K
L
M
N
Ñ
O
P
Q
Q
R
S
T
U
V
W
X
Y
Z
·
A
B
C
D
E
F
G
H
I
J
K
L
M
N
Ñ
O
P
P
Q
R
S
T
U
V
W
X
Y
Z
·
A
B
C
D
E
F
G
H
I
J
K
L
M
N
Ñ
O
O
P
Q
R
S
T
U
V
W
X
Y
Z
·
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
·
A
B
C
D
E
F
G
H
I
J
K
L
M
N
N
Ñ
O
P
Q
R
S
T
U
V
W
X
Y
Z
·
A
B
C
D
E
F
G
H
I
J
K
L
M
M
N
Ñ
O
P
Q
R
S
T
U
V
W
X
Y
Z
·
A
B
C
D
E
F
G
H
I
J
K
L
L
M
N
Ñ
O
P
Q
R
S
T
U
V
W
X
Y
Z
·
A
B
C
D
E
F
G
H
I
J
K
K
L
M
N
Ñ
O
P
Q
R
S
T
U
V
W
X
Y
Z
·
A
B
C
D
E
F
G
H
I
J
J
K
L
M
N
Ñ
O
P
Q
R
S
T
U
V
W
X
Y
Z
·
A
B
C
D
E
F
G
H
I
I
J
K
L
M
N
Ñ
O
P
Q
R
S
T
U
V
W
X
Y
Z
·
A
B
C
D
E
F
G
H
H
I
J
K
L
M
N
Ñ
O
P
Q
R
S
T
U
V
W
X
Y
Z
·
A
B
C
D
E
F
G
G
H
I
J
K
L
M
N
Ñ
O
P
Q
R
S
T
U
V
W
X
Y
Z
·
A
B
C
D
E
F
F
G
H
I
J
K
L
M
N
Ñ
O
P
Q
R
S
T
U
V
W
X
Y
Z
·
A
B
C
D
E
E
F
G
H
I
J
K
L
M
N
Ñ
O
P
Q
R
S
T
U
V
W
X
Y
Z
·
A
B
C
D
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
C
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
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
·
A
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
·
Fig. 14 Rotor 1
Página 20 de 38
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
·
Trabajo optativo sobre Criptografía
Rotor 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
·
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
·
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
M
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
I
O
P
A
S
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
I
O
P
A
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
I
O
P
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
I
O
Z
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
K
L
Ñ
Z
X
C
V
B
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
N
M
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
B
N
M
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
C
V
B
N
M
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
T
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
V
B
N
M
·
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
N
M
·
Q
W
E
R
T
Y
U
I
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Ñ
Z
X
C
V
B
M
N
·
Q
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
·
Fig. 15 Rotor 2
Página 21 de 38
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
·
Trabajo optativo sobre Criptografía
Rotor 3
A
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
·
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
·
P
R
T
X
V
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
N
Y
·
E
I
W
G
A
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
V
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
R
T
X
V
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
X
V
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
C
P
R
T
X
V
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
N
Y
·
E
I
W
G
A
K
L
C
P
R
T
X
V
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
N
Y
D
F
H
J
L
C
P
R
T
X
V
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
N
Y
·
E
I
W
G
F
H
J
L
C
P
R
T
X
V
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
N
Y
·
E
I
W
H
J
L
C
P
R
T
X
V
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
N
Y
·
E
I
J
L
C
P
R
T
X
V
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
N
Y
·
T
X
V
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
N
Y
·
E
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
Ñ
Z
N
Ñ
Z
N
Y
·
E
I
W
G
A
K
M
U
S
Q
O
B
D
F
H
J
L
C
P
R
T
X
Y
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
·
Fig. 16 Rotor 3
Página 22 de 38
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
·
Trabajo optativo sobre Criptografía
Rotor 4
A
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
·
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
·
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
O
V
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
O
V
P
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
O
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
N
F
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
L
N
F
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
R
H
X
Ñ
L
N
F
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
F
T
G
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
K
K
D
C
M
W
B
E
S
O
V
P
Z
·
J
A
Y
Q
U
I
R
H
X
Ñ
L
N
F
T
G
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
·
Fig. 17 Rotor 4
Página 23 de 38
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
·
Trabajo optativo sobre Criptografía
Rotor 5
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
·
A
B
D
Q
Ñ
G
M
F
C
D
E
F
G
H
V
Z
D
Q
N
T
O
W
V
Z
N
T
L
Ñ
G
D
Q
V
I
J
K
L
M
Y
H
O
W
Z
N
N
Ñ
X
U
Y
H
T
O
P
Q
S
P
X
U
O
W
Y
R
S
T
A
I
B
S
P
A
H
X
U
U
V
W
R
·
C
I
B
R
J
E
K
M
·
C
J
E
S
P
A
I
B
R
·
X
Y
Z
·
F
L
Ñ
G
K
M
F
L
C
J
E
K
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
X
U
S
P
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
X
U
S
P
A
I
B
R
·
C
J
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
X
U
S
P
A
I
B
R
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
X
U
S
P
A
T
O
W
Y
H
X
U
S
P
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
G
D
Q
V
Z
N
T
O
W
Y
H
X
U
S
P
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
X
U
S
P
A
I
B
R
·
C
J
E
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
X
U
S
P
A
I
B
R
·
C
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
X
U
S
P
A
I
B
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
X
U
S
P
A
I
B
R
·
X
U
S
P
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
X
U
S
P
A
I
Y
H
X
U
S
P
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Q
V
Z
N
T
O
W
Y
H
X
U
S
P
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
P
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
X
U
S
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
X
U
S
P
A
I
B
R
·
C
J
E
K
M
F
V
Z
N
T
O
W
Y
H
X
U
S
P
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
H
X
U
S
P
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
Z
N
T
O
W
Y
H
X
U
S
P
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
S
P
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
X
U
W
Y
H
X
U
S
P
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
N
T
O
W
Y
H
X
U
S
P
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
O
W
Y
H
X
U
S
P
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
U
S
P
A
I
B
R
·
C
J
E
K
M
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
X
F
L
Ñ
G
D
Q
V
Z
N
T
O
W
Y
H
X
U
S
P
A
I
B
R
·
C
J
E
K
M
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
·
Fig. 18 Rotor 5
Página 24 de 38
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
·
Trabajo optativo sobre Criptografía
Rotor 6
A
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
·
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
·
A
J
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
X
B
O
E
A
J
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
J
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
E
A
J
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
V
O
E
A
J
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
X
B
L
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
X
B
L
H
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
X
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
F
V
O
E
A
J
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
X
B
L
H
W
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
X
B
L
H
W
T
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
Y
F
V
O
E
A
J
D
K
S
·
I
R
Y
F
V
O
E
A
J
D
K
S
·
I
R
U
X
B
L
H
W
T
Ñ
M
C
Q
G
Z
N
P
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
·
Fig. 19 Rotor 6
Página 25 de 38
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
·
Trabajo optativo sobre Criptografía
Diseño del panel de conexiones
El diseño del panel de conexiones es prácticamente trivial; dado un
máximo de 6 pares de letras, y un texto de entrada, el texto de salida será un
texto en el que las letras pertenecientes a algún par dado serán cambiadas por
su correspondiente pareja. Se basa en un modelo de sustitución simple de
caracteres.
Ej.
Texto de entrada
CUANDO DOROTHY SALIA A LA PUERTA Y MIRABA ALREDEDOR NO VEIA OTRA COSA QUE LA
INMENSA PRADERA GRIS
Pares de letras: A/B, C/D, E/F
Texto de salida
DUBNCO COROTHY SBLIB B LB PUFRTB Y MIRBAB BLRFCRCOR NO VFIB OTRB DOSB QUF LB
INMFNSB PRBCFRB GRIS
La trasformación se puede especificar matemáticamente de la siguiente
forma:
Sean 6 conjuntos s i , ∀i (1 ≤ i ≤ 6) que contienen cada uno un par de
elementos
u i ,1 , u i , 2
de
tal
conjunto PC que cumpla
forma
que
∀si ∀s j (i ≠ j ) → si ∩ s j = ∅ ,
un
∀si (1 ≤ i ≤ 6) → si ∈ PC ,y una función pareja que se
define como
⎧ xi ,1 x ∈ s i ∧ x = xi , 2
⎪
y = pareja( x) = ⎨ xi , 2 x ∈ s i ∧ x = xi ,1
⎪
error e.c.c.
⎩
la función de trasformación se define de la siguiente manera:
⎧ pareja( x) x ∈ PC
y = f ( x) = ⎨
x
e.c.c
⎩
Página 26 de 38
Trabajo optativo sobre Criptografía
Sistema criptográfico en pseudocódigo
Paquete con las definiciones de variables y funciones necesarias
--Variables globales
TEXTO, TEXTO_SALIDA: string(<>);
CLAVE: string(<>);
R1: array(1..28,1..28) de caracteres : tabla que define la función del
Rotor 1;
R2: array(1..28,1..28) de caracteres : tabla que define la función del
Rotor 2;
R3: array(1..28,1..28) de caracteres : tabla que define la función del
Rotor 3;
R4: array(1..28,1..28) de caracteres : tabla que define la función del
Rotor 4;
R5: array(1..28,1..28) de caracteres : tabla que define la función del
Rotor 5;
R6: array(1..28,1..28) de caracteres : tabla que define la función del
Rotor 6;
REFLECTOR: array(1..28) de caracteres: vector que define la función
del reflector;
CÓDIGO: string(1..4);
POSICIÓN_ROTORES: array(1..4) de naturales;
POSICIÓN_CLAVIJAS: array(1..12) de caracteres;
CARÁCTER_LEIDO, CARÁCTER_TRATADO: carácter;
--Subprogramas
función código(CLAVE: string) Æ string;
--Dada una clave, la función nos devuelve el código de la posición
inicial de los rotores. El string de salida tiene la siguiente forma:
Código_rotor1 & Código_rotor2 & Código_rotor3 & Código_rotor4
función posición_rotores(CLAVE: string) Æ array de naturales;
--Dada una clave, la función nos devuelve qué hueco contiene qué
rotor. La función también comprueba que un rotor, si está, esté solo
en un hueco. El string de salida tiene la forma:
NúmRotor_Hueco1 & NúmRotor_Hueco2 & NúmRotor_Hueco3 & NúmRotor_Hueco4
función panel_conexiones(CLAVE: string) Æ string;
--Dada una clave, la función nos devuelve en un string que representa
las clavijas puenteadas de la siguiente forma:
G01 & G02 & G03 & G04 & G05 & G06 & G07 & G08 & G09 & G10 & G11 & G12
tal que G01 está puenteado con G02, G03 con G04 y así sucesivamente…
Si se puenteasen menos de 12 caracteres, los caracteres no puenteados
tomarán el valor de carácter prohibido (#)
función posición(CARÁCTER_ACTUAL: carácter) Æ natural
cuando CARÁCTER_ACTUAL toma el valor
‘A’
=> devolver 1;
‘B’
=> devolver 2;
‘C’
=> devolver 3;
(…)
‘Z’
=> devolver 27;
‘·’
=> devolver 28;
Página 27 de 38
Trabajo optativo sobre Criptografía
fcuando;
ffunción;
función valor(NÚMERO: natural) Æ carácter
cuando NÚMERO toma el valor
1
=> devolver ‘A’;
2
=> devolver ‘B’;
3
=> devolver ‘C’;
(…)
27
=> devolver ‘Z’;
28
=> devolver ‘·’;
fcuando;
ffunción;
función H1(CÓDIGO_1, CARÁCTER_ACTUAL: carácter; ROTOR: natural) Æ
carácter
A1 Å posición(CARÁCTER_ACTUAL);
A2 Å posición(CÓDIGO_1);
cuando ROTOR toma el valor
1 => devolver R1(A1,A2);
2 => devolver R2(A1,A2);
3 => devolver R3(A1,A2);
4 => devolver R4(A1,A2);
5 => devolver R5(A1,A2);
6 => devolver R6(A1,A2);
fcuando;
ffunción;
función H2(CÓDIGO_2, CARÁCTER_ACTUAL: carácter; ROTOR: natural) Æ
carácter
A1 Å posición(CARÁCTER_ACTUAL);
A2 Å posición(CÓDIGO_2);
cuando ROTOR toma el valor
1 => devolver R1(A1,A2);
2 => devolver R2(A1,A2);
3 => devolver R3(A1,A2);
4 => devolver R4(A1,A2);
5 => devolver R5(A1,A2);
6 => devolver R6(A1,A2);
fcuando;
ffunción;
función H3(CÓDIGO_3, CARÁCTER_ACTUAL: carácter; ROTOR: natural) Æ
carácter
A1 Å posición(CARÁCTER_ACTUAL);
A2 Å posición(CÓDIGO_3);
cuando ROTOR toma el valor
1 => devolver R1(A1,A2);
2 => devolver R2(A1,A2);
3 => devolver R3(A1,A2);
4 => devolver R4(A1,A2);
5 => devolver R5(A1,A2);
6 => devolver R6(A1,A2);
fcuando;
Página 28 de 38
Trabajo optativo sobre Criptografía
ffunción;
función H4(CÓDIGO_4, CARÁCTER_ACTUAL: carácter; ROTOR: natural) Æ
carácter
A1 Å posición(CARÁCTER_ACTUAL);
A2 Å posición(CÓDIGO_4);
cuando ROTOR toma el valor
1 => devolver R1(A1,A2);
2 => devolver R2(A1,A2);
3 => devolver R3(A1,A2);
4 => devolver R4(A1,A2);
5 => devolver R5(A1,A2);
6 => devolver R6(A1,A2);
fcuando;
ffunción;
función reflector(CARÁCTER_ACTUAL: carácter) Æ carácter
devolver REFLECTOR(posición(CARÁCTER_ACTUAL));
ffunción;
función actualizar_código(CÓDIGO: string) Æ string
para i desde 1 hasta 4 hacer
CÓDIGO_NUMÉRICO Å valor(CÓDIGO(i));
fpara;
si CÓDIGO_NUMÉRICO(1) + 1 > 28 entonces
CÓDIGO_NUMÉRICO(1) Å 1;
si CÓDIGO_NUMÉRICO(2) + 1 > 28 entonces
CÓDIGO_NUMÉRICO(2) Å 1;
si CÓDIGO_NUMÉRICO(3) + 1 > 28 entonces
CÓDIGO_NUMÉRICO(3) Å 1;
si CÓDIGO_NUMÉRICO(4) + 1 > 28 entonces
CÓDIGO_NUMÉRICO(4) Å 1;
si no
CÓDIGO_NUMÉRICO(4) Å CÓDIGO_NUMÉRICO(4) +1;
Fsi;
si no
CÓDIGO_NUMÉRICO(3) Å CÓDIGO_NUMÉRICO(3) +1;
fsi;
si no
CÓDIGO_NUMÉRICO(2) Å CÓDIGO_NUMÉRICO(2) +1;
fsi;
si no
CÓDIGO_NUMÉRICO(1) Å CÓDIGO_NUMÉRICO(1) +1;
fsi;
para i desde 1 hasta 4 hacer
CÓDIGO Å posición(CÓDIGO_NUMÉRICO(i));
fpara;
devolver CÓDIGO;
ffunción;
Página 29 de 38
Trabajo optativo sobre Criptografía
función C(CÓDIGO: string; CARÁCTER_ACTUAL: carácter) Æ carácter
X1
Å CÓDIGO(1);
X2
Å CÓDIGO(2);
X3
Å CÓDIGO(3);
X4
Å CÓDIGO(4);
X5
Å CÓDIGO(5);
X6
Å CÓDIGO(6);
X7
Å CÓDIGO(7);
X8
Å CÓDIGO(8);
X9
Å CÓDIGO(9);
X10
Å CÓDIGO(10);
X11
Å CÓDIGO(11);
X12
Å CÓDIGO(12);
cuando CARÁCTER_ACTUAL toma el valor
X1
=> devolver X2;
X2
=> devolver X1
X3
=> devolver X4
X4
=> devolver X3
X5
=> devolver X6
X6
=> devolver X5;
X7
=> devolver X8;
X8
=> devolver X7;
X9
=> devolver X10;
X10
=> devolver X9;
X11
=> devolver X12;
X12
=> devolver X11;
Otros => devolver CARÁCTER_ACTUAL;
fcuando;
ffunción;
función vacío(TEXTO: string) Æ bolean
devolver (TEXTO = ε);
ffunción;
función añadir(TEXTO: string; CARÁCTER_ACTUAL: carácter) Æ string
si vacío(TEXTO) entonces
devolver CARÁCTER_ACTUAL;
si no
devolver TEXTO & CARÁCTER_ACTUAL;
fsi
ffunción;
función primero(TEXTO: string) Æ carácter
devolver (car(TEXTO));
ffunción;
función resto(TEXTO: string) Æ string
devolver (cdr(TEXTO));
ffunción;
Página 30 de 38
Trabajo optativo sobre Criptografía
Programa Principal del sistema Criptográfico
--Suponemos que el texto a tratar se encuentra en la variable G1 y la
clave en la variable G2
TEXTO Å G1;
CLAVE Å G2;
CÓDIGO Å código(CLAVE);
POSICIÓN_ROTORES Å posición_rotores(CLAVE);
PANEL_CONEXIONES Å panel_conexiones(CLAVE);
TEXTO_SALIDA Å ε;
mientras
┐vacío(TEXTO)
hacer
--Captura del carácter a tratar
G3 Å primero(TEXTO);
TEXTO Å resto(TEXTO);
--Encriptación/Desencriptación
G3
G3
G3
G3
G3
G3
G3
G3
G3
G3
G3
Å
Å
Å
Å
Å
Å
Å
Å
Å
Å
Å
C(PANEL_CONEXIONES,G3)
H1(CÓDIGO(1),G3,POSICIÓN_ROTORES(1));
H2(CÓDIGO(2),G3,POSICIÓN_ROTORES(2));
H3(CÓDIGO(3),G3,POSICIÓN_ROTORES(3));
H4(CÓDIGO(4),G3,POSICIÓN_ROTORES(4));
reflector(G3);
H4(CÓDIGO(4),G3,POSICIÓN_ROTORES(4));
H3(CÓDIGO(3),G3,POSICIÓN_ROTORES(3));
H2(CÓDIGO(2),G3,POSICIÓN_ROTORES(2));
H1(CÓDIGO(1),G3,POSICIÓN_ROTORES(1));
C(PANEL_CONEXIONES,G3)
--Salida y actualización
TEXTO_SALIDA Å añadir(TEXTO_SALIDA,G3);
CÓDIGO Å Actualizar_código(CÓDIGO);
fmientras;
G0 Å TEXTO_SALIDA;
--En G0 se deja el texto ya tratado
Página 31 de 38
Trabajo optativo sobre Criptografía
Ejemplo del funcionamiento del sistema
Encriptando un texto en plano
TEXTO: DESEMBARCO·DE·NORMANDIA
CLAVE:
FOSU
5-4-2-3
A/P-D/X-E/C-K/U-I/O-W/Z
CLAVE
FOSU
GOSU
HOSU
IOSU
JOSU
KOSU
LOSU
MOSU
NOSU
ÑOSU
OOSU
POSU
QOSU
ROSU
SOSU
TOSU
UOSU
VOSU
WOSU
XOSU
YOSU
ZOSU
·OSU
INIC.
D
E
S
E
M
B
A
R
C
O
·
D
E
·
N
O
R
M
A
N
D
I
A
↓C
↓H1
X
C
S
C
M
B
P
R
E
I
·
X
C
·
N
I
R
M
P
N
X
O
P
H
Q
H
Z
D
Y
S
H
O
P
U
J
S
A
Q
C
·
P
F
O
Q
O
D
↓H2
S
Z
S
Q
T
·
H
S
R
U
P
A
H
J
Z
F
Y
U
C
R
Z
R
T
↓H3
O
·
O
Ñ
H
Z
T
O
J
F
A
P
T
R
·
U
G
F
M
J
·
J
H
↓H4
K
L
K
T
I
R
Ñ
K
E
W
B
N
Ñ
Z
L
S
D
W
Q
E
L
E
I
↓R
↓H4
D
M
D
X
W
·
V
D
Q
I
S
N
V
H
M
B
K
I
E
Q
M
Q
W
Página 32 de 38
G
Q
G
Y
F
L
X
G
M
H
U
P
X
I
Q
A
O
H
J
M
Q
M
F
↓H3
Y
Ñ
Y
G
U
W
M
Y
X
T
F
A
M
D
Ñ
P
S
T
R
X
Ñ
X
U
↓H2
·
B
·
K
P
L
N
·
E
D
C
J
N
T
B
U
H
D
O
E
B
E
P
↓H1
Q
N
Z
D
X
G
E
Y
O
D
X
X
G
G
R
M
Ñ
Y
Z
R
M
C
D
↓C (FIN)
Q
N
W
X
D
G
C
Y
I
X
D
D
G
G
R
M
Ñ
Y
W
R
M
E
X
Trabajo optativo sobre Criptografía
Desencriptando un texto codificado
TEXTO: QNWXDGCYIXDDGGRMÑYWRMEX
CLAVE:
FOSU
5-4-2-3
A/P-D/X-E/C-K/U-I/O-W/Z
CLAVE
FOSU
GOSU
HOSU
IOSU
JOSU
KOSU
LOSU
MOSU
NOSU
ÑOSU
OOSU
POSU
QOSU
ROSU
SOSU
TOSU
UOSU
VOSU
WOSU
XOSU
YOSU
ZOSU
·OSU
INIC.
Q
N
W
X
D
G
C
Y
I
X
D
D
G
G
R
M
Ñ
Y
W
R
M
E
X
↓C
↓H1
Q
N
Z
D
X
G
E
Y
O
D
X
X
G
G
R
M
Ñ
Y
Z
R
M
C
D
·
B
·
K
P
L
N
·
E
D
C
J
N
T
B
U
H
D
O
E
B
E
P
↓H2
Y
Ñ
Y
G
U
W
M
Y
X
T
F
A
M
D
Ñ
P
S
T
R
X
Ñ
X
U
↓H3
G
Q
G
Y
F
L
X
G
M
H
U
P
X
I
Q
A
O
H
J
M
Q
M
F
↓H4
D
M
D
X
W
·
V
D
Q
I
S
N
V
H
M
B
K
I
E
Q
M
Q
W
↓R
↓H4
K
L
K
T
I
R
Ñ
K
E
W
B
N
Ñ
Z
L
S
D
W
Q
E
L
E
I
Página 33 de 38
O
·
O
Ñ
H
Z
T
O
J
F
A
P
T
R
·
U
G
F
M
J
·
J
H
↓H3
S
Z
S
Q
T
·
H
S
R
U
P
A
H
J
Z
F
Y
U
C
R
Z
R
T
↓H2
H
Q
H
Z
D
Y
S
H
O
P
U
J
S
A
Q
C
·
P
F
O
Q
O
D
↓H1
X
C
S
C
M
B
P
R
E
I
·
X
C
·
N
I
R
M
P
N
X
O
P
↓C (FIN)
D
E
S
E
M
B
A
R
C
O
·
D
E
·
N
O
R
M
A
N
D
I
A
Trabajo optativo sobre Criptografía
Análisis matemático del criptosistema planteado
En este apartado únicamente vamos a calcular el número posible de claves
que pueden generarse con el nuevo criptosistema. Dado que en este sistema
criptográfico el reflector no varía, siempre está situado en la misma posición, el
número total de claves será el producto de las claves que generan los rotores por el
número de formas de colocar el panel de conexiones.
num _ claves = num _ claves _ rotores ⋅ num _ claves _ panel _ de _ conexiones
CLAVES DE LOS ROTORES
El número de claves de los rotores será el producto entre las posibles
claves generadas por 4 rotores colocados en un orden dado y todas las
posibilidades distintas de colocación de los 6 rotores en 4 huecos.
num _ claves _ rotores = num _ colocaciones ⋅ num _ claves _ diferentes
Dado que tenemos 4 huecos para 6 rotores, el número de posibles
colocaciones será:
num _ colocaciones = V64 = 6 ⋅ 5 ⋅ 4 ⋅ 3 = 360
Con 4 rotores en un orden dado, y con 28 elementos en el alfabeto el
número de claves es:
num _ claves _ diferentes = V281 ⋅ V281 ⋅ V281 ⋅ V281 = 28 ⋅ 28 ⋅ 28 ⋅ 28 = 28 4 = 614656
El total es el producto entre las dos cifras anteriores:
num _ claves _ rotores = 360 ⋅ 614656 = 221276160
CLAVES DEL PANEL DE CONEXIONES
El número de claves del panel de conexiones es el sumatorio de todas las
posibles claves que pueden formarse utilizando de 0 a 6 cables:
6
num _ claves _ panel _ de _ conexiones = ∑ num _ claves _ usando _ i _ cables
i =0
Cada num_claves_usando_i_cables se define como:
Posibilidades
de coger 2i
letras de 28
*
Posibilidades
de formar i
parejas con
2i letras en
orden
Página 34 de 38
/
Orden de
parejas
Trabajo optativo sobre Criptografía
Matemáticamente:
⎛ 2i ⎞⎛ 2i − 2 ⎞⎛ 2i − 2 2 ⎞ ⎛ 2 ⎞
⎟...⎜⎜ ⎟⎟
⎜⎜ ⎟⎟⎜⎜
⎟⎟⎜
⎛ 28 ⎞ ⎝ 2 ⎠⎝ 2 ⎠⎜⎝ 2 ⎟⎠ ⎝ 2 ⎠
num _ claves _ usando _ i _ cables = ⎜⎜ ⎟⎟
Pi
⎝ 2i ⎠
Dado que tenemos 6 cables, y podemos usar de ellos 0,1,2…6 cables para
conectar 28 clavijas, el número total de claves del panel de conexiones será:
⎛12 ⎞⎛10 ⎞⎛ 8 ⎞⎛ 6 ⎞⎛ 4 ⎞⎛ 2 ⎞
⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟
⎛ 28 ⎞ ⎜⎝ 2 ⎟⎠⎜⎝ 2 ⎟⎠⎜⎝ 2 ⎟⎠⎜⎝ 2 ⎟⎠⎜⎝ 2 ⎟⎠⎜⎝ 2 ⎟⎠
+
num _ claves _ panel _ de _ conexiones = ⎜⎜ ⎟⎟
P6
⎝ 12 ⎠
⎛10 ⎞⎛ 8 ⎞⎛ 6 ⎞⎛ 4 ⎞⎛ 2 ⎞
⎛ 8 ⎞⎛ 6 ⎞⎛ 4 ⎞⎛ 2 ⎞
⎛ 6 ⎞⎛ 4 ⎞⎛ 2 ⎞
⎛ 4 ⎞⎛ 2 ⎞
⎜⎜ ⎟⎟⎜⎜ ⎟⎟⎜⎜ ⎟⎟⎜⎜ ⎟⎟⎜⎜ ⎟⎟
⎜⎜ ⎟⎟⎜⎜ ⎟⎟⎜⎜ ⎟⎟⎜⎜ ⎟⎟
⎜⎜ ⎟⎟⎜⎜ ⎟⎟⎜⎜ ⎟⎟
⎜ ⎟⎜ ⎟
⎛ 28 ⎞ ⎝ 2 ⎠⎝ 2 ⎠⎝ 2 ⎠⎝ 2 ⎠⎝ 2 ⎠
⎛ 28 ⎞ ⎝ 2 ⎠⎝ 2 ⎠⎝ 2 ⎠⎝ 2 ⎠ ⎛ 28 ⎞ ⎝ 2 ⎠⎝ 2 ⎠⎝ 2 ⎠ ⎛ 28 ⎞ ⎜⎝ 2 ⎟⎠⎜⎝ 2 ⎟⎠
+ ⎜⎜ ⎟⎟
+ +⎜⎜ ⎟⎟
+ ⎜⎜ ⎟⎟
+ ⎜⎜ ⎟⎟
+
P5
P4
P3
⎝ 10 ⎠
⎝8⎠
⎝6⎠
⎝ 4 ⎠ P2
⎛ 2⎞
⎜ ⎟
⎛ 28 ⎞ ⎜⎝ 2 ⎟⎠
+ ⎜⎜ ⎟⎟
+ 1 = 613866339829
⎝ 2 ⎠ P2
NÚMERO TOTAL DE CLAVES
El total de claves es:
num _ claves = 221276160 ⋅ 613866339829 = 135.833.986.430.616.176.640
Por tanto el número total de claves es del orden 1,35*1020
Página 35 de 38
Trabajo optativo sobre Criptografía
DEDICACIÓN INVERTIDA EN EL TRABAJO
En el siguiente cuadro-resumen (fig. 20) se muestran el tiempo dedicado a
las diferentes fases realizadas para la creación del presente trabajo:
Documentación sobre ENIGMA
Especificación del sistema criptográfico
Diseño del sistema criptográfico
Diseño rotores y reflector
Diseño clavijas
Diseño de la función criptográfica
Portar el diseño a pseudocódigo
Idear un ejemplo basado en el diseño
Repasar y corregir posibles fallos
Cálculos combinatorios de los alfabetos
Conclusiones
Realización del documento entregable
15h
02h
02h
05h
05h
03h
05h
04h
20h
TOTAL
85h
Fig. 20 Dedicaciones
Página 36 de 38
22h
02h
Trabajo optativo sobre Criptografía
CONCLUSIONES
Al ser Enigma una máquina de sustitución rotativa, y el sistema propuesto
está basado en dicha característica, en la actualidad, su criptoanálisis es bastante
sencillo con un equipo medianamente potente. Dicho defecto debería ser
solucionado si se quiere continuar el trabajo comenzado en este documento, así
como, debe realizarse un estudio criptoanalítico del criptosistema.
Por tanto, surgen numerosas ideas para mejorar el sistema criptográfico,
además de hacer hincapié en el problema del criptoanálisis. Dichas ideas pueden
resultar, en algunos casos, descabelladas o infactibles dado a que han sido
pensadas utilizando el método Brain Storming. Aunque algunas ideas sean
descabelladas, en distintos lectores, pueden ocasionar pensamientos que les
conduzcan a grandes ideas. Las ideas son las siguientes:
•
Usar un número N>>0 (muy grande) de cuadrados de Vigenère como
abstracción de los rotores de la máquina original.
•
Utilizar reflectores diferentes. Al igual que podemos colocar cualquier rotor
en cualquier hueco, podemos disponer de una serie de reflectores a colocar en
el respectivo hueco.
•
Utilización de funciones no involutivas, es decir, utilizar una función de
encriptamiento y otra de desencriptamiento y que estas sean diferentes.
•
Cambiar las funciones matemáticas descritas en este documento, por
funciones más seguras.
•
Definir una función matemática tal que dado un número comprendido
entre 1 y 28!, nos devuelva el rotor, que cumple las especificaciones,
correspondiente dicho número de permutación. A mi parecer, ésta es la mejor
idea ya que se puede combinar con criptosistemas basados en las teorías de
grandes números, las cuales son muy utilizadas hoy en días para las
transacciones electrónicas en Internet. Además, dichos criptosistemas son, hoy
por hoy muy seguros, aunque tienen un futuro incierto, ya que si se demuestra
un problema matemático (Hipótesis de Riemann), dejarían de ser efectivos.
Pero es muy improbable que en un futuro cercano se resuelva dicho problema,
dada su excesiva complejidad.
Existen más ideas, pero solo he expuesto las que, a mi juicio, tienen
mayor importancia.
Por lo cual, se podría deducir que este trabajo no es un fin, sino un medio.
Soluciona un problema de la máquina inicial cambiando de dimensión el
criptosistema, del campo eléctrico y mecánico al campo informático. Dicho
cambio produce errores en el criptosistema (no determinados en el documento)
y muchos caminos para intentar perfeccionarlo. Simplemente, es un pequeño
paso en el diseño de un criptosistema.
Página 37 de 38
Trabajo optativo sobre Criptografía
BIBLIOGRAFÍA
•
Trabajo entregado de un alumno de Seguridad Informática del curso pasado.
•
Declasiffied Documents of Second Global War: Turing’s treatise on the enigma
(1942)
•
http://en.wikipedia.org/wiki/Enigma_machine y navegación a través de
diversos links presentes en la Wikipedia.
•
Diversas páginas sobre criptografía y cuadrados de Vigenère.
Página 38 de 38
Descargar