★ AMSTRAD CPC ★ GAMESLIST ★ ENIGMA (c) AMSTRAD USER ★

Amstrad User
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Enigma, la máquina de cifrar alemana utilizada en la II Guerra Mundial, era básicamente una máquina simple, pero fue necesario el ingenio de muchos de los mejores cerebros, tanto en Polonia como en Gran Bretaña para decodificar sus mensajes cifrados, y esto sólo fue posible cuando la máquina fue utilizada de forma descuidada. Incluso hoy sería muy difícil, si no imposible, descifrar un mensaje que haya sido codificado dos veces con la Enigma, sin un conocimiento previo de su inicialización.

La versión civil

La máquina ENIGMA, en su formato básico, fue inventada en la década de los 20, y fue patentada para su uso en bancos e instituciones similares. Externamente la máquina consistía en un teclado parecido a los de las máquinas de escribir, pero sin teclas numéricas o de puntuación. Encima de este teclado había un panel con las 26 letras del alfabeto marcadas (el alfabeto sajón consta de 26 letras), y encima de cada letra una pequeña bombilla eléctrica. Cuando una tecla era pulsada, una luz en el panel se iluminaba, la letra que tuviera debajo era la cifra de la que había sido pulsada, y debía ser anotada por el operador de claves.

Una característica importante de la máquina era la autoinversión -es decir, no era necesario un dispositivo especial de desciframiento. Si dos máquinas estaban inicializadas con la misma configuración, el texto cifrado de una podría ser convertido en texto normal simplemente introduciéndolo en la segunda. Otra peculiaridad era que un carácter no podía ser en él mismo.

Las teclas hacían funcionar interruptores, los cuales enviaban una corriente eléctrica a alguno de los 26 contactos colocados en un círculo en el interior de la parte frontal de la máquina. El patrón de conexión respondía a un orden bastante elemental; el carácter «A» estaba unido al primer contacto, la «B» al segundo y así. Dentro del armazón de la máquina, montados en un eje, había tres rotores, cada uno tenía 26 contactos eléctricos en cada uno de sus lados. Los contactos de un lado de cada rotor estaban conectados con los del otro lado, entremezclados. La corriente eléctrica procedente de alguno de los contactos de la parte interior del panel frontal, entraba en contato con el frente del rotor más exterior y salía por algún contacto en su parte posterior. Entonces pasaría de forma similar a través del rotor central y finalmente por el rotor más interior. Detrás de este rotor existía una instalación fija de 13 cables, cada uno unía dos contactos de la parte trasera del rotor más interior; este dispositivo era conocido como el reflector. Después de pasar el reflector, la corriente recorrería el camino de regreso hacia el panel frontal. Necesariamente, ambas vías, de ida y de vuelta, habrían de ser diferentes. Una vez en el panel, la corriente iluminaría la correspondiente bombilla.

Es evidente que si cierta posición de los rotores, transforma una «R» en una «J», también convertirá la «J» en la «R». Tras cifrar u n carácter, el rotor exterior avanza una posición antes de cifrar la siguiente letra. Cuando el rotor exterior ha completado una revolución, el central avanza una posición, si éste se mueve 26 veces, el rotor interior adelanta una posición.

