23) Le tableau des Fiches Croisées.

Dernier module virtuel à ajouter à notre prototype logiciel pour que notre machine soit complète. Cet élément intervient dans le cryptage en entrée et en sortie du Brouilleur. Le programme va devoir en tenir compte. Les séquences impliquées dans le traitement du tableau des FICHES croisées devront fonctionner quel que soit le nombre de lignes électriques fictives installées sur la machine. Il reste toutefois à corriger un défaut dans la procédure d’initialisation des FICHES croisées car dans les démonstrateurs précédents on était obligé d’en installer obligatoirement dix sur la machine.

Initialisation du tableau des fiches.

Contrairement à ce qui était prévu dans les démonstrateurs précédents, maintenant on pourra si on le désire installer un nombre quelconques de lignes croisées sur Énigma. Le protocole modifié dans P13_EXPLOITER_Enigma.ino est identique à celui de P12 sauf que si on saisit ‘&‘ au lieu d’un couple de lettres, il y a sortie immédiate de la fonction et retour au mode COMMANDES.
MANIPULATIONS :
01) Téléverser P13_EXPLOITER_Enigma.ino et activer le Moniteur de l’IDE à 57600bauds.
02) Éventuellement frapper un ‘b‘ pour valider le bruiteur.
03) Frapper « ef » pour n’initialiser que les FICHES croisées. (Maintenant affiche Fuite par ‘&’.)
04) Proposer « aq« , « zs« , « ed« , « rf » et ‘&‘ par exemple.
05) Indiquer ‘s‘ suivi de ‘o‘ pour sauvegarder.
06) Faire un RESET : Sauvegarde et restitution prennent bien en compte le nombre des Fiches.
NOTE : Pour ne transférer que le nombre de fiches installées en EEPROM il faut bien enregistrer dans cette dernière leur nombre. C’est ici que l’on est content qu’en EEPROM il reste un peu de place disponible. Du coup, l’octet situé en 669 contient cette information et il ne reste plus qu’un seul emplacement de libre en 668. Cette modification est commentée dans la Fiche n°11.
07) Saisir « ef » et sortir immédiatement par ‘&‘. On constate que c’est un moyen d’effacer toutes les FICHES croisées avec seulement deux commandes.
08) Recommencer avec « ef » et ajouter « tg« , « yh« , « uj » puis ‘&‘ pour brancher trois lignes croisées.
09) Imposer la consigne ‘d‘ et la valider avec ‘o‘. Le programme nous demande si l’on désire débrancher toutes les fiches. Refuser avec une lettre quelconque. Les branchements sur le tableau virtuel n’ont pas été changés.
10) Réitérer ‘d‘ suivi de ‘o‘. Cette fois accepter le débranchement de toutes les FICHES croisées.
Cette dernière manipulation procure l’état par défaut de l’[Énigma] de référence.

Dilapidons notre richesse.

Ayant estimé que nous n’allons pas consommer la moitié des ressources de l’ATmega328, on peut se permettre sans vergogne de jeter des octets par la fenêtre. Aussi, si vous observez le Menu de base, vous allez y découvrir une nouvelle commande ‘f‘.
MANIPULATIONS : (Suite)
11) On recommence avec « ef » pour initialiser les FICHES croisées.
12) Remplir toutes les fiches pour vérifier au passage qu’après la n°10 on sort automatiquement.
13) Tester ‘f‘ suivi de ‘n‘ puis de ‘c’ pour vérifier.
14) Reprendre ‘f‘ avec ‘o‘ puis encore ‘c‘ pour s’assurer de la cohérence du traitement.


Ces quelques manipulations nous on montré les diverses procédures qui permettent de n’installer que quelques FICHES croisées ou de pouvoir toutes les débrancher. Durant la mise au point des nouvelles séquences, j’ai été amené à réinitialiser entièrement la machine avec la commande ‘i‘. N’ayant pas pratiqué cette dernière depuis plusieurs semaines, j’avais complètement oublié que pour saisir le GROUPE d’identification on ne doit indiquer que neuf lettres, les trois premières étant réservées pour l’orientation initiale des rotors et déjà indiquées à la machine.

Petite amélioration en saisie du Groupe d’identification.

