Sommaire                                                       ENIGMA                           English page

 

 

 

Enigma et ses variantes est une machine électromécanique allemande de cryptage de messages dont l'usage fut répandu au cours de la 2ème G.M.

Elle est le symbole de la victoire des briseurs de codes Alliés, dont on peut estimer que leurs efforts ont écourté la guerre d'au moins un an.

De nombreux sites évoquent l'histoire et le fonctionnement de cette machine et nous invitons le visiteur à lire également ce FICHIER PDF de 92 pages réalisé par des étudiants et fort bien documenté.

A moins de disposer d'un portefeuille bien garni (plus de 100 000 €) et beaucoup de chance, l'acquisition d'une machine d'époque est une véritable utopie.

Pour faire revivre cette machine, il n'y a guère que cinq solutions :

- En construire une ! (pas tout à fait une énigma mais voir quand même sur http://www.tatjavanvark.nl/index.html#works) c'est  absolument prodigieux.

- La réaliser en papier (eh oui ! Ça marche) avec les indications données sur le site : http://dave-reed.com/DIYenigma/index.html

- Utiliser un programme de simulation sur PC :  http://cryptocellar.org/simula/  ou http://users.telenet.be/d.rijmenants/en/enigmasim.htm

et même une feuille de calcul EXCEL :
http://chrisrae.com/programming/index.html  

Ou bien...

- Construire une réplique électronique :

            

C'est cette dernière solution que nous avons choisie, largement facilitée par la disponibilité d'un kit comprenant toutes les pièces nécessaires.

Ce kit est en vente sur Internet pour environ 130,00 € hors frais de port : http://www.cryptomuseum.com/kits

Dans la boite on trouve :

- un circuit époxy double face à trous métallisés, sérigraphié et de qualité professionnelle.

- tous les composants nécessaires ainsi que le microcontrôleur programmé.

- Deux feuilles A3 recto verso donnant les implantations et le schéma complet.

- Une notice (en anglais) reliée de 68 pages en A4 qui est un modèle du genre. Elle reprend, étape par étape, le montage du circuit dans le style Heathkit, pour ceux qui connaissent. La mise en route est ensuite décrite pas à pas. Il y a également la description d'une boite en bois destinée à l'habiller.
Un chapitre entier est consacré avec un luxe de détails au fonctionnement de la machine mécanique et à son histoire. Il y a même des exemples de messages à déchiffrer !

Bref, un travail remarquable à la portée d'un néophyte sachant quand même manier le fer à souder et la pince coupante.

Le montage fonctionne dès la dernière soudure effectuée. Il ne reste plus qu'à le mettre en boite et à y ajouter éventuellement quelques accessoires.

C'est ce qui va faire l'objet des descriptions suivantes.

Nous avons mis en téléchargement ICI un dossier contenant l'ensemble des plans et schémas.

 

ALIMENTATION

La platine est prévue pour être alimentée par un adaptateur 8 à 12 V alternatif (non fourni) ou par des batteries de 8 à 16 V.
Nous avons choisi de mettre des batteries à l'intérieur du coffret et rechargées par un petit montage électronique. La prise de l'adaptateur (alternatif ou continu) a été placée sur la droite de la platine Steckerbrett. Au-dessous, nous avons une diode LED rouge "batterie faible" qui clignote pour indiquer qu'il est nécessaire de recharger les batteries.
Un interrupteur sub-miniature a été placé au centre de la Steckerbrett dans un trou de fixation non utilisé.

 

ÉCOUTE DU MORSE

La machine mécanique Enigma ne produit pas directement un code morse. Autour de la machine, il y a deux opérateurs. Le premier se contente de taper les lettres du message à coder, une par une en attendant à chaque fois que le deuxième opérateur ait bien noté la lettre provenant du codage. C'est ce deuxième message qui est alors transmis par un opérateur radiotélégraphiste.
Dans la version électronique, cette étape est intégrée dans la machine et on peut entendre les lettres manipulées en morse à condition d'y adjoindre un buzzer ou un oscillateur basse-fréquence. On pourrait même envisager de manipuler directement un émetteur avec ce signal mais c'est strictement interdit par la législation (cryptage). A noter une sortie RS232 qui permet de brancher un PC en mode terminal ou bien de relier deux machines.
La prise RS232 a été placée à gauche sur la platine Steckerbrett avec en dessous, la diode verte du témoin de fonctionnement du microcontrôleur qui a été déportée de son endroit initial.

 

LE MONTAGE MECANIQUE

Dans notre projet, nous avons (malheureusement !) caché une grande partie de l'électronique.

Par rapport au montage original, les afficheurs sont soulevés de 6 ou 7 mm par une barrette intermédiaire pour les mettre à la même hauteur que le cache des lettres ce qui va permettre de recouvrir l'ensemble par une plaque horizontale (à 17 mm du circuit). De même, sur la platine Steckerbret les composants dépassant la hauteur des circuits intégrés (réseaux de résistances et condensateurs de découplage), ont été soudés à l'envers du circuit.

Une platine fixée au-dessous du circuit imprimé par des entretoises supporte les circuits imprimés de l'alimentation et du générateur de signaux morse.

Le châssis est perforé au niveau des LEDs jaunesdu Lampenfeld de manière à éclairer les lettres sur toute leur surface. Comme dans l'original, les lettres sont blanches sur fond noir (impression jet d'encre sur un transparent ou utilisation du mylar fourni maintenant avec le kit). Une feuille de plastique dépolie, également fournie, est placée contre le mylar pour uniformiser la luminosité traversant les lettres.

          

