Outil pour décoder/encoder avec Enigma automatiquement. Simulez les communications allemande pendant la seconde guerre mondiale.
Machine Enigma - dCode
Catégorie(s) : Chiffre Poly-Alphabétique
dCode est gratuit et ses outils sont une aide précieuse dans les jeux, les maths, les énigmes, les géocaches, et les problèmes à résoudre au quotidien !
Une suggestion ? un problème ? une idée ? Écrire à dCode !
La Machine Enigma était un appareil électromécanique de chiffrement utilisé par les forces armées allemandes pendant la Seconde Guerre mondiale pour chiffrer leurs communications.
La Machine Enigma utilise un système de roues rotatives (rotors) et de câblages électriques pour chiffrer les messages par substitution polyalphabétique.
La machine Enigma de base comprend 1 tableau de connexion, 3 rotors et 1 réflecteur, chaque élément pouvant être configuré indépendamment (les réglages de la machine changeant quotidiennement).
Lorsqu'une touche est pressée par l'utilisateur, le ou les rotors tournent d'un cran puis un signal électrique part du clavier, traverse le tableau, puis les rotors de droite à gauche, puis le réflecteur, puis les rotors de gauche à droite, puis à nouveau le tableau. A chaqué étape, le cablage des éléments transforme la valeur de la lettre en une autre. A la fin, la lettre chiffrée s'allume sur le dessus de la machine.
Le processus de déchiffrement est identique au chiffrement. Pour un réglage donné, la frappe d'une lettre L1 allume une lettre L2, et réciproquement la frappe de la lettre L2 allume la lettre L1.
Un rotor est un cylindre avec une roue crantée munis d'un ensemble de contacts électriques internes permettant de réaliser une permutation des lettres de l'alphabet.
Exemple : Le rotor nommé I a pour cablage EKMFLGDQVZNTOWYHXUSPAIBRCJ, ainsi la lettre A (position 1 dans l'alphabet) serait transformée en E (position 1 du rotor), la lettre B (position 2) serait transformée en K etc.
La configuration des rotors était nommée Walzenlage et décrivait l'ordre des rotors de gauche à droite. En effet, l'utilisateur pouvait insérer plusieurs rotors dans la machine, dans n'importe quel ordre.
Exemple : 'VI - II - III' indique que le rotor de droite est III, puis celui du milieu est II est celui de gauche est VI.
dCode accepte les rotors suivants :
Nom | Alphabet/Cablage | Encoche(s) |
---|---|---|
I | EKMFLGDQVZNTOWYHXUSPAIBRCJ | Q |
II | AJDKSIRUXBLHWTMCQGZNPYFVOE | E |
III | BDFHJLCPRTXVZNYEIWGAKMUSQO | V |
IV | ESOVPZJAYQUIRHXLNFTGKDCMWB | J |
V | VZBRGITYUPSDNHLXAWMJQOFECK | Z |
VI | JPGVOUMFYQBENHZRDKASXLICTW | M,Z |
VII | NZJHGRCXMYSWBOUFAIVLPEKQDT | M,Z |
VIII | FKQHTLXOCBJSPDZRAMEWNIUYGV | M,Z |
BETA | LEYJVCNIXWPBQMDRTAKZGFUHOS | - |
GAMMA | FSOKANUERHMBTIYCWLQPZXVGJD | - |
IC | EKMFLGDQVZNTOWYHXUSPAIBRCJ | A,B,C,E,F,G,I,K,L,O,P,Q,S,U,V,W,Z |
IIC | HQZGPJTMOBLNCIFDYAWVEUSRKX | A,C,D,F,G,H,K,M,N,Q,S,T,V,Y,Z |
IIIC | UQNTLSZFMREHDPXKIBVYGJCWOA | A,E,F,H,K,M,N,R,U,W,X |
IR | JGDQOXUSCAMIFRVTPNEWKBLZYH | N |
IIR | NTZPSFBOKMWRCJDIVLAEYUXHGQ | E |
IIIR | JVIUBHTCDYAKEQZPOSGXNRMWFL | Y |
IK | PEZUOHXSCVFMTBGLRINQJWAYDK | Y |
IIK | ZOUESYDKFWPCIQXHMVBLGNJRAT | E |
IIIK | EHRVXGAOBQUSIMZFLYNWKTPDJC | N |
Le réflecteur Enigma est un composant statique de la machine, situé après les rotors (à gauche). Son cablage interne réalise une permutation réciproque/symétrique des lettres de l'alphabet. Son rôle est de changer la valeur de la lettre et de renvoyer le courant électrique vers les rotors pour un second passage.
Exemple : Le réflecteur Cthin a pour cablage RDOBJNTKVEHMLFCWZAXGYIPSUQ, ainsi la lettre A (position 1 dans l'alphabet) serait transformée en R (position 1 du rotor) et réciproquement la lettre R serait transformée en A.
dCode accepte les réflecteurs suivants :
Nom | Alphabet/Cablage |
---|---|
A | EJMZALYXVBWFCRQUONTSPIKHGD |
B | YRUHQSLDPXNGOKMIEBFZCWVJAT |
C | FVPJIAOYEDRZXWGCTKUQSBNMHL |
BTHIN | ENKQAUYWJICOPBLMDXZVFTHRGS |
CTHIN | RDOBJNTKVEHMLFCWZAXGYIPSUQ |
UKWR | QYHOGNECVPUZTFDJAXWMKISRBL |
UKWK | IMETCGFRAYSQBZXWLHKDVUPOJN |
Les anneaux (ou bagues) de roues sont des éléments ajustables situés sur les rotors. Ils permettaient de définir un décalage supplémentaire entre les lettres et leur position sur le rotor (la roue n'est pas fixe et peut être décalée par rapport au rotor).
Exemple : 13-20-03 est une configuration possible pour 3 rotors (de gauche à droite). Les nombres font référence à ceux écrits sur les rotors (numérotés de 01 à 26).
Parfois les positions sont notées en lettres l'équivalent est donné par A=01, B=02, Z=26 (codage A1Z26).
Le Grundstellung (position de base en allemand) fait référence à la configuration initiale des rotors de la Machine Enigma avant de commencer à chiffrer un message. La position est généralement notée avec un groupe de 3 lettres. Les lettres font référence à la position des rotors (visibles sur le dessus de la machine)
Exemple : EXS est une configuration possible pour 3 rotors (de gauche à droite E,X,S).
A change frappe de touche, le rotor le plus à droite tourne d'un cran. Un système d'encoche permet d'entrainer les rotors suivants (à la manière d'un odomètre).
La machine Enigma avait une particularité (anomalie ?) pour la rotation du troisième rotor : le double stepping (double pas). Le rotor central tourne ainsi 2 fois lors de la rotation du rotor de gauche, une fois avant et une fois en même temps. Le quatrième rotor, quand il existe, ne tourne jamais.
Le tableau de connexions (ou pupitre ou Plugboard) est situé à l'avant de la machine et est composé de prises et de câbles. Il permet de reconfigurer les connexions entre les lettres de l'alphabet.
L'utilisateur pouvait brancher des câbles entre les différentes prises pour échanger les correspondances entre les lettres.
Exemple : En connectant la prise marquée A à celle marquée B, chaque fois que la machine codait (ou décodait) la lettre A, elle serait transformée en B et vice versa.
Il y a donc au maximum 13 connexions possibles (les 26 lettres de l'alphabet se regroupent en 13 paires).
Les premières machines Enigma ont été vendues par la société Chiffriermaschinen Aktien-Gesellschaft dès 1923 en Allemagne.
La première version commerciale comportait 3 disques nommés IC, IIC, et IIIC, elles ne comportaient pas de de tableau ni de réflecteur et devaient donc passer du mode chiffrement au mode déchiffrement.
En 1930, la marine allemande adopte la version M3 (dite Funkschlüssel) comportant un réflecteur (parmi B ou C) et un tableau de connexions et 3 rotors parmi 5 disponibles (I, II, III, IV et V)
In 1938 et 1939, 3 nouveaux rotors sont ajoutés à la version M3 (VI, VII et VIII)
En 1942, la marine adopte une version M4 modifie la M3 pour remplacer le réflecteur par un 4ème rotor (plus fin) à choisir parmi BETA ou GAMMA et un réflecteur (plus fin) à choisir parmi 'BTHIN ou CTHIN.
Une version Suisse nommée K proposait 3 rotors parmi IK, IIK, IIIK et un réflecteur UKWK
Une version Railway (pour les chemins de fers) nommée R proposait 3 rotors parmi IR, IIR, IIIR et un réflecteur UKWR
Le message chiffré n'est constitué que de lettres (Le clavier étant limité aux 26 lettres de l'alphabet), aucune ponctuation, aucun chiffre, aucun symbole. Les éventuels nombres sont écrits en lettres.
Une lettre n'est jamais chiffrée avec elle-même (aucune lettre clair n'est identique à sa lettre chiffrée).
Le point crucial qui empêche une lettre d'être chiffrée en elle-même est le réflecteur. Le réflecteur connecte les paires de contacts électriques, mais ne permet jamais qu'un contact soit relié à lui-même. Ainsi, si une lettre A est tapée, le courant passera à travers le tableau de connexion, les rotors, arrivera au réflecteur et sera envoyé de nouveau à travers les rotors et le tableau de connexion. Mais comme le réflecteur ne peut pas renvoyer le courant au même endroit d'où il vient, la lettre A ne peut pas être chiffrée en A.
Cette caractéristique de l'Enigma était en fait une faiblesse qui a été exploitée par les cryptanalystes alliés pour aider à casser le code Enigma. En sachant qu'une lettre ne pouvait pas être chiffrée en elle-même, et en connaissant ou supposant une partie du message connu, ils pouvaient éliminer certaines possibilités lorsqu'ils tentaient de déchiffrer des messages, ce qui réduisait le nombre de configurations à tester.
Tout dépend de la machine utilisée, mais en prenant le cas général à $ r $ rotors à choisir parmi $ n $ modèles de rotors et un tableau de connexions à $ w $ fils.
— Walzenlage : Les $ r $ rotors parmi $ n $ représentent $ \binom{n}{r} = \frac{n!}{(n-r)!} $ combinaisons
— Ringstellung : Les $ r $ rotors peuvent être positionnés indépendamment dans 26 positions, soit $ 26^r $ combinaisons
— Steckerverbindungen : Les $ w $ fils relient $ 2w $ lettres parmi les 26 de l'alphabet soit $ \frac{26!}{(26-2w)! \times 2^w \times w!} $ combinaisons.
Ainsi, la machine Enigma possède $ \frac{n!}{(n-r)!} \times 26^r \times \frac{26!}{(26-2w)! \times 2^w \times w!} $ combinaisons.
Exemple : Pour la machine Enigma M3 (avec $ r = 3 $, $ n = 5 $, $ w = 10 $), celà représente $ 158962555217826360000 \approx 1.59 \cdot 10^{20} $ combinaisons.
La mise à jour du simulateur Enigma par dCode en 2024 a corrigé 3 éléments :
— L'ordre des rotors, auparavant dCode enregistrait les rotors de droite à gauche, maintenant c'est de gauche à droite (de même pour les positions et les anneaux).
— Le tableau de connexion ne fonctionnait que si il n'y avait pas de tirets entre les paires de lettres.
— L'anomalie du double stepping créait parfois un décalage inopportun.
Enigma a été inventée par l'Allemand Arthur Scherbius, reprenant un brevet du Néerlandais Hugo Koch, datant de 1919.
dCode se réserve la propriété du code source pour "Machine Enigma". Sauf code licence open source explicite (indiqué Creative Commons / gratuit), l'algorithme pour "Machine Enigma", l'applet ou snippet (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou les fonctions liées à "Machine Enigma" (calculer, convertir, résoudre, décrypter / encrypter, déchiffrer / chiffrer, décoder / encoder, traduire) codés en langage informatique (Python, Java, C#, PHP, Javascript, Matlab, etc.) ou les données, en téléchargement, script, ou les accès API à "Machine Enigma" ne sont pas publics, idem pour un usage hors ligne, PC, mobile, tablette, appli iPhone ou Android !
Rappel : dCode est gratuit.
Le copier-coller de la page "Machine Enigma" ou de ses résultats est autorisée (même pour un usage commercial) tant que vous créditez dCode !
L'exportation des résultats sous forme de fichier .csv ou .txt est gratuite en cliquant sur l'icone export
Citer comme source bibliographique :
Machine Enigma sur dCode.fr [site web en ligne], consulté le 02/12/2024,