Antes de usar la máquina, las posiciones de los tres rotores pueden ser colocadas en una situación inicial predeterminada. Como cada rotor puede posicionarse en cualquiera de las 26 posibilidades, el número de configuraciones posibles con rotores fijos es 17.576 (variaciones con repetición de 26 elementos tomados de tres en tres=263. El período de la máquina es también 263.

Para los lectores que no estén familiarizados con el concepto de período de una máquina cifradora, este quiere decir que si el mismo carácter fuera cifrado repetidamente, la máquina produciría una secuencia aparentemente aleatoria de caracteres, esta secuencia se repetiría una vez que el período ha sido superado. Si el período de la máquina es más largo que el más largo de los mensajes a transmitir, entonces el período no es de vital importancia, pero el número de configuraciones si que lo es. Desde el punto de vista militar, con 263 configuraciones se puede intentar romperlas, utilizando el método de probarlas todas.

Antes de pasar a describir las modificaciones hechas en ENIGMA para su uso militar, hay que resaltar que nos hemos tomado la libertad cuando se escribió el programa de simulación de ENIGMA, de incorporar una mejora. Incluimos un carácter para el ESPACIO, para el cual, utilizamos el asterisco. Como ENIGMA requiere un número par de caracteres, también añadimos el caracter . Este carácter puede emplearse como un carácter de control para la impresora, o bien para indicar que el carácter que le sigue debe ser interpretado como un número (en ese caso, «A»=1 ... «J» = 0) o bien como una «ñ».

La versión militar

El primer paso para darle a ENIGMA un uso militar fue hacer los rotores intercambiables e incrementar el número de rotores de tres a cinco. Aunque sólo tres rotores pueden ser usados a la vez, esto multiplica el número de combinaciones por 60. Incluso con nuestra máquina no estándar de 28 caracteres, sólo podemos conseguir 1.317.120 configuraciones, lo cual no es todavía suficiente.

La siguiente modificación fue realmente significativa, se incorporó un tablero de conexión (como los que utilizaban las antiguas telefonistas para conectar a dos usuarios). Este tablero contenía clavijas correspondiente a cada uno de los caracteres usados; uniendo dos caracteres en este tablero, ambos serían intercambiados antes y después de pasar los rotores.

Un ejemplo del efecto de esta modificación es que si son usados los cambios (A.X), (J,Y) y el carácter «A» es cifrado, seguiría estos pasos: la «A» se cambia con la «X», la «X» pasa por los rotores, transformándose, digamos en «Y», que finalmente pasa a través del tablero de conexión para dar «J». Hay que hacer notar que si la «A» se convierte en «X» también la«X» se transforma en «A», siempre preservando el principio de autoinversión de la máquina.

Cuando se empezó a usar el tablero de conexión por los ejércitos alemanes se podían realizar siete cambios, que posteriormente se incrementaron a 10. Nuestro programa permite hasta 12 cambios. El número de formas de intercambiar 12 pares de caracteres de entre 28 es sorprendentemente grande: 647.489.408.200.000, y es evidente que cuando multiplicamos este número por las 1.317.120 configuraciones de los rotores, el resultado es un número suficientemente grande como para volver la máquina razonablemente segura.

Un punto final, relativo a la ENIGMA militar es que para poder colocar los rotores en una posición inicial dada, era necesario marcarlos de alguna manera. En la máquina civil estaban marcados en su exterior con caracteres que podían ser vistos a través de unas ventanas en la parte superior del armazón de la máquina. En la versión militar se incorporó una complicación más: cada rotor estaba equipado con un anillo, marcado con todos los caracteres, el cual, antes de insertar el rotor en la máquina podía ser dispuesto de tal forma, que cualquier carácter del anillo correspondiese a una posición marcada del núcleo. Esto no incrementa el número actual de configuraciones, pero significa que, aunque la disposición de los rotores sea conocida, no se descubren las posiciones del núcleo que es lo que importa.

Indicadores

Para poder utilizar ENIGMA, debemos desarrollar un sistema que permita a la persona que va a recibir el mensaje, inicializar la máquina para poder decodificar la transmisión. Una forma de conseguir esto, sería editar instrucciones escritas para cada cifrador, detallando por completo la inicialización de la máquina, que ha de ser usada en un día particular. El problema de este método es que cada mensaje transmitido en el mismo día usa exactamente la misma colocación, lo cual significa que si una orden necesita ser transmitida, digamos a todas las unidades del Frente Occidental, entonces el enemigo, recibiendo numerosas intercepciones del mismo mensaje, asumiría que algo gordo iba a ocurrir y pondría a todas sus unidades del Frente Occidental en alerta total. Para solventar este problema, es necesario que el cifrador escoga una parte de la máquina que él ha de inicializar, para esto, debemos disponer de un sistema para transmitir la colocación usada como parte de la comunicación; la parte de un mensaje que se utiliza para indicar cómo decodificarlo se llama indicador.

En los primeros tiempos, la situación del tablero de conexiones, rotores usados y posiciones de los anillos se describían en instrucciones escritas para cada día. También se incluía una posición base de los rotores. El cifrador dispondría la máquina según las órdenes escritas y colocaría los rotores en su posición base (por ejemplo K,M,O), pero tenia que decidir qué posiciones de rotores utilizaría para transmitir el mensaje (por ejemplo, W,E,Q). Entonces, cifraría WEQ dos veces, es decir WEQWEQ, con los rotores en la posición base, obteniendo JDYFIR, y estas seis letras serían usadas como un prefijo para el mensaje, que debía cifrarse una vez que los rotores se volvieran a colocar con WEQ. La debilidad de este sistema consistía en la repetición de elementos que pudieron explotar los matemáticos polacos para romper los mensajes.

Un sistema de indicadores posterior permitía al cifrador escoger la colocación base de los rotores, así como la actual situación de los mismos en el momento de la transmisión. La situación base de rotores era transmitida como un texto sin cifrar al inicio del mensaje, que llevaría, usando el ejemplo del párrafo anterior, el indicador de nueve letras KMOJDYFIR. La posición inicial de los rotores podía transmitirse sin cifrar, dado que el conocimiento de la situación de los rotores es inútil si no se conoce la disposición de los anillos.

Si algún lector desea usar el programa para enviar mensajes cifrados, le recomendamos el segundo sistema pero sin la repetición, dando un indicador de seis letras.

Consejos al codificar

Idealmente, deberías cifrar dos veces todos los mensajes. Al principio de un mensaje, incluye una cantidad aleatoria de caracteres de «basura» y rompe las palabras largas usando caracteres de poco uso. Evita usar frases hechas, fórmulas y modismos, particularmente al principio del mensaje.

Es fácil caer en el error de pensar que un sistema de cifrado es lo suficientemente bueno como para que puedas iniciar cada mensaje con: «Oficina del Comandante...».

Si usas un sistema indicador, deberías cambiar el sistema ocacio-nalmente, quizás cada tres meses, un cambio simple como añadir un par de caracteres mudos antes del indicador puede ser suficiente.

Usando el programa

Una vez corriendo el programa, lo primero que tienes que hacer es disponer el tablero de conexiones. Inicialmente deberás decirle si quieres hacer intercambios. Después, si has respondido afirmativamente, te preguntará algo como: «A cambia con?:», a lo que debes responder con un carácter (A-Z, *, ). Como

te habrás dado cuenta «A cambia con A» significa que la clavija del tablero de conexiones no es usada. Durante esta fase tienes la posibilidad de visualizar los caracteres que van quedando libres tras cada intercambio.

Una vez dispuesto el tablero de conexiones, la siguiente tarea consiste en seleccionar los rotores. Los cinco rotores están designados con las letras A, B, C, D y E, y la posición de éstos en la máquina es determinada por el orden en el que los seleccionas. Introduciendo A,C,E, por ejemplo, A sería el rotor exterior, C el central y E el interior.

Ahora, has de colocar la posición de anillo correspondiente a la posición 1 del núcleo, una para cada rotor, intro-duciend? uno de los 28 caracteres ya mencionados. De forma similar debes elegir la posición inicial de cada rotor, completándose con esto la configuración inicial de la máquina. Recuerda que debes pulsar ENTER cada vez que completes una fase.

Ya puedes introducir el texto del mensaje. Si quieres transmitir texto sin cifrar como parte de un sistema indicador al principio del mensaje, puedes utilizar el «$» para acotarlo. Otra característica referente al uso de sistemas indicadores es la facilidad de reinicializar rotores durante un mensaje; esto se hace con «#». Una vez finalizada la introducción del mensaje debes pulsar ENTER y la máquina cifrará el texto.

En cualquier parte del programa, ENTER sirve para trasladar el control a la siguiente fase del mismo, y puede usarse ESC o CTRL C para salir de él. Es posible obtener una copia en papel del mensaje cifrado seleccionando dicha opción al inicio de la rutina de salida del texto. El programa tarda una media de 0.35 segundos por carácter, desde que el texto es introducido hasta que está lista la codificación.

Conclusión

Se podría determinar la configuración de la máquina, usada para cifrar un texto, conociendo este y el texto codificado?. Este puede parecer un problema irreal, pero es una situación que ocurre a menudo en el mundo real, por ejemplo, se decide que cierto mensaje no es peligroso y puede ser transmitido sin cifrar, pero alguien lo hace. Si el enemigo puede encontrar, utilizando esa información, la configuración usada, entonces todo el tráfico de mensajes cifrados de ese día se vería muy comprometido.

Amstrad User

ENIGMA
(c) AMSTRAD USER

Author(s): ???

★ NOTE (USUARIOS DE AMSTRAD PCW 8256-8512) : Los usuarios de un PCW deben teclear el mismo listado que los de CPC pero cambiando estas líneas. Pueden ir siguiendo los dos listados simultáneamente o, para hacerlo más sencillo, teclear primero el listado para CPC y, una vez completo, teclar las líneas que se indican en este cuadro, ya que, como coinciden los números, las de este cuadro sustituirán a las del listado para CPC.

★ YEAR: 1986
★ LANGUAGE:
★ GENRE: BASIC , PCW , REFLEXION
★ LiCENCE: LISTING

 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Enigma    (Amstrad  User)    (PCW  Patch)    SPANISH    LISTINGDATE: 2022-03-08
DL: 98
TYPE: PDF
SiZE: 467Ko
NOTE: 2 pages/PDFlib v1.6

» Enigma    (Amstrad  User)    SPANISH    LISTINGDATE: 2022-03-08
DL: 108
TYPE: PDF
SiZE: 2218Ko
NOTE: 8 pages/PDFlib v1.6

Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Dump, Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 519 millisecondes et consultée 355 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.