Reproduire en moins bien les innombrables descriptions de cet appareil qui pullulent sur l’Internet ne présente strictement aucun intérêt. On va dans ce premier chapitre résumer le strict minimum pour pouvoir ensuite analyser le fonctionnement de l’appareil électromagnétique et le traduire en langage C++ pour aboutir à un comportement virtuel analogue. Il est hors sujet ici d’aborder l’utilisation opérationnelle de cette codeuse, la richesse d’internet sur ce thème étant considérable. Donc on oublie les diverses version de cette famille de codeuse pour aller au plus simple.
Architecture d’une ENIGMA.
Créer un émulateur avec une carte Arduino va consister à agencer des algorithmes qui seront capables de reproduire le comportement de chaque unité fondamentale de cette codeuse, que ce soit électrique ou mécanique. Vous avez largement exploré quelques articles sur internet et vous savez qu’elle ressemble à une machine à écrire et a été conçue pour automatiser le chiffrement par substitution dynamique. L’opérateur frappe les caractères du texte à encoder ou décoder sur le Clavier 4 qui n’offre que les vingt-six lettres de l’alphabet. (Pas de chiffres, et pas de ponctuation, y compris pas d’espace.) Outre le clavier, en 3 se trouve le tableau des ampoules électriques de décodage. Lorsque l’opérateur enfonce une touche sur 4, la lettre commence à transiter à travers les trois Rotors de codage 2 du « brouilleur ». Chaque rotor transforme la lettre qu’il « reçoit » en une autre lettre. Puis, la lettre sortante du rotor de gauche traverse le Réflecteur 1 et retourne modifiée pour traverser dans l’autre sens les trois Rotors subissant encore trois substitutions. Cette lettre est alors fournie au TABLEAU de FICHES 3 où elle est modifiée une dernière fois. Elle est alors présentée au plateau de substitution qui allume l’ampoule de la lettre codée ou décodée. Sur la Fig.2 la grille G de protection du système est relevée pour permettre à l’opérateur de conditionner la machine en choisissant et en intercalant le Réflecteur et les trois Rotors. Il existe plusieurs types d’ENIGMA. Dans ce didacticiel nous allons nous consacrer au modèle M3, celui de la Fig.2 qui était utilisée dans la Kriegsmarine, et en particulier dans les sous-marins U-Boats. Elle fonctionnait avec trois rotors en prise dans le « brouilleur ». Le nombre de rotors disponibles qui pouvaient être insérés dans n’importe quel ordre était de huit. Le logiciel de simulation va devoir émuler chacun de ces modules et permettre à l’opérateur de placer la machine virtuelle dans les conditions initiales permettant le cryptage et le décryptage.
Comportement mécanique d’ENIGMA.
Substitution dynamique des caractères précise qu’une lettre n’est jamais modifiée de la même façon. Si on propose à la machine le texte AAAAAA elle va coder par exemple BWCXLM. Pour assurer cette fonction, chaque fois que l’opérateur enfonce une touche, il agit sur un mécanisme qui décale d’une position la roue codeuse de droite. Quand cette dernière a effectué un tour, elle entraine à son tour la roue centrale qui s’indexe d’une position voisine. Lorsque cette roue centrale a effectué un tour complet, elle fait à son tour changer de position la roue de droite. Ce mécanisme se comporte donc comme un compteur en base 26. Du coup il faut frapper 26 x 26 x 26 fois sur le clavier 4 soit 17576 lettres pour qu’un cycle de transposition recommence. L’émulateur que l’on se propose de développer devra simuler ce comportement sachant que la position qui engendre le changement d’index est fixe sur les rotors, mais que le positionnement initial de la machine pour travailler est quelconque et change à chaque jour du conflit à 0H00. Pas mal de cogitations en perspectives … NANO est-elle assez puissante pour supporter cette « charge » ?
La suite est ici.