Avant d’envisager le brouilleur totalement « assemblé » avec à gauche la présence du Réflecteur nous allons intercaler une étape « prudente » qui va consister à ne placer que trois des cinq Rotors dans le Brouilleur virtuel et de vérifier leur traversée dans les deux sens. C’est P10_Le_Brouilleur_complet.ino qui va servir à cette expérimentation intermédiaire. Toutefois, comme envisagé en bas de la page précédente, nous allons au préalable compléter le filtrage des Rotors à leur installation virtuelle pour s’assurer que le même élément ne soit pas choisi deux fois.
Impossible de placer deux fois le même Rotor dans le Brouilleur.
C’était promis en fin du chapitre précédent, nous allons effectuer le filtrage lors de l’initialisation de la Machine pour ne pas installer deux fois le même Rotor dans le Brouilleur, erreur impossible à commettre avec la machine réelle, mais tout à fait possible avec les éléments virtuels qui peuvent se dupliquer à l’infini.
MANIPULATIONS :
01) Téléverser P10_Le_Brouilleur_complet.ino et activer le Moniteur de l’IDE.
02) Frapper un « er » pour initialiser le Brouilleur.
03) Indiquer ‘4‘ pour le Rotor de gauche. (À ce stade les cinq sont possibles.)
04) Proposer ‘4‘ pour le Rotor du centre. Refus du programme car il n’est plus disponible.
05) Indiquer ‘5‘ par exemple qui se trouve encore dans le coffret virtuel.
06) Puis, pour le Rotor de droite choisir le ‘4‘. (Encore une erreur !)
07) Suite à une étourderie peu crédible, cette fois c’est ‘5‘ qui sera refusé. (En résumé il sera impossible d’utiliser deux fois le même élément, on ne sortira de cette fonction que lorsque l’on aura proposé au programme exclusivement que des options cohérentes.)
08) Pour le plaisir de consolider notre savoir-faire, terminer cette initialisation à votre guise.
Confronter le démonstrateur à la réalité.
Jusqu’à présent, à partir de beaux tableaux tels que ceux de la Fig.33, de la Fig.36 ou encore celui de la Fig.42 nous avons élaborée des éléments virtuels que nous avons testé avec rigueur dans des démonstrateurs. Vous vous doutez bien que ces tableaux sont issus d’informations puisées sur la toile. Avant de m’en servir pour coder en C++, j’ai vérifié la validité de ces informations en comparant sur plusieurs sources. Puis, avec P10_Le_Brouilleur_complet.ino on a assemblé virtuellement tous ces éléments pour aboutir à un Brouilleur presque complet. (Presque, car la rotation des trois rotors n’est pas encore implémentée.) Pour tester le comportement de ce prototype virtuel, il nous faut impérativement disposer d’une vraie machine Énigma. Une telle codeuse n’est pas forcément dans nos moyens, car les prix de ces antiquités sont absolument astronomiques. Aussi nous allons utiliser un simulateur reproduisant avec rigueur le comportement de l’unité réelle. Il en existe de nombreuses versions sur Internet toutes présentant des fonctionnements fiables. Comme il faut bien en choisir une nous allons utiliser celle de :
https://www.ciphermachinesandcryptology.com/en/enigmasim.htm
Facile à installer, lorsque l’on active ce simulateur, nous obtenons l’affichage qui ressemble à celui de la Fig.84 avec au départ l’initialisation par défaut de la Fig.83 que nous allons utiliser pour tester le démonstrateur P10. Pour quitter cette application il suffit de cliquer en 16 avec le bouton gauche de la souris. (Le programme nous demande si l’on désire sauvegarder la configuration si cette dernière a été modifiée.) Cliquer en 1 ouvre le menu de la Fig.82 avec l’affichage de la Fig.83 si on valide l’option jaune, avec la possibilité de sauvegarder ou de recharger une configuration avec les commandes bleues, voir de sortir par la consigne verte etc. Quand on clique sur une touche du clavier 12 comme en 11 par exemple, elle devient plus petite simulant son enfoncement. Le Rotor de droite en 3 tournes en faisant un petit bruit caractéristique, puis l’une des ampoules du tableau 9 en 10 par exemple s’illumine en fonction du cryptage. Lorsque l’on relâche le bouton de la souris, alors elle s’éteint. Quand le Rotor de droite a effectué une rotation, il entraine en 8 son voisin du centre. Puis, ce sera le tour en 7 du Rotor le plus à gauche. Machine « fermée » dans l’état de celle de l’exemple on peut manuellement positionner à convenance chaque Rotor en cliquant soit en 2 sur le haut de la couronne dentée, soit en 5 vers le bas des pétales de la « marguerite ». Cliquer sur le verrouillage 6 nous engage dans une promenade technique de découverte des éléments de la machine. C’est en cliquant sur le verrouillage 4 que l’on ouvre le plateau du dessus pour installer et configurer le Brouilleur. (Nous y reviendrons dès le chapitre 20.) Commodité
apportée par la version virtuelle, le fait de cliquer sur la serrure 13 ouvre la zone 14 dans laquelle vont s’écrire le texte d’origine et celui crypté avec formatage par groupe de cinq lettres. Par exemple en 15 on a sur la ligne du haut la première lettre ‘A‘ frappée au clavier en 11 et en dessous son codage en ‘B‘. Cet artifice remplace en pratique celui de la feuille de papier sur laquelle l’opérateur inscrirait son message avant de le transmettre en morse, ou au contraire de le décoder. Il est évident que ce simulateur comme le notre est prévu pour pouvoir changer les Rotors ainsi que leur initialisation et remplacer le Réflecteur utilisé. C’est en cliquant dans la zone des prises du tableau des fiches vu ici par le dessus en 17 que l’on peut combiner les dix inversions filaires. Ces manipulations seront détaillées en temps utile. Il reste bien d’autres détails d’utilisation de ce logiciel astucieux, vous les découvrirez par vous-même lors de nos expérimentations.
Les informations sur Internet.
S’il est un thème qui a fait couler beaucoup d’encre sur son sujet, c’est bien Énigma. Que ce soit dans les archives papier ou en « dématérialisé » sur la toile, les articles décrivant cette machine ainsi que son historique sont légion. Il faut toutefois « pondérer » ces explications et parfois les contextualiser. Par exemple, quand cette codeuse est explicité, on peut lire, et dans plusieurs sources, que : « Comme la roue de droite tourne à chaque frappe sur le clavier, la même lettre sera différente durant 26 saisies. ». Cette affirmation péremptoire n’est pas totalement exacte. S’il est vrai qu’au cours de ces rotations la combinatoire de substitution change, il peut arriver que la lettre soit codée de façon identique plusieurs fois durant un cycle. Considérons la Fig.85 issue du simulateur que nous avons adopté pour sa fiabilité et sa simplicité de mise en Å“uvre. (Ce dessin est compacté pour ne montrer que les zones pertinentes.) Initialement les trois Rotors sont sur la position A. Dans cet exemple on a frappé vingt fois la lettre ‘A‘, c’est à dire que le Rotor n’a pas encore fait un tour complet et n’a pas entraîné le Rotor central. Pourtant on constate qu’à de nombreuses reprises on retrouve un cryptage déjà effectué. Les informations proposées dans les exposés ne sont pas franchement inexactes, mais elles sont forcément « simplifiées » pour des raisons pédagogiques. Donc, parfois il ne faudra pas s’étonner d’une divergence entre ces explications et les résultats obtenus sur des simulateurs fiables reproduisant exactement le comportement de la machine d’origine.
Vérifier le Brouilleur.
Opération capitale avant d’envisager la mise en Å“uvre des mécanismes qui engendrent les incrémentations des deux autres Rotors. Dans ce but P10 a été téléversé dans l’exercice précédent, la fenêtre du Moniteur de l’IDE est ouverte. Le simulateur d’Énigma de la Fig.84 est également activé. Les ingrédients sont réunis, on peut effectuer la vérification complète de notre version actuelle de la chiffreuse. (Voir en Fig.90 la remarque de la petite salamandre à ce sujet …)
MANIPULATIONS :
01) Pour la forme « repartir à zéro » avec un RESET.
02) Vérifier sur [Enigma] que nous avons bien la configuration de la Fig.83 ou dans le menu de la Fig.82 imposer Clear Key suivi de OK. (Dans ces exercices tout ce qui concerne le simulateur glané sur Internet servant de référence sera en marron.)
03) Frapper en 11 sur la touche ‘A‘ du clavier virtuel. Dans l’état actuel d’[Enigma] son ampoule en ‘B‘ s’illumine. Au relâcher du clic de souris elle s’éteint et la fenêtre affiche [AAB].
04) Cliquer en 13 pour « étaler » notre feuille de papier virtuelle. Pas de surprise, on retrouve en 15 sur la ligne du haut la lettre proposée à la machine et en ligne du bas sa transposition.
05) Cliquer sur le clavier en 12 les touches immatérielles ‘B‘, ‘C‘, ‘D‘, ‘E‘ et ‘F‘. À ce stade la machine de vérification affiche [AAG] et [BJELR Q].
06) Passons en fenêtre contextuelle du Moniteur et frapper un ‘&‘ pour chiffrer ce texte initial.
07) Proposer ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘ et ‘f’. (Penser à valider à chaque lettre.) On obtient à chaque fois un descriptif tel que celui de la Fig.86 qui précise le « cheminement » du courant électrique dans le Brouilleur avec en vert la lettre proposée et en rose son cryptage en sortie sur le Collecteur. Dans la zone orange l’état actuel de le fenêtre et en jaune le Réflecteur.
La flèche bleue indique le cheminement à travers III, puis II et enfin I avec en MAJuscule la lettre en entrée et en MINuscule celle en sortie. La flèche violette traduit le retour depuis le Réflecteur en retraversant dans l’ordre I, puis II et enfin III. Dans ce tout premier cheminement la lettre est devenue dans l’ordre A > c > d > f > F > S > S > E > B > B. Il me semble utile pour ce premier test de suivre ce cheminement et le comparer sur les tableaux du didacticiel représentant les éléments du Brouilleur.
Pour tenir compte de la remarque de l’encadré, on ne peut utiliser directement la table de la Fig.36 pour le Rotor III. Dans ce but sur la Fig.87 ce dernier à tourné d’une position ce qui permet de construire la table pour le sens direct en Fig.88 et celle en Fig.89 pour le sens réfléchi. Pour le moment dans toutes les tables les trois Rotors son Indexés sur la bague A-1. On peut passer à la vérification sur papier du cheminement affiché par P10 pour la première touche frappée virtuellement.
Partant du haut vers le bas on transite en 1 dans le sens direct et en 2 dans le sens réfléchi. On traverse le Rotor III en A, puis le Rotor II en B et enfin le Rotor I en C. Comme indiqué par le démonstrateur, la lettre A devient C, puis D et enfin F. Dans le Réflecteur ce F est permuté en S conformément au tableau du centre repéré en jaune. Puis le cheminement se poursuit en sens inverse de la gauche vers la droite. En sens réfléchi le signal traverse le Rotor I en E, puis le Rotor II en F et enfin le Rotor III en G. La lettre S devient S, (Inchangée en E.) puis E et B en sortie du Collecteur. Le cheminement affiché par le programme est donc conforme à l’étude théorique sur papier, les algorithmes utilisés semblent conformes. Pour les valider il convient de compléter notre jeu d’essais.
MANIPULATIONS : (Suite)
08) Sur [Enigma] proposer les autres lettres de l’alphabet jusqu’Ã ‘Z‘.
09) Puis dans le champ de saisie du Moniteur faire de même : Lettres de ‘g‘ à ‘z‘.
Avec les 21 premières lettres de l’alphabet il y a correspondance parfaite entre le comportement de l’[Enigma] servant de référence. Mais à partir de la lettre ‘v‘ il y a divergence. Rassurez-vous, ce ne sont pas les algorithmes de P10 qui sont en cause, mais son développement incomplet. En effet, sur la machine d’origine, le Rotor III entraine son Rotor situé à sa gauche lorsqu’il passe de la lettre V à la lettre W sur sa bague extérieure, ce que montre bien la Fig.92 dans l’encadré rouge, alors que sur notre prototype immatériel cette incrémentation n’est pas encore émulée. Rien d’alarmant en définitive. Toutefois, avant de compléter le logiciel on va encore effectuer des tests pour valider notre Brouilleur.
La suite est ici.