simulation visuelle et fonctionnelle de la machine enigma m3 · 2016-07-06 · simulation visuelle...

7
Simulation visuelle et fonctionnelle de la machine Enigma M3 David Fishel 1 1 Université Libre de Bruxelles, Bruxelles, B-1050 dfi[email protected] FIGURE 1 – Enigma logo. Résumé La machine Enigma M3, utilisée pour chiffrer les messages secrets des Allemands lors de la Seconde Guerre mondiale, est décortiquée. Ses caractéristiques et différents composants sont expliqués, afin de comprendre le fonctionnement de la machine. On en crée une simulation fonctionnelle sous une applet Java, capable d’être exécutée sur un browser web. On explique donc la méthodologie utilisée pour implémenter cette simulation. On identifie d’autres simulations de la machine Enigma disponibles sur internet, similaire à celle proposée et on les compare à la nôtre. Introduction Bien connue pour son rôle majeur durant la Seconde Guerre mondiale, la machine Enigma est donc une machine portable de chiffrage. C’est-à-dire, une machine capable de chiffrer et déchiffrer des messages. Pour déchiffrer un de ces messages, il faut une machine similaire (de même modèle), initialisée avec les mêmes paramètres de départ que celle utilisée pour enchiffrer. De la machine Enigma, il en existe un grand nombre de modèles et variances différents. Le modèle choisi pour ce projet est donc l’Enigma M3 ; utilisée par l’armée navale allemande (Kriegsmarine). Enigma a donc été fortement utilisée par les Allemands durant la Seconde Guerre mondiale, dû à son mode de fonctionnement au nombre énorme de possibilité de paramètres initiaux (601 768 650 000 000 000 000 000 possibilités). Les Allemands pensaient donc posséder une méthode de chiffrement impossible à craquer ; même en possédant le message codé et une même machine, il fallait connaitre les paramètres initiaux que les Allemands prenaient le soin de modifier tous les jours, ils connaissaient la combinaison de la journée grâce à un livre de code qu’ils gardaient en sécurité à tout prix. Dans ce projet, on implémente d’abord une simulation purement fonctionnelle, capable simplement de recréer la machine et ses outils. Cette simulation est une java applet capable de tourner sur un web browser. Une fois celle-ci achevée, on passe à la simulation plus visuelle, semblable à la précédente celle-ci montrera à l’utilisateur les différents processus durant le chiffrement d’une lettre. Sachant que le code fut d’abord cassé par les Polonais(CryptoMuseum History, 2015), il est intéressant de noter pour ce projet qu’Alan Turing, qui fût parmi ceux à casser le code des Allemands du côté des Britanniques, est considéré comme le père des ordinateurs modernes. (CryptoMuseum Enigma M3, 2015; Wikipedia Enigma, 2016) État de l’art Universal Enigma FIGURE 2 – Universal Enigma by Palloks. Universal Enigma 1 est une simulation complète en ligne et simple d’utilisation. Cette simulation comprend non seulement une grande variété de modèles différents de la machine Enigma dont la 1. https://people.physik.hu-berlin.de/ ~palloks/js/enigma/enigma-u_v20_en.html 1

Upload: others

Post on 05-Jun-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Simulation visuelle et fonctionnelle de la machine Enigma M3 · 2016-07-06 · Simulation visuelle et fonctionnelle de la machine Enigma M3 David Fishel1 1Université Libre de Bruxelles,

Simulation visuelle et fonctionnelle de la machine Enigma M3

David Fishel1

1Université Libre de Bruxelles, Bruxelles, [email protected]

FIGURE 1 – Enigma logo.

Résumé

La machine Enigma M3, utilisée pour chiffrer les messagessecrets des Allemands lors de la Seconde Guerre mondiale,est décortiquée. Ses caractéristiques et différents composantssont expliqués, afin de comprendre le fonctionnement de lamachine. On en crée une simulation fonctionnelle sous uneapplet Java, capable d’être exécutée sur un browser web.On explique donc la méthodologie utilisée pour implémentercette simulation. On identifie d’autres simulations de lamachine Enigma disponibles sur internet, similaire à celleproposée et on les compare à la nôtre.

IntroductionBien connue pour son rôle majeur durant la Seconde