Disposant d’une forte réserve de place en mémoire de programme, il était concevable d’améliorer de dialogue Homme/Machine en peaufinant les textes et ainsi fournir un rappel des trois premières lettres déjà saisies pour que l’opérateur puisse retrouver le fait que neuf caractères sont suffisants et pas les douze du GROUPE d’identification complet.
MANIPULATIONS : (Suite)
15) Imposer « eg » pour initialiser le GROUPE d’identification.
Avant le petit perfectionnement textuel, seule la zone en jaune sur la Fig.105 était affichée. Avec le logiciel ultime, le texte de la zone rose pastel précède l’ancienne invite et dans la surface repérée en vert un triplet redonne les trois premières lettre du GROUPE d’identification déjà disponibles.
16) Compléter avec neuf caractères comme « bouteille » par exemple. Le programme termine la ligne avec les lettres saisies placées entre crochets. (Sur la Fig.104 surlignées en violet.)
Avant de passer au chapitre suivant, il nous faut voir la procédure à utiliser sur l’[Énigma] de référence pour y installer des lignes croisées sur son tableau de Fiches.
17) Si elle est toujours active, quitter la machine « graphique » puis la réactiver avec sa configuration par défaut. Cliquer en 17 de la Fig.85 pour ouvrir le tableau des FICHES croisées.
Les vingt-six prises doubles sont réunies électriquement derrière le tableau par un petit pont électrique poussé mécaniquement par un ressort. Si on n’insère pas de fiche croisée, les lettres sont toutes inchangées. Pour installer virtuellement une ligne, il suffit de cliquer sur deux prises quelconques. Comme c’est le cas sur notre prototype, il est impossible d’utiliser deux fois la même prise. Si l’on clique sur l’une des fiches déjà en place, on enlève purement et simplement le cordon considéré.
MANIPULATIONS : (Suite)
18) Pour établir une liaison électrique croisée sur cette chiffreuse virtuelle cliquer sur deux prises
quelconques. Par exemple sur ‘T‘ puis sur ‘G‘. Peu importe l’ordre dans lequel on installe la ligne.
Pour ne pas cacher entièrement le tableau avec les fils de liaison électrique, ces derniers ne sont pas représentés. Seules les deux fiches sont affichées avec la « lettre croisée ».
19) Cliquer sur la fiche G en T20 : La ligne croisée est immédiatement enlevée du tableau fictif.
20) Pour expérimenter, installer les trois lignes [EK], [ZW], [JP] et [DM] par exemple.

Tester le tableau virtuel des Fiches croisées.

L’opération sera d’autant plus aisée que l’on pourra facilement ne brancher qu’une seule ligne si on le désire, tant sur le prototype que sur l’[Énigma] de référence. Comme pour les vérifications qui ont précédé, nous terminerons le jeu d’essai par un message vraiment très long précédé d’une configuration originale pour laquelle l’intégralité des paramètres possibles aura été modifiée. Ce message composé de caractères arrangés de façon aléatoire et en égale quantité pour chaque lettre de l’alphabet présentera une inflation coupable avec 6000 caractères dans son message final !

Considérons le montage graphique de la Fig.106 avec mise en évidence de la mise en place actuelle des jonctions filaires sur le tableau des FICHES croisées. Elles ont été placées strictement dans l’ordre [EK], [ZW], [JP] et [DM]. Pourtant, quand on clique sur la commande View Key on constate sur la Fig.106 qu’elle ne sont pas du tout listées dans l’ordre de création comme c’est le cas sur notre prototype. À bien observer, et on peut le vérifier, elles sont classées par ordre alphabétique pour la première lettre.

MANIPULATIONS : (Suite)
17) Faire un RESET sur le prototype façon de repartir de zéro.
18) Imposer la consigne ‘d‘ et la valider avec ‘o‘. Puis encore ‘o‘ pour débrancher toutes les fiches.
19) Lettres « ef » pour installer les quatre lignes déjà présentes sur l’[Énigma] de référence. Indiquer dans un ordre quelconque les quatre lignes virtuelles. Par exemple dans l’ordre « md« , « wz« , « pj« , et pour finir « ke » et ‘&‘. Les deux machines présentent à ce stade une initialisation commune.
20) Pour la forme on sauvegarde avec ‘s‘ confirmé par ‘o‘.
21) Nouvelle lettre ‘t‘ suivie de ‘&‘ pour retourner en CRYPTAGE.
22) Soumettre la chaîne « abcdefghijklmn » puis ‘&‘.
23) Faire de même sur [Énigma] en mode Auto Typing. Les deux machines sont de connivence.

De l’ordre nom d’une pipe !

