La nema


Présentation

La machine à chiffrer NEMA (NEue MAschine) est une machine à chiffrer SUISSE. Elle est entrée en fonction en 1947 pour remplacer l'Enigma qui était antérieurement utilisé par l'armée SUISSE.

La NEMA ressemble énormément à l'Enigma. Elle posséde des rotors, un réflecteur. On saisie une lettre sur un clavier de machine à écrire et la lettre chifrée (ou déchiffrée) correspondante apparait sur un panneau grâce à une lampe.

Simulateur

Le simulateur suivant fonctionne en mode texte. Il est écrit en langage Python. En conséquence, un interpréteur de ce langage doit être installé. Il faut préciser via la commande SET PATH=... l'emplacement de l'interpréteur.

L'archive contient le simulateur sous forme de fichiers .py et le répertoire rotors contenant les rotors et les roues entraineuses. L'archive a été crée par la commande ISO pax. Celle-ci est disponible (ou installable) sur les systèmes UNIX, Windows, etc... A défaut, on peut utiliser Winzip.

Le programme groupe.py permet un affichage par groupe de 4 ou 5 lettres. Utiliser le mot help en argument pour en savoir plus.

En mode debug, le simulateur affiche la position des ergots actifs des roues d'entrainement ainsi que la transformation de chaque rotor. Pour la roue d'entrainement numéro un (la roue rouge), les érgots sont données pour les deux plateaux gauche (L) et droit (R). Les rotors et les roues sont de simples fichiers. Il est facile d'en créer d'autres.

L'archive

Exemple d'utilisation:

C:\>pax -r -f NEMA.TAR

C:\>cd NEMA

C:\NEMA>set PATH=%PATH%;C:\Program Files\Python

C:\NEMA>python nemaTD.py
syntax : nemaTD.py InternKey ExternKey [RedKey [debug]]
Example: echo AAAAA | nemaTD.py 16:A:19:B:20:C:21:D  CCCCCCCCCCC 23:02
PCCPX

C:\NEMA>echo AAAAAA |python nemaTD.py 16:A:19:B:20:C:21:D CCCCCCCCCC 23:02 debug
['16', 'A', '19', 'B', '20', 'C', '21', 'D'] 23:02 CCCCCCCCCC
9 7 5 3 L R CCCCCCCCCC                             0
1 1 0 1 1 0 BBCCCBCCBB A Q Q J O D < Q > V Y J R P 1
1 1 1 1 1 0 AACCBACCAA A Q Z L A N < B > Z D G F C 2
1 1 0 1 1 0 ZZCCBZCCZZ A Q N R Y P < X > S T E F C 3
0 1 1 1 1 1 ZYBBAYBBYY A Q D G V G < Q > Z S O R P 4
1 1 0 1 1 0 YXBBAXBBXX A Q F U T Y < Q > Z S O G X 5
1 1 1 1 1 0 XWBBZWBBWW A Q Z Y J N < A > S R V V Z 6
PCCPXZ

C:\NEMA>python nemaTD.py 16:A:19:B:20:C:21:D SHAKESPEAR 23:02 
	< plain.txt | python groupe.py
WINYA OTQIJ HXHWI GPRXB LRTNI WJSWB OAWEZ PBQQL FCXCI ZMQLD
XOBOY ZQODI RTLHS HBOUP BUEXN QOOVI MCJGX CXJBL PNBJG OCGSB
MIOUQ TOPKZ QJJVJ GXKNN GLXDV BOETT DRCUJ ETSWU TMYTB PZATA
JLJJF MPCMI QOOVW ERPFN RFAWM CZUUT WEGXR VGNZQ UY

C:\NEMA>python nemaTD.py 16:A:19:B:20:C:21:D SHAKESPEAR 23:02
WINYA OTQIJ HXHWI GPRXB PRTNI WJSWB
^Z
TOBEORNOTTOBETHATISTSEQUESTION

C:\NEMA>dir rotors /w
 Le volume dans le lecteur C n'a pas de nom.
 Le numéro de série du volume est BC20-30A6

 Répertoire de C:\NEMA\rotors

[.]       [..]      01.drv    02.drv    12.drv    13.drv    14.drv    15.drv
16.drv    17.drv    18.drv    19.drv    20.drv    21.drv    22.drv    23.drv
A.rot     B.rot     C.rot     D.rot     E.rot     ETW.rot   F.rot     UKW.rot
              22 fichier(s)            1 462 octets
               2 Rép(s)   6 245 605 376 octets libres

C:\NEMA>more rotors\02.drv
00000000001011001000000001
ABCDEFGHIJKLMNOPQRSTUVWXYZ
= Nema - drive wheel 02

C:\NEMA>more rotors\A.rot
RDPUMKVEQAOXYCWLFTNBZJHSGI
= Nema Rotor - A =

Références

Geoff Sullivan and Frode Weierud, The Swiss NEMA Cipher Machine, Cryptologia, 23(4), October 1999, pp310–328.
Cet article décrit le fonctionnement de la NEMA. Grâce à lui, j'ai pu écrire rapidement mon simulateur sans être obligé d'inspecter en détails une vraie machine.

Liens