Guerre mondiale, la machine Enigma est donc une machineportable de chiffrage. C’est-à-dire, une machine capable dechiffrer et déchiffrer des messages. Pour déchiffrer un de cesmessages, il faut une machine similaire (de même modèle),initialisée avec les mêmes paramètres de départ que celleutilisée pour enchiffrer. De la machine Enigma, il en existeun grand nombre de modèles et variances différents. Lemodèle choisi pour ce projet est donc l’Enigma M3 ; utiliséepar l’armée navale allemande (Kriegsmarine).Enigma a donc été fortement utilisée par les Allemandsdurant la Seconde Guerre mondiale, dû à son mode defonctionnement au nombre énorme de possibilité deparamètres initiaux (601 768 650 000 000 000 000 000possibilités). Les Allemands pensaient donc posséderune méthode de chiffrement impossible à craquer ; mêmeen possédant le message codé et une même machine, ilfallait connaitre les paramètres initiaux que les Allemands

prenaient le soin de modifier tous les jours, ils connaissaientla combinaison de la journée grâce à un livre de code qu’ilsgardaient en sécurité à tout prix.Dans ce projet, on implémente d’abord une simulationpurement fonctionnelle, capable simplement de recréer lamachine et ses outils. Cette simulation est une java appletcapable de tourner sur un web browser.Une fois celle-ci achevée, on passe à la simulation plusvisuelle, semblable à la précédente celle-ci montrera àl’utilisateur les différents processus durant le chiffrementd’une lettre.Sachant que le code fut d’abord cassé par lesPolonais(CryptoMuseum History, 2015), il est intéressantde noter pour ce projet qu’Alan Turing, qui fût parmi ceuxà casser le code des Allemands du côté des Britanniques,est considéré comme le père des ordinateurs modernes.(CryptoMuseum Enigma M3, 2015; Wikipedia Enigma,2016)

État de l’artUniversal Enigma

FIGURE 2 – Universal Enigma by Palloks.

Universal Enigma 1 est une simulation complète en ligneet simple d’utilisation.Cette simulation comprend non seulement une grandevariété de modèles différents de la machine Enigma dont la

1. https://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v20_en.html

1

Page 2: Simulation visuelle et fonctionnelle de la machine Enigma M3 · 2016-07-06 · Simulation visuelle et fonctionnelle de la machine Enigma M3 David Fishel1 1Université Libre de Bruxelles,

M3 (également la I, M4, D, K, et encore plus), mais il estpossible de l’aborder de multiples manières. Par exemple,on peut coder son message en entier en une seule fois,ou bien l’entrer lettre par lettre comme sur la machinephysique.Il est également possible de modifier les paramètres de lamachine, tels que les rotors utilisés, la position de chaque,ainsi que les lettres liées dans la plugboard.

Ce qui est pratique avec cette simulation, c’est qu’ilest possible de voir la transformation de la lettre entrée àchaque étape. Une zone est dédiée à afficher l’évolution decette lettre, que ce soit quand elle passe dans la plugboard,ou traverse les rotors.Cette simulation, datant de 2009, est semble-t-il toujoursmaintenue, la dernière mise à jour ayant été faite en mars2016. (Palloks, 2007)

Louise Dade’s M3/M4

FIGURE 3 – Enigma M3/M4 by Louise Dade.

Pour cette simulation, Louise Dade’s Emulator 2, on a lechoix entre le modèle M3 ou la M4. à nouveau, tous lesparamètres sont modifiables. Et comme pour la précédente,on peut rentrer son message lettre par lettre, ou en un texteentier.

Sur ce site, beaucoup d’informations supplémentairessont fournies. Tel qu’une explication complète dufonctionnement de la machine Enigma, allant jusqu’aucode source utilisé pour implémenter la simulation.Malheureusement, cette simulation, datant de 2006, ne seradésormais plus maintenue. Évidemment, tous les procédés,algorithmes ne doivent être modifiés, le souci viendraitplutôt du support sur lequel elle sera utilisée dans le futur(touch-screen par exemple). (Dade, 2006)

2. http://enigma.louisedade.co.uk/enigma.html

Histoire d’EnigmaVu qu’il existait énormément de modèles différents, ce

document ne s’attardera que sur l’apparition du premierd’entre eux et de l’utilisation du modèle Enigma M3.

