Continuer à développer le projet va consister à émuler la rotation sur les trois rotors, puis faire intervenir le tableau des fiches croisées. Chaque étape subira des tests sévères pour en valider les algorithmes. Hors, il est probable qu’à certains moments on va constater des problèmes. Pour les résoudre il faut absolument s’assurer que les divergences sont bien le fait des nouveaux éléments ajoutés à la machine. En d’autres termes, à ce stade de notre entreprise ludique, il faut absolument nous convaincre que le Brouilleur dans son ensemble est irréprochable.
Modification de la configuration de l’[Enigma] de référence.
Comparer le comportement des deux entités virtuelles suppose on s’en doute un peu d’avoir une initialisation identique sur les deux codeuses. Cet impératif nous oblige à voir comment procéder sur [Enigma]. Un moyen radical d’effectuer un test significatif consiste à chambouler intégralement la combinatoire d’une initialisation en adoptant un joyeux brassage des divers paramètres possibles. Commencer par cliquer sur le verrouillage 4 de la Fig.84 pour ouvrir le plateau du dessus et accéder comme sur la Fig.93 aux éléments internes de la chiffreuse. Cliquer n’importe où sur l’un des Rotors en 4 le dépose du Brouilleur et le place en B. C’est dans cette configuration que si l’on clique en 6 ou en 7 on en modifie à convenance l’Indexation interne. En cliquant dans le coffret de rangement en 9 le Rotors déposé en B est automatiquement replacé dans son logement repéré en 8. Pour installer un Rotor sur le Brouilleur on procède à l’inverse. On clique sur ce dernier en 10 pour le placer en B. Dans cette position on l‘Indexe en interne avec 6 et 7. Puis on clique dans un emplacement libre en 5 pour l’installer sur le Brouilleur. C’est dans la zone restreinte 3 que l’on choisit le type de codeuse et le Réflecteur installé. Bien faire attention à sélectionner Wehmacht/luftwafe – UKW = B ou C indiqué en 2 en fonction de votre choix.
On peut alors refermer le plateau en cliquant en 1 et orienter les Rotors comme précisé en Fig.84 de la page 47. Noter au passage que l’on ne peut pas refermer le plateau s’il n’y a pas trois Rotors installés sur le Brouilleur. Pour effectuer notre jeu d’essais avec P11 il faut impérativement installer la configuration de la Fig.94 soit par manipulations directe de la machine virtuelle, soit en rechargeant l’initialisation disponible dans le dossier <Documents> par la commande Load key du menu de la Fig.82 dans les onglets bleu pastel. En cliquant sur l’onglet Wiew Key de ce menu on fait afficher une fenêtre qui ressemble à celle de la Fig.95 qui résume les paramètres de l’initialisation virtuelle adoptée
sur la machine. Dans la zone repérée en jaune est précisé le nom du fichier de type eni chargé, ainsi que son chemin sur la mémoire de masse de l’ordinateur. ATTENTION, il faudra à chaque début de cryptage ou de décodage commencer par replacer manuellement les orientations des Rotors en face de la fenêtre du plateau car cette combinaison n’est pas mémorisée. Ce choix peut se justifier par le fait que chaque message reçu contient ce « préambule » de trois lettres et change à chaque transmission en fonction de critères qui sont propres aux services concernés dans les armées.
Disposant d’une machine de référence fiable et correctement configurée, nous pouvons passer à la campagne d’essais visant à valider le Brouilleur avec sérieux. Dans ce but, nous allons repartir du démonstrateur précédent, mais simplifié dans P11_Test_integral_du_Brouilleur.ino en supprimant l’affichage des cheminements qui n’apporte plus vraiment d’informations nouvelles et a tendance à surcharger l’affichage. Par ailleurs, ce nouveau démonstrateur a subi une petite modification. En mode TEXTE les caractères sont regroupés par paquets de cinq lettres pour avoir un affichage analogue à celui engendré par la chiffreuse de référence [Énigma].
Modification de la configuration des Rotors et du Réflecteur.
Nous savons que nous devons adopter une initialisation totalement conforme à celle adoptée sur l’[Enigma] de référence. Naturellement, on commence par téléverser P11 dans l’ATmega328 et on active le Moniteur à 57600baud.
MANIPULATIONS : (Suite)
10) Le Moniteur est en attente de consignes dans sa fenêtre de saisies.
11) Frapper « er » pour modifier le Brouilleur.
12) Proposer dans l’ordre ‘5‘, ‘4‘, ‘3‘, ‘6‘, ‘15‘, ‘21‘,’x‘, ‘h‘ et ‘a‘.
13) Imposer le Réflecteur avec ‘c‘.
14) Par précaution sauvegarder cette initialisation avec ‘s‘ suivi de ‘o‘.
15) Provoquer un nouveau RESET et vérifier que la machine est bien configurée comme sur la Fig.96 pour s’assurer d’une initialisation conforme à celle du test que l’on désire effectuer.
Un peu comme avec « Les plans d’expériences par la méthode TAGUCHI » on a changé plusieurs paramètres pour optimiser le test. On a modifié la nature des Rotors, ainsi que leur position, leur Indexation interne, les orientations sous la fenêtre et mis en place le Réflecteur C au lieu du B. Bref, l’intégralité de l’initialisation est bien complètement « chamboulée ».
MANIPULATIONS : (Suite)
16) Sur [Énigma] la configuration de la Fig.95 a été téléchargée.
17) Sur [Énigma] on a orienté les trois Rotors en ‘X‘, ‘H‘ et ‘A‘.
18) Commande « t » pour passer en mode TEXTE.
19) Passer en CRYPTAGE avec le caractère ‘&‘.
20) Tester avec « aaaaaaaaaaaaaaaaaaaaa« . (Penser à Copier/Coller.)
21) Enfin ‘&’ pour sortir. (Ci-dessus 21 caractères pour ne pas que le Rotor du centre ne tourne.)
22) Sur [Énigma] proposer également « aaaaaaaaaaaaaaaaaaaaa« .
Sur les deux machines nous obtenons exactement un chiffrage identique. Sur la Fig.97 en A on trouve les résultats sur notre prototype alors qu’en B ceux sur la machine de référence. En rose et vert le préambule dont les trois premiers caractères constituent l’orientation initiale des rotors et en orange l’état final sur les deux chiffreuses.
23) Pour compléter ce test recharger sur [Énigma] la configuration de la Fig.95 sans oublier de
recaler manuellement l’orientation des trois Rotors.
24) Revenir en CRYPTAGE avec le caractère ‘&‘ en ‘X‘, ‘H‘ et ‘A‘.
25) Proposer la chaîne « abcdefghijklmnopqrstu« . (Penser à Copier/Coller.)
26) Sur [Énigma] imposer le même texte.
On vérifie que quel que soient les rotors insérés et leur Indexation interne, avec le Réflecteur B ou C et des orientations initiales quelconques, quel que soit le caractère proposé en cryptage, on obtient exactement des codages identiques. On peut donc valider avec sérénité l’ensemble du comportement du Brouilleur et envisager avec confiance la suite du développement.
MANIPULATIONS : (Suite)
27) Sur notre prototype faire un RESET.
28) Revenir à la configuration de base de la Fig.83 : ‘1‘, ‘2‘, ‘3‘, ‘1‘, ‘1‘, ‘1‘,’a‘, ‘a‘, ‘a‘ et ‘b‘.
29) Option « t » pour confirmer le mode TEXTE.
30) Consigne ‘&‘ pour retourner en CRYPTAGE.
31) Proposer « alooa woqlw neict ottyi lvalg koacs acoyd exxkd gnsno gmior »
32) Puis « gfzzn udnud vctsq xzeth bcblh sfmyo hilnf ykpne nmsd« .
Un tel texte n’est pas évident à lire. Il importe donc de le reprendre en reconstituant les mots et en y ajoutant les espaces. On peut alors obtenir en clair la pensée philosophique de la petite salamandre exprimée sur la Fig.90 en mode crypté : BEN MOAMOA JE TROUVE INCOHERENT DE NOMMER CHIFFREUSE DANS LE TUTORIAL UNE MACHINE QUI NE FOURNIT QUE DES LETTRES ! C’est la raison pour laquelle plusieurs protocoles étaient prévus pour transmettre des noms propres, intercaler « des ponctuations » etc. Les chiffres et les nombres étaient exprimés en toutes lettres et tout un travail de présentation était effectué par les opérateurs radio de l’époque.
Nouveau bilan sur l’évolution du programme.
Depuis la dernière évaluation sur la Fig.81 en page 45 nous avons intégré des routines relativement complexes et maintenant le Brouilleur est entièrement opérationnel et fiable. Pourtant, en comparaison avec le dernier rapport de ce type, la situation en termes de taille occupée par le programme n’a pas changé de façon considérable. S’il est vrai que certaines optimisations ont été ajoutées diminuant la consommation des octets, des séquences relativement complexes ont été ajoutées. Pourtant, l’occupation de la mémoire réservée au programme dépasse à peine le tiers de l’espace dédié. On peut affirmer sans grand risque de se tromper que lorsque le programme sera achevé, on sera probablement loin de la saturation. Aussi on peut envisager l’avenir avec légèreté … mais pour le principe nous continuerons à optimiser au maximum le code. Si on tente dans l’état actuel de proposer la commande ‘p‘ au démonstrateur P11, la zone libre entre la PILE et le TAS avoisine 1304 octets, soit un espace largement suffisant pour loger les données « fugitives ». Quand à l’espace réservé aux variables globales, seul 35% est actuellement consommé, laissant plus qu’il n’en faut de place pour les variable dynamiques. Donc pour le moment … tout va bien !
La suite est ici.