Alphabétique pourrait compléter ce titre pour le moins impératif. Vous aurez certainement remarqué (Pas forcément tout le monde !) que dans le Menu de base figure la commande ‘J‘ dont il n’a encore pas été question dans ce tutoriel. En fait, elle a été intégrée dans le programme P13 tardivement et suite à la remarque sur la Fig.106 relative au triage des jonctions croisées. Du coup, comme je ne sais plus comment « faire enfler le programme » pour consommer des octets, cette petite option a été ajoutée à la liste. La commande ‘j‘ liste les liaisons croisées, et au préalable les ordonne par ordre alphabétique comme sur la machine de référence. Noter au passage, qu’à partir de cette évolution, quand on sauvegarde une configuration, les fiches sont systématiquement trillées avant de les mémoriser en EEPROM. Naturellement, si au moment de la sauvegarde elles ont déjà été ordonnées avec ‘j‘ il ne se passera rien de particulier.
24) Tester la commande ‘j‘ qui, à l’instar d’[Énigma] liste les FICHES croisées ordonnées.

Treize FICHES croisées au lieu de 10.

Potentiellement, sur une Énigma d’origine, rien n’interdit matériellement si son coffret contient un nombre suffisant de cordons électriques, d’utiliser toutes les prises du tableau des FICHES croisées. Sur une machine virtuelle comme la notre ou comme sur [Énigma] intégrer cette possibilité ne pose aucun problème et on ne va pas s’en priver avec toutefois une limitation. En effet, l’utilisation de l’EEPROM est actuellement limitée à dix fiches. En stocker trois de plus imposerait de revoir entièrement la gestion de la mémoire non volatile. On va donc se contenter d’élargir à 13 le nombre de FICHES croisées en exploitation, quitte à n’en sauvegarder que dix en EEPROM. Confirmation sur [Énigma] : Stecker : AB CF DM EK GH IR JP LS NV OX QY TU WZ.
MANIPULATIONS : (Suite)
25) Provoquer un RESET sur le prototype façon de repartir de zéro.
26) Le classique « ef » pour réaffecter les croisements.
27) Indiquer dans l’ordre [ab], [fc], [md], [ek], [hg], [ri], [jp], [ls], [vn], [xo], [qy], [tu], et[wz] et terminer par ‘j’ pour trier tout ces fils.
28) Comme chaque fois, un petit ‘s‘ validé par ‘o‘ pour sauvegarder en EEPROM.

29) Toujours en configuration par défaut imposer cette combinatoire à [Énigma].
30) Dans son menu commande cliquer sur View Key pour s’assurer de la conformité.
31) Sur notre prototype utiliser la commande ‘j‘ pour comparer.
32) Nouvelle commande ‘t‘ suivie de ‘&‘ pour retourner en CRYPTAGE.
33) Soumettre la chaîne « abcdefghijklmnopqrstuvwxyz » puis ‘&‘.
34) Proposer ce texte à [Énigma] en mode Auto Typing. Les deux machines affichent exactement des cryptages identiques. On valide ainsi le prototype pour cette modification.

Compléter le tableau des FICHES croisées.

Restituer les dix FICHES croisées sauvegardées en EEPROM ne présente aucun intérêt si nous sommes obligés de tout reprendre avec ‘i‘ ou « ef » pour retrouver une combinaison de plus de dix liaisons filaires. C’est la raison pour laquelle, et je suis certain que vous l’avez remarqué, le Menu de base a été complété par la commande ‘n‘ qui autorise l’ajout de Nouvelles lignes filaires virtuelles sur le tableau d’Énigma. Fonctionne quel qu’en soit le nombre actuel. (Sauf 13 !)
MANIPULATIONS : (Suite)
35) Faire un RESET sur notre machine pour récupérer les dix fiches sauvegardées.
36) Frapper ‘j‘ pour faire afficher la liste ordonnées de celles qui ont été sauvegardées.
37) Il suffit de comparer les premières lettres qui sont dans l’ordre alphabétique pour déterminer facilement que ce sont les fiches [qy], [tu] et [wz] qui n’ont pas été enregistrées en EEPROM.
38) Frapper un ‘n‘ pour ajouter des Nouvelles fiches. On constate que le programme affiche la liste des lettres déjà utilisées et continue bien à la Fiche n°11. Indiquer « qy » puis ‘&‘. Dans cet exercice nous n’ajoutons qu’une seule fiche. Consigne ‘c‘ pour vérifier. Recommencer un ‘n‘.
39) Proposer « tu » et « wz« , arrivé à treize fiches il y a retour automatique au mode COMMANDE.
40) Terminer avec ‘n‘ … le logiciel refuse la commande car toutes les prises sont utilisées.

Enlever une FICHE croisée.