La première machine Enigma fût inventée par l’ingénieurAllemand Arthur Scherbius, à la fin de la Première Guerremondiale.(Wikipedia Scherbius, 2016)Les premiers modèles étaient utilisé dans le commerce àpartir du début des années 1920. La machine fut par aprèsadoptée par l’armée et services gouvernementaux de diverspays, notamment l’Allemagne.(CryptoMuseum History,2015)Ce type de machine est composé de 4 éléments clés, unclavier pour l’entrée, des ampoules pour la sortie, uneplugboard et des rotors ; le fonctionnement de ceux-ci seradétaillé dans la section suivante.Comme déjà dit plusieurs fois, un grand nombre de modèlesdifférents virent le jour, mais ce sont ceux développés parl’armée Allemande qui sont les plus reconnus.

FIGURE 4 – Machine Enigma M3.

2

Page 3: Simulation visuelle et fonctionnelle de la machine Enigma M3 · 2016-07-06 · Simulation visuelle et fonctionnelle de la machine Enigma M3 David Fishel1 1Université Libre de Bruxelles,

Le modèle M3 est apparu vers 1940, il était utilisé lors dela Seconde Guerre mondiale par l’armée navale allemande.Ce modèle était toujours compatible avec l’Enigma I (datantde 1932), même si quelques différences furent introduites :

— Le cadran des rotors affiche la lettre et non plus lenuméro de la position.

— La source de courant fut modifiée pour pouvoir êtrealimenté par le bateau.

— 3 rotors furent ajoutés, ainsi qu’un reflectorsupplémentaire.

C’était le dernier modèle à 3 rotors, utilisé par l’arméenavale allemande, avant de le remplacer par le M4 à 4 rotors.

Les codes allemands chiffrés avec Enigma, furent pour lapremière fois cassés par des Polonais bien avant la SecondeGuerre mondiale, en 1932 (Wikipedia Cryptanalysis, 2016;Wikipedia Biuro, 2016). C’est grâce à l’ingénierie inversée,et aux mathématiques fondamentales qu’ils purent casserles codes, ainsi qu’en développer des outils dédiés à lesaider dans ce but. Et c’est de là qu’est née la bombecryptologique, vers 1938.(Wikipedia Cryptanalysis, 2016)

Mais avec le développement de nouveaux modèles, lacomplexité des machines augmenta en allant de pair avec lacomplexité pour casser les codes.De plus, ce qui rendait la tâche presque impossible étaitque les Allemands modifiaient les paramètres initiaux dela machine tous les jours. Les paramètres de chaque jourétaient inscritq dans une table que les Allemands gardaientet protégeaient avec leur vie.

Grâce aux informations fournies par les Polonais, lemathématicien britannique Alan Turing et son équipe furentcapables de créer leur propre "Bombe". La première futconstruite en mars 1940.(CryptoMuseum Bletchley, 2015)

Enigma M3

Maintenant on va expliquer comment fonctionne lemodèle M3.La machine enigma est un système électromécanique,c’est-à-dire qu’un signal électrique qui représentera unelettre, fourni par une batterie embarquée, traverse différentecomposante de celle-ci.La machine a donc une entrée, le clavier (cf Fig 6) quiressemble de très près à celui d’une machine à écrire,ainsi qu’une sortie, une série d’ampoules dont une quis’illuminera pour afficher en quoi la lettre entrée à été codée.Et entre ces deux-là, on retrouve différents composantsayant chacun pour but de transformer une lettre reçue enune autre, obligatoirement différente ; différents rotors, unreflector, et une plugboard.

FIGURE 5 – Etape de codage, by Louise Dade.

PlugBoardÀ l’avant de la machine, comme on peut le voir sur la

Figure 6 se trouve une plugboard qui permet d’intervertirdes lettres par paires. Pour cela, 10 câbles (+2 de reserves)étaient fournis avec la machine. Pour "swapper" deux lettresil suffit de les connecter sur la plugboard avec un des câbles.Quand le signal électrique passe dans la plugboard, si lalettre entrée est connectée via un câble, le signal le traverseet sort de la plugboard en tant qu’une autre lettre, celle reliéepar le câble, sinon le signal continue son chemin en tant quela même lettre.

FIGURE 6 – Plugboard et Clavier

Les possibles arrangements entre ces lettres sontgigantesques.

26!

6! ∗ 10! ∗ 210= 150 738 274 900 000 ≈ 247

Expliquons rapidement ce calcul : On démarre avec 26lettres à combiner entre elles (26!), mais avec seulement nos10 câbles (10!), ce qui laisse alors 6 lettres non connectées

