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