Avec la commande ‘f‘ on débranche toutes les FICHES croisées en une seule commande. En enlever une seule peut sembler assez inutile. Et bien c’est pourtant une option très intéressante si par erreur sur une longue liste, (En général dix dans les protocoles de l’époque.) on constate que pour l’une d’entre elles nous nous sommes trompés. Supposons que dans l’action (27) au lieu de brancher [jp] il fallait employer [jw]. La procédure pour corriger ce type d’erreur consiste à enlever la ligne erronée avec ‘k‘, (‘K’ pour KILL car toutes les autres lettres significatives sont déjà attribuées.) puis la remplacer avec usage de la commande ‘n‘. Expérimentons cette commande ajoutée ‘k‘.
MANIPULATIONS : (Suite)
41) Déclencher un RESET, on va expérimenter cette nouvelle fonction qui vous l’aviez forcément remarqué est précisée dans le Menu de base.
42) Commande ‘k‘ pour enlever une liaison croisée. Pour son numéro frapper un ‘&‘. Toute réponse différente d’une valeur numérique sera sans effet. Pour sortir sans enlever de FICHE croisée on continuera à utiliser par habitude le ‘&‘ qui engendre toujours un changement de mode.
43) Reprendre ‘k‘ suivi de « 10« . La dernière ligne filaire est enlevée.
44) Consigner ‘k‘ avec « 001« . La première liaison est débranchée. Les zéros en tête sont ignorés.
45) Tenter ‘k‘ complété par « 9« . La valeur dépasse le nombre actuel de fiches, le logiciel ignore la commande et précise à l’opérateur les nombres possibles.
46) Tester ‘k‘ suivi de « a3« . La commande est ignorée car commence par une lettre.
47) Frapper ‘k‘ avec la réponse « 3abcd« . La consigne commençant par un nombre valide est acceptée, et les lettres qui suivent étant non significatives sont purement ignorées.
48) Lettre ‘f‘ associée à ‘o‘ pour enlever toutes les jonctions.
49) Proposer ‘k‘ : Il y a sortie sans effet autre que nous prévenir de l’inutilité de cette tentative.
50) Encore un RESET pour retrouver dix fiches installées sur le tableau virtuel.
51) Glups, la Fiche n°7 est erronée : [JP], alors que l’on désire [JW]. C’est ici que la possibilité d’enlever une seule ligne s’avère bien commode pour ne pas avoir à tout rebrancher. Frapper ‘k‘ et désigner ‘7‘ pour enlever le mauvais cordon.
52) Proposer ‘n‘ avec « jw » pour le remplacer ainsi que ‘&‘ et ‘c‘ pour vérifier.

La der des der(s) !

C’était promis au début du chapitre « Tester le tableau virtuel des Fiches croisées » en page 61, et l’on va terminer ces « hostilités » par un message un peu démentiel comportant 6000 caractères. Pour que ce test ultime soit le plus significatif possible, on va entièrement chantourloubouler la configuration initiale des deux machines mises en confrontation. Pour un maximum de « brassage » des lettres, on va entièrement remplir le tableau des FICHES croisées. Naturellement, nous allons également totalement modifier le Brouilleur dans une combinatoire nouvelle en changeant tous les paramètres. Vous l’avez deviné : Soumettre 6000 caractères en un seul message à nos deux chiffreuses impose méthode, discipline et surtout patience.
MANIPULATIONS :
01) Comme à chaque étape importante, « repartir de zéro » avec un RESET.
02) Éventuellement frapper un ‘b‘ pour valider le bruiteur.
03) Imposer ‘d‘ et ‘o‘ pour commencer avec une configuration par défaut comme sur l’[Énigma].
04) Accepter de débrancher toutes les FICHES avec ‘o‘.
05) Commande ‘i‘ qui n’a pas été beaucoup utilisée jusqu’à présent.
06) Frapper ‘o‘ pour confirmer et dans l’ordre ‘2‘, ‘1‘, ‘4‘, ‘10‘, ‘26‘, ‘18‘, ‘k‘, ‘m‘, ‘b‘ et ‘c‘.
07) Pour le tableau des FICHES croisées indiquer dans l’ordre [qa], [sz], [de], [fr], [gt], [hy],
[ju], [ki],[lo], [mp], [xw], [vc], et [nb] et terminer par ‘j‘ pour trier tout ces fils.
08) Pour le GROUPE d’identification indiquer « bbbonjour » par exemple. (Neuf lettres au choix.)
09) Consigner les deux complices ‘s‘ et ‘o‘. (On tombe dans la routine !)
10) Configurer [Énigma] dans cette stricte combinatoire suivi de View Key.
Soit vous configurez en mode manuel, soit vous utilisez load Key du menu l’[Énigma] et adoptez Der des der.eni qui accompagne ce didacticiel dans le dossier <Documents.>.
11) Commande ‘c’ sur notre prototype pour vérifier encore les deux préparations.
12) Sur les deux machines tester quelques lettres : On doit obtenir des cryptages identiques.
13) Replacer sur les deux chiffreuses les rotors en [kmb].
14) Sur notre prototype en mode COMMANDE imposer ‘&‘ puis ‘t‘ et enfin ‘&‘ pour coder.
15) Pour soumettre les 6000 caractères à notre codeuse, on va coller 100 fois la chaîne de lettres
« rvtbynukjiomlpqdfsghazqersdtyfguihjopklmwvxcbnqazsderfgtyhju » puis sortir par ‘&‘. Procéder par des [Copier/Coller] et comptez bien les occurrences. Sur notre machine, [Copier/Coller] cent fois est assez rébarbatif, mais le résultat est immédiat.
16) Sur la machine de référence passer en mode Auto Typing. Commencer par Copier une fois le texte à crypter puis le Coller dix fois de suite. Copier dans la fenêtre de saisie ce bloc de six cent lettres et le coller encore neuf fois. Puis, la machine virtuelle étant toujours en option de rapidité VeryFast déclencher le codage avec Start. Aucun opérateur n’aurait cette cadence de frappe d’autant plus qu’a chaque lettre l’équipier doit noter le chiffrage sur du papier. On imagine assez bien le temps qu’il faudrait pour envoyer un tel message.