3

Page 4: Simulation visuelle et fonctionnelle de la machine Enigma M3 · 2016-07-06 · Simulation visuelle et fonctionnelle de la machine Enigma M3 David Fishel1 1Université Libre de Bruxelles,

(6!), de plus le sens des câbles (ayant 2 embouts) n’importepas à la connexion (210).

RotorsUn rotor est une roue possédant 26 entrées, chacune liée

à une sortie différente grâce à un câblage à l’intérieur decelui-ci. Ces 26 entrées et 26 sorties représentent chacuneune lettre. Dans la machine, il y a 3 emplacements alignéspour des rotors, on peut donc placer 3 rotors dans l’ordrequ’on veut.De base, 5 rotors étaient à disposition, mais dans la versionM3 pour l’armée navale allemande, 3 rotors furent ajoutésce qui donne un total de 8. De ces 8 on en choisit 3 que l’onplace dans l’ordre qu’on veut.

FIGURE 7 – Rotors

Lorsque l’utilisateur appuie sur une touche, avant quele signal passe par les rotors, certains d’entre eux vonttourner. Le rotor le plus à droite tournera dans tous les cas,et pour savoir quand les autres tourneront, cela dépendrade la position de chacun. Il faut savoir que tous les rotorspossèdent une position spéciale, que l’on appelle Notch. Etquand un rotor se trouve sur son Notch, cela veut dire qu’àla prochaine lettre entrée, celui-ci tournera et entrainera lerotor à sa gauche à tourner avec lui(les nouveaux rotorspossèdent 2 Notchs).Le signal électrique rentre donc dans une des entrées, etressort de l’autre côté par la sortie connectée à l’entrée durotor suivant. Il suit le même procédé dans ces 3 rotorsjusqu’à arriver au reflector.

Dans la figure 8 on peut observer quelle lettre entréeest connectée à quelle lettre sortie pour chaque rotor, ainsique la position de leur Notch (le turnover est la lettreaffichée sur le cadran quand le rotor est sur son Notch).

FIGURE 8 – Lien dans les rotors.

Combinaisons

8 ∗ 7 ∗ 6 = 336

Pour le premier emplacement, on a le choix entre 8 rotors.Pour la deuxième, 7 et troisième 6.

26 ∗ 26 = 676

Pour les index des rotors (Ringstellung). L’index, le cadranindiquant la position à laquelle se trouve le rotor, est lui-même une roue qu’on peut tourner autour de ce rotor.Le Ringstellung n’a aucune importance pour le rotor degauche, car le notch de celui-ci ne pourra faire tourner lereflector à sa gauche.

26 ∗ 26 ∗ 26 = 17 576

Pour chacun des 3 rotors choisis, on a le choix entre 26positions de départ(Grundstelling).

On en arrive donc à 336 ∗ 676 ∗ 17 576 = 3 992 142 336possibilités de combinaison rien que pour les rotors.

Si on prend en compte la plugboard on arrive à :

3 992 142 336 ∗ 150 738 274 900 000 =

601 768 650 000 000 000 000 000 ≈ 289

Reflector Dans le modèle M3, 2 reflectors différentsétaient fournis que l’on pouvait intervertir. Un reflector esttrès similaire à un rotor, il prend en entrée le signal commeune lettre, qu’il renvoie à une sortie via un câblage. Maisil y a bien 2 différences notables, la première étant quele reflector est fixe et donc ne tourne pas. La seconde, lereflector comme un miroir, renvoie le signal dans l’autresens.On comprend alors que le signal retraverse les 3 rotors maiscette fois-ci dans le sens inverse, et via des entrées sortiesobligatoirement différentes que celles utilisées pour arriverau reflector.

4

Page 5: Simulation visuelle et fonctionnelle de la machine Enigma M3 · 2016-07-06 · Simulation visuelle et fonctionnelle de la machine Enigma M3 David Fishel1 1Université Libre de Bruxelles,

Une fois cela de fait, le signal retourne dans le plugboard,est à nouveau transformé en une autre lettre, si connectéet pour finir par dans une ampoule qui s’illumine, la lettrecodée.

Coder un message