Cette plaque en aluminium est peinte en noir satiné (époxy cuit au four) mais pourrait également être anodisée et colorée en noir.

Au niveau des afficheurs une découpe avec filtre rouge permet d'améliorer le contraste.

Les touches posent un petit problème mécanique. Pour rester dans la simplicité et utiliser au maximum des produits standards, nous avons prévu d'utiliser des douilles banane châssis de 4 mm et du tube laiton de diamètre extérieur 4 mm et intérieur 3 mm vendu en longueur de 1 m en magasin bricolage (LEROY, CASTORAMA, BRICONAUTES, etc.). La douille est éventuellement élargie à 4,1 mm si le tube ne coulisse pas bien et la base est fendue à l'aide d'une fraise scie à denture fine de 1,6 mm. Ceci permet, avec un petit bout de corde à piano laiton de 1,5 mm fixé dans le bas du tube, d'assurer l'anti-rotation de la touche.

Vu le nombre de pièces à réaliser (35 au total) et pour obtenir un centrage rigoureux du perçage du tube laiton, il est nécessaire de fabriquer un gabarit dans un bloc d'acier.
Le disque creux recevant la pastille ronde est usiné au tour dans une barre laiton de 12 mm, par une fraise en bout de 10 mm et percé au foret de 4 mm
.

Les pastilles sont obtenues avec un découpoir "home made" adapté à la dimension intérieure des touches :



Nous avons également réalisé une "table de collage" destinée à maintenir les touches sur leur tige à la bonne hauteur pendant la prise de l'Araldite. Les lettres sont collées en dernier sur le montage terminé, ceci pour compenser les erreurs angulaires et avoir des lettres parfaitement droites.

Des écrous laiton de 6 au pas de 0,75 ont été taillés dans une barre hexagonale de 10 sur champs. Ils sont destinés à remplacer un des écrous de chaque douille, l'autre servant de contre-écrou.

Taraudage sur le tour

Le montage avance...

    

...et est câblé, testé, reste à faire une boite en bois.



 

MONTAGE FINAL

Le coffret en bois a été réalisé en pin et vernis. Dans le fond de celui-ci, nous avons placé un interrupteur miniature relié au strap N°2 de la platine. Cela permet de choisir le fonctionnement avec génération du morse ou sortie RS232 sur laquelle nous reviendrons.

  
Dans le couvercle, douze cordons sont prévus pour faire les liaisons éventuelles entre les douilles du Steckerbrett.

            

LIAISON RS232

La liaison série permet de faire afficher sur un terminal informatique les caractères codés ou bien de relier deux machines.
Le plus simple est d'utiliser l'HyperTerminal fourni avec Windows et qui se trouve dans : Tous les programmes/Accessoires/Communications/HyperTerminal. Les paramètres de transmission sont : 9600 bauds, data 8 bits, 1 bit de stop et pas de parié (9600,8N1)

Il existe cependant d'autres programmes comme Realterm, TeraTerm, Termite, plus ou moins sophistiqués.

 

ENIGMA - ARDUINO

 

 

 

Encore plus simple mais parfaitement fonctionnelle, une Enigma avec un seul circuit intégré, un afficheur LCD de 2 lignes et un clavier d'ordinateur.

C'est un montage trouvé sur le Net que nous avons testé et adopté. Prix de revient, moins de 10 euros !

Par rapport à la description originale, nous avons utilisé un Arduino Nano que nous avons fixé au dos de l'afficheur. Un connecteur Mini DIN 6 broches permet de brancher un clavier PS2 d'ordinateur. En cas d'utilisation d'un clavier USB, il suffira d'employer un adaptateur que l'on trouve facilement sur eBay.

Pour rendre l'appareil totalement autonome, il est alimenté par une pile de 9 Volts placée dans un support à tiroir. L'utilisation n'étant pas quotidienne et la consommation faible (50 mA), la pile peut durer longtemps et servir dans d'autres appareils.

Le programme a été légèrement modifié pour l'adapter au brochage du LCD et à l'utilisation d'un clavier AZERTY.

Le sketch modifié :    

Sur le site de l'auteur on trouvera le sketch original et le mode d'emploi : http://apcmag.com/arduino-projects-enigma-cipher-machine.htm


Le circuit imprimé vu côté composants (ne pas oublier le strap entre VDD et A)

 

Mode opératoire pour crypter et décrypter