Bien que la cadence de frappe soit très rapide il faut beaucoup de temps à cette [Énigma] pour en arriver à bout. Soyez patient … elle travaille pour nous et avec rigueur. Sur cette version du simulateur, rédiger le texte est bien plus rapide que sur la machine personnelle, mais pour crypter notre codeuse la surpasse très largement. Comme quoi chaque solution n’est qu’un compromis avec ses avantages et ses inconvénients. Considérons la Fig.107 qui présente les résultats obtenus sur les deux machines. Placées dans des conditions exactement identiques, sur un test particulièrement sévère, elles fournissent un codage strictement « superposable ». Non seulement la vérification se fait avec un texte aléatoire de 6000 caractères présentant une distribution homogène des 26 lettres de l’alphabet, mais de plus le brouillage est maximal, tant par le choix des Rotors et de leur Indexation interne, complété par un tableau de FICHES croisées saturé avec treize lignes filaires installées. Aussi, nous pouvons dormir sur nos deux oreilles, le programme d’exploitation P13 est largement validé et habilité à servir dans toutes les armées durant le conflit de 39/45. Au passage on peut se demander le temps qu’il faudrait pour coder un tel texte à la main si des machines comme ÉNIGMA n’existaient pas. On comprend assez bien le succès qu’à remporté cette chiffreuse automatique dans les armées, bien que vu sa complexité elle était très couteuse.

Un dernier test pour vérifier la réversibilité de cette chiffreuse.

C’est le Réflecteur qui par conception confère à cette machine la faculté de crypter ou décoder sans rien avoir à changer sur la préparation matérielle. Une fois configurée pour la journée, l’opérateur radio pouvait aussi bien envoyer des messages qu’en recevoir. Rien c’est prévu de particulier dans P13 dans ce sens, puisque c’est par « nature » qu’ÉNIGMA est « réciproque ».
MANIPULATIONS : (Suite)
17) Un petit RESET pour commencer. (Il aura servi le petit bouton bleu sur le coffret 3D.)
18) N’oublions pas le ‘t‘ car par défaut P13 est en mode Lettre.
19) L’inévitable ‘&‘ pour commencer un cryptage.
20) Coder le message « Bonjour les amis qui vont se faire une enigma.« . (Copier/Coller.)
21) Revenir en mode COMMANDE avec ‘&‘ et Copier le texte dans la fenêtre du Moniteur.
22) Revenir en CRYPTAGE avec ‘&‘ et Coller le texte chiffré.
23) Dernier ‘&‘ pour revenir au Menu de base.
On notera au passage que les espaces et le point final ont étés ignorés. Le texte est codé en zone verte. Puis soumis à nouveau à la machine il ressort en clair dans la zone rose, avec les limites imposées par le protocole, c’est à dire en groupes de cinq lettres. Notre ÉNIGMA est bien une machine qui fonctionne en chiffrage et en déchiffrage.

La suite est ici.