Et c’est donc en combinant ces différents composantsqu’on obtient une machine Enigma, très efficaces pourcoder un message. Et donc, pour coder un message et par lasuite savoir le décoder, le processus est simple.Tout d’abord l’expéditeur et le receveur du messagedoivent posséder des machines compatibles, préférablementde même modèle. En premier, l’expéditeur choisit lesparamètres initiaux de la machine, auxquels il commenceraà introduire son message.Grâce à la figure 5, il est facile de comprendre lefonctionnement de la machine. Quand l’utilisateur appuiesur une lettre, la première chose que fait la machine c’estfaire tourner les rotors, comme expliqué au-dessus. Une foiscela de fait, le signal électrique part de la lettre entrée vers leplugboard. La lettre est changée si connectée au plugboard,et le signal continue son chemin vers les rotors. Il parcourtles 3 rotors d’abord de la droite vers la gauche, puis aprèsêtre passée dans le reflector, repasse dans les rotors mais dela gauche vers la droite, avant d’atterrir une nouvelle foisdans le plugboard où la lettre est à nouveau intervertie siconnectée. Cette fois-ci le signal se dirige vers l’ampoulereprésentant la lettre codée.Le message est bien entendu codé lettre par lettre.

Quand le receveur de ce message codé veut le déchiffrer,il lui suffit de mettre les paramètres initiaux identiques àceux utilisés pour enchiffrer le message, et simplemententrer le message coder. Cela veut dire qu’il doit connaitreces paramètres au préalable. Et c’est donc pour ça que lesAllemands possédaient des livres de codes qui indiquaientles paramètres initiaux pour chaque jour.

Simulation FonctionnelleIl fallait donc implémenter une machine Enigma avec

toutes ses fonctionnalités, être capable de faire tourner cettesimulation dans un Web browser. Il a été décidé de le fairesous forme de java applet, les algorithmes et l’interfacegraphique sont donc écrit en langage Java.Une séparation de l’information et de la vue a donc été faite ;l’information étant la machine enigma et la vue des boutons,etc., avec lesquels interagit l’utilisateur.

Enigma

Lors de l’implémentation, la machine enigma a elle-même été pensée comme un ensemble de différentscomposants, les rotors, le plugboard, l’entrée et la sortie.

les Rotors Comme expliqué au-dessus, un rotor est unrouleau avec 26 points d’entrée liés chacun à un point desortie déterminé et différent des autres.Pour le représenter, une simple Array de 26 entiers estutilisée, un entier pour la position actuelle du rotor, et desentiers pour ses notchs. Cette Array a donc 26 entrées,l’index, liés à une sortie donnée par l’entier contenu à cetteposition. Vous pouvez ici comparer ce que donne cetteArray avec la figure d’entrée sortie pour le rotor I :WheelI = [4, 10, 12, 5, 11, 6, 3, 16, 21, 25, 13, 19, 14, 22,24, 7, 23, 20, 18, 15, 0, 8, 1, 17, 2, 9]On peut donc y comprendre, que l’entrée 0, donc la lettreA, est liée à la sortie 4, la lettre E. (cf. figure 8)

N’oublions pas qu’un rotor tourne sur lui-même, cecin’est pas compliqué à faire avec notre Array, il suffit àl’entrée d’ajouter à l’index la position à laquelle se trouve lerotor actuellement, et à la sortie on peut faire de même, toutça sans oublier un modulo 26 pour simuler la liste circulaire.

le Plugboard Pour le plugboard, il fallait donc êtrecapable de lier deux lettres dans les deux sens, pour savoirles interchanger quand l’une d’entre elles est utilisée.Pour ce faire, une Hashmap de caractère est utilisée. C’est-à-dire que lorsque qu’on lie deux lettres, on ajoute une entréeà cette hashmap. Une entrée est donc composée d’une clée,qui sera la première lettre et d’une valeur liée exclusivementà cette clé, qui sera la seconde. On ajoute une 2e entrée oùl’on interverti la clé et la valeur, et donc lorsqu’une d’ellesest utilisée, il suffit de l’appeler comme clé et on recevra salettre liée en valeur.

Entrées/Sortie Pour cette partie uniquementfonctionnelle, il suffit de coder le message completdonné par l’utilisateur. Le message sera donc simplementprit comme un String, et il sera de même pour la sortieobtenue qu’on affichera.

Coder un messageCoder un message se fait complètement par le modèle

Enigma, on peut facilement séparer le processus de codageentre chaque composant. Ce dernier étant déjà expliqué plushaut, seulement la méthodologie utilisée par notre modèlesera encore expliquée.