Schéma très simplifié, les circuits aller-retour sont doubles et les connexions sur les rotors ne représentent pas la réalité.

Tout d'abord il faudra se procurer le livre de code indispensable pour initialiser la machine. Chaque page correspond à un mois et a donc 29, 30 ou 31 lignes. Plus prosaïquement nous allons utiliser un programme qui permet de le générer mois par mois. Ce programme se trouve à l'adresse suivante :
http://users.telenet.be/d.rijmenants/en/codebook.htm

Nous allons crypter un message correspondant au code du 29 de ce mois. A la ligne  Tag 29 nous avons les paramètres initiaux de la machine.
Pour simplifier, la machine est une Enigma à 3 rotors sur les 5 disponibles et réflecteur UKW B.

Tag est le jour du mois.
Walzenlage
est la sélection et l'ordre des rotors dans la machine, de gauche à droite.
Ringstellung est la position de la bague de chaque rotor. Ici on a des chiffres qui correspondent à l'ordre des lettres de l'alphabet: 22 est la lettre V, 13 la lettre M et 16 la lettre P. Les premières Heeres Enigma (Wehrmacht et Luftwaffe) comportaient des chiffres sur la périphérie des rotors ce qui n'a plus été le cas avec les M3 Naval Enigma (Kriegsmarine). Dans le couvercle de ces dernières figurait une table de correspondance.
Steckerverbidungen indique la position des câbles reliant les douilles sur le tableau de fiches (Steckerbrett). Dans notre exemple la douille A est reliée à la douille U, la B à la W, etc. Ici sont employés les dix câbles livrés avec la machine sur les treize possibles. Il ne sert à rien d'avoir des câbles supplémentaires car cela n'augmente pas la force de cryptage.
Kenngruppen sont les groupes d'identification.

L'opérateur commence par choisir l'un des quatre groupes d'identification à trois lettres en y ajoutant deux lettres prises au hasard, au début du groupe. Par exemple si on choisit le troisième groupe YSU on pourrait avoir ENYSU, BZYSU, XWYSU etc..
Dans notre simulation nous prendront le groupe VZYSU. Ce groupe sera placé au début du message mais il n'en fera pas partie et donc ne sera pas crypté.

Après avoir indexé chaque roue selon le "Ringstellung" et les avoir placées dans le bon ordre dans la machine, l'opérateur enfiche les câbles dans les douilles qui correspondent au "Steckerverbindungen".
Ensuite il va choisir au hasard une position de départ des rotors (Grundstellung) ainsi qu'une clef (Spruchschlussel).
Par exemple GZF et HSE.
Il tourne ensuite les rotors de façon à afficher GZF et frappe au clavier HSE ce qui allume successivement les lettres OFO. C'est la clef cryptée. GZF et OFO seront dans l'en-tête du message.

L'opérateur, après avoir placé de nouveau les rotors dans la position HSE, tape le message découpé en groupes de cinq lettres et différentes conventions sont utilisées pour transmettre les chiffres, ponctuations et abréviations. Par exemple le point ou l'espace entre mots est remplacé par un X et les chiffres sont en toute lettre.
L'assistant de l'opérateur note les lettres issues du cryptage, les unes après les autres sur une feuille spéciale appelée Spruch, contraction de Funkspruch (radio télégramme), qui comporte des blocs de cinq colonnes. Y est indiqué également l'en-tête avec le nom de l'émetteur, le destinataire, l'heure, le nombre total de lettres la position de départ et la clef cryptée.
Cette feuille sera donnée à l'opérateur radio chargé de transmettre le message en morse sur les ondes.

Voici notre message test avec en dessous les lettres traduites par la machine et visualisées par l'allumage des lampes :

CEXTE     XTEXA    XETEX   CODEX   AVECX  UNEXE   NIGMA  XMXTR   OISXN   AVALX
WIEVP    QUDWX   IGLRD    SUOQE    NBQJJ   BUZGO  QUWRY  JTTIG      CMHTI   PMRRV

Nous avons maintenant le "Funkspruch" que le destinataire va devoir déchiffrer

VOUS DE MOI = 55 = GZF OFO =
VZYSU   WIEVP   QUDWX   IGLRD   SUOQE
NBQJJ    BUZGO  QUWRY   JTTIG     CMHTI
PMRRV

L'opérateur de déchiffrement va d'abord s'assurer de la date du message en repérant dans le "Kenngrupen" de sa feuille de code, trois lettres du premier groupe. Ici c'est YSU que l'on retrouve pour la date du 29 février.
Il va ensuite paramétrer la machine selon les données du 29 et placer les rotors dans la position GZF. Il tape ensuite la clef cryptée OFO et obtient la clef du message HSE. Ces trois lettres indiquent la position initiale des rotors pour décrypter le message. Le décryptage commence par le deuxième groupe de cinq lettres, le premier n'en faisant pas partie.
Pendant la frappe on ne peut pas revenir en arrière, il faut donc faire très attention de ne pas faire d'erreur sinon la suite du message est illisible.

 Sommaire