L’utilisateur tape donc son message à coder et appuiesur le bouton adéquat, l’algorithme commence. On codedonc évidemment chaque lettre, une par une. Quand unelettre doit être codée, le processus est le suivant :on commence par faire tourner les rotors qu’il faut, celui dedroite voit donc sa position obligatoirement incrémentée,ainsi que ceux qui se trouvent sur leur notch en prenant aveceux le rotor à leur gauche.

5

Page 6: Simulation visuelle et fonctionnelle de la machine Enigma M3 · 2016-07-06 · Simulation visuelle et fonctionnelle de la machine Enigma M3 David Fishel1 1Université Libre de Bruxelles,

La lettre part donc, en passant une première fois via leplugboard et est donc intervertie si effectivement liée, sinonelle reste la même.Cette lettre est alors envoyée dans les rotors en commençantpar celui le plus à droite. Ici, une lettre est représentée parun entier, une position(a = 0, .., z = 25). Elle rentre doncdans le rotor au numéro de la lettre + la position du rotor. Etsort donc à la position donnée par la valeur donnée à l’indexde cette entrée par l’Array détaillée juste au-dessus + laposition du rotor.

1 p u b l i c i n t p a s s I n R o t o r ( i n t i ) {2 r e t u r n ( e x i t _ p a t h . g e t ( ( i + p o s i t i o n ) %26)−

p o s i t i o n +26) %26;3 }

Ceci est illustré par le code ci-dessus, la fonctionpassInRotor d’un rotor. Le rotor reçoit donc le signalélectrique à partir d’une position i, vu que celui-ci peuttourner sur lui-même il reçoit pour lui le signal à l’entrée(i+position)%26, modulo 26 pour cycler étant donné que lerotor est un disque. On va donc chercher la sortie lié à cetteentrée, stocké dans notre Array exit_path, à nouveau onn’oublie pas que le rotor tourne sur lui-même.

La lettre passe donc ensuite par le rotor du milieuavec le même procédé, et puis le rotor de gauche, pourfinalement passer par le reflector qui va simplement coderla lettre encore une fois et puis la renvoyer dans les rotors,cette fois si dans le sens inverse.Passé dans notre rotor dans le sens inverse est un peu pluscompliqué, on arrive donc au point donné + position durotor, et il faut donc trouver quelle entrée, donc index, mèneà la position par laquelle on rentre. On ajoute à cette entréela position du rotor et on peut passer au rotor suivant, versla droite.

1 p u b l i c i n t g e t _ r e P a s s I n R o t o r ( i n t i ) {2 r e t u r n ( ( ( e x i t _ p a t h . indexOf ( ( i + p o s i t i o n ) %26)

)−p o s i t i o n +26) %26) ;3 }

On illustre à nouveau ce procédé par du code. Le rotorreçoit donc le signal depuis la gauche, vers ce qu’onconsidérait juste au-dessus comme une sortie. De nouveau,le rotor tourne sur lui-même, donc le signal arrive à sa"sortie" (i+position)%26. Et il faut donc trouver à quelle"entrée" cette dernière est liée, ce qui est encore fait avecentry_path, on envoie le signal via cette "entrée" sans,encore une fois, oublié que le rotor n’est probablement pasà sa position 0.

Une fois passée par les trois rotors, on récupère unelettre que l’on passe à nouveau par le plugboard, la lettrealors obtenue est le résultat final de la machine Enigma,notre lettre est codée et on peut l’ajouter au message codé.

Interface Graphique

FIGURE 9 – Interface simulation fonctionelle.

L’interface graphique permet donc juste à l’utilisateurd’interagir avec la machine Enigma, de modifier sesparamètres, la position de ses rotors, de lier des lettres dansla plugboard, d’écrire les messages à coder et de les décoder.

L’utilisateur peut donc modifier les rotors et le reflectorutilisés grâce à une liste, et la position de chaque grâceà deux boutons qui permettent soit d’incrémenter soit dedécrémenter la position d’un rotor.Pour lier deux lettres dans la plugboard, il suffit de lessélectionner dans les listes adéquates et d’appuyer sur lebouton <link>, de même pour les délier avec cette fois-ci lebouton <unlink>.Un espace de texte est dédié à l’entrée du message à coder,n’importe quel caractère peut y être rentré, mais il fautsavoir que seules les lettres simples seront codées, tout autrecaractère ne sera pas modifié.Un espace similaire est dédié seulement à l’affichagedu message codé, le texte affiché dedans n’est lui pasmodifiable.

Simulation VisuelleLa deuxième simulation devait être plus visuelle, de

permettre à l’utilisateur de voir les différentes étapes qui sedéroulent lors de l’encodage d’une lettre.L’intérieur reste quant à lui identique, c’est-à-dire que lamanière dont la machine fonctionne dans la simulation n’estpas modifiée. Les mêmes algorithmes sont utilisés pour lesdeux simulations, ce qui va de soi, et on ne modifie donc quela manière dont l’utilisateur reçoit l’information.De plus, une zone supplémentaire est dédiée à afficher lesdifférentes étapes par laquelle passe la lettre pendant sonencodage.

6

Page 7: Simulation visuelle et fonctionnelle de la machine Enigma M3 · 2016-07-06 · Simulation visuelle et fonctionnelle de la machine Enigma M3 David Fishel1 1Université Libre de Bruxelles,

Interface Graphique

FIGURE 10 – Interface simulation visuelle.

L’entrée Ici, la manière d’entrée et sortie de l’informationest modifiée. Pour encoder une lettre, il y a maintenantun bouton pour chacune d’entre elles, ceci aide à simulerl’entrée comme sur une machine physique.

Visualisation Pour montrer à l’utilisateur les différentsprocessus lors de l’utilisation de la machine, les composantss’illuminent tour à tour.Tout d’abord, lors de la rotation de chaque rotor, ceuxqui tournent s’illumineront et puis s’éteindront. Le nom dechaque rotor ayant tourné est affiché.Ensuite, la lettre passe par la plugboard, cette dernières’illumine et la modification est inscrite dans la zone dédiée.Par la suite, à chaque fois que la lettre passe dans un rotorque ce soit dans un sens ou l’autre, celui-ci s’illumine et lamodification de celle-ci est inscrit dans la zone dédiée.La lettre repasse une dernière fois par la plugboard quis’illumine à nouveau et se dirige vers la sortie.

La sortie Pour afficher la lettre codée à la sortie, commesur la machine, une petite loupiote correspondant à celle-ci s’illuminera. Le résultat final est bien sûr affiché dans lazone dédiée.

ConclusionDurant son temps, la machine Enigma était un moyen

très sûr pour encrypter ses messages. Ce n’est que dû à uneforte utilisation par l’armée, menant à quelques erreurs desopérateurs qui a permis de casser le code.

Deux simulations de la machine Enigma M3 ont étéimplémentée, une strictement fonctionnelle et une plusvisuelle. La fonctionnelle permet simplement de coder unmessage entier, tandis que la seconde permet à l’utilisateur

de voir le processus de chiffrement d’une lettre ainsi queson évolution durant ce parcours.Ces simulations utilisent le vrai code Enigma, elles seraientdonc capables de décoder un message codé avec une vraiemachine.

RemerciementsCe travail a été soutenu par l’Université Libre de

Bruxelles, sous les conseilles de O. Markowitch et N.Veshchikov.

ReferencesCryptoMuseum (2015). Enigma.

http://cryptomuseum.com/crypto/enigma/index.htm

CryptoMuseum (2015). Enigma m3.http://cryptomuseum.com/crypto/enigma/m3/index.htm

CryptoMuseum (2015). Bletchley Parkhttp://cryptomuseum.com/bp/index.htm

CryptoMuseum (2015). History of Enigmahttp://cryptomuseum.com/crypto/enigma/hist.htm

Dade, L. (2006). Navy m3/m4 enigma machine emulator.http://enigma.louisedade.co.uk/enigma.html

Palloks, D. (2007). Universal enigma.https://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v20_en.html

Wikipedia (2016). Enigma machine.https://en.wikipedia.org/wiki/Enigma_machine

Wikipedia (2016). Enigma rotor detailshttps://en.wikipedia.org/wiki/Enigma_rotor_details

Wikipedia (2016). Cryptanalysis of the Enigmahttps://en.wikipedia.org/wiki/Cryptanalysis_of_the_Enigma

Wikipedia (2016). Biuro Szyfrówhttps://en.wikipedia.org/wiki/Biuro_Szyfrów

Wikipedia (2016). Arthur Scherbiushttps://en.wikipedia.org/wiki/Arthur_Scherbius

7