Hagelin CX-52


Présentation

Les machines Hagelin CX-52 sont l'aboutissement de la serie C. A la différence des modèles précédents, les roues peuvent tourner de manière non régulière. Cette machine conçu pendant la guerre froide apporte donc une sécurité de très haut niveau.

Une des particularités de cette machine est qu'elle existe en de très nombreuses variantes. Elle a été vendu dans de nombreux pays (au moins 60), et chaque fois avec des particularités.

La plupart des modèles sont également compatibles avec les modèles anciens (C-35/36, C-38) ainsi qu'avec les modèles plus récents (CD-57).

Les différents modèles

Voici les types les plus connues

  • La C-52: elle fonctionne comme les anciens modèles : les roues avancent d'un cran chaque fois qu'un caractère est chiffré. Elle utilise 6 roues parmi un choix de 12. La péridode varie de 25 à 47.
  • La CX-52: l'avancement des roues est irrégulier. Elle utilise 6 roues de période 47. La serie D appartient à cette catégorie mais elle est fournit avec 6 roues (29, 31, 37, 41, 43 et 47). La machine de l'armmée française est également de ce type mais fournie avec 12 roues.
  • La CXM: l'avancement des roues est irrégulier mais controlè par cinq barres qui agissent chacune spécifiquement sur une roue. Ces barres selon les modèles agissent ou non sur le chiffrement.

Autres éléments de différentiation

  • Le sens du chiffrement: le décalage des barres est soit ajouté ou retiré pour obtenir la lettre chiffrée.
  • Le type et la taille de l'alphabet.

La mise à la clé :

La clé interne

  • La position des cavaliers
  • Le choix des roues codeuses
  • Pour chaque roue, la position des ergots

La clé externe

  • La position initiale des roues
  • Le choix de l'alphabet de substitution
  • Le décalagea entre les deux alphabets (clair/chiffré)
  • Le choix du mode normal ou incrémental (selecteur FV)
De plus, le sélecteur C/D permet de choisir entre chiffrement et déchiffrement. Dans le mode chiffrement, le chiffré est imprimé par groupe de 5 lettres. Dans le mode déchiffrement, une lettre (par exemple X) est remplacé par un espace.

Simulateur

Le simulateur CX-52 fonctionne en mode texte. Il est écrit en langage Python. L'interpréteur Python doit être installé. Le simulateur est hautement configurable grâce à des fichiers. Il est possible d'utiliser moins que 6 roues. Cette fonctionnalité est agréable pour réaliser des tests.

La ligne de commande

La syntaxe est la suivante:
  • Le type de la machine (C52,CXM,CXMbis,serie_D,French)
  • La clé interne (position des cavaliers sur la cage à écureuil)
  • Le nom des fichiers correspondant aux 6 roues choisies
  • La clé externe (Le décalage entre les alphabets, le selecteur FV et les alphabets)
  • La position initiale des roues (chacune séparée par ":")

Le format du fichier TYPE

Ce fichier spécifie le type de CX-52 utilisé. Il correspond à la clé de base. Il a l'extension *.bar. La première ligne indique le nombre de barrettes et le sens d'ajout du décalage: 0 ou 1. La valeur "1" correspond à un ajout du décalage et "0" à un retrait. Chacune des lignes suivantes décrivent une barrette. Le format d'une de ces lignes est le suivant:

  • L'indication si la barre intervient dans le calcul du décalage. La valeur "1" spécifie qu'elle intervient et la valeur "0" qu'elle n'agit que sur les roues.
  • Le champ suivant (séparé par un "-") spécifie l'action sur les roues. L'action sur chaque roue est composé de deux nombres et chaque roue est séparée par ":" :
    • Le nombre à gauche spécifie l'action quand la barre n'est pas active
    • Le nombre à droite spécifie l'action quand la barre est active
    • Dans les deux cas, la valeur "1" spécifie que la roue correspondante avance d'un cran et la valeur "0" indique qu'aucune action n'est réalisée

Le format du fichier clé interne

Ce fichier décrit essentiellement la position des cavaliers. Il a l'extension *.lug. La première ligne spécifie le nombre de barrettes. Ensuite chaque ligne décrit une barrette. Par exemple la valeur "010000" indique qu'il n'y a qu'un seul cavalier en deuxième position.

Le format d'un fichier de roue

Chaque roue physique est décrit par un fichier ayant l'extension *.whl.
  • La première ligne indique le nombre d'ergots.
  • La deuxième ligne indique le décalage entre l'ergot actif et l'indicateur visible extérieurement.
  • La troisième ligne spécifie les indicateurs visibles de l'extérieur.
  • La quatrième ligne spécifie la valeur des ergots.
  • Les lignes suivantes sont des commentaires.

Le format du fichier clé externe

  • La première ligne indique le décalage entre les deux alphabets.
  • La deuxième ligne spécifie la valeur du selecteur FV: "0" correspond au mode normal et "1" au mode incrémental.
  • La troisième ligne correspond à l'alphabet normal
  • La quatrième ligne correspond à l'alphabet inverse

Justesse

Ce simulateur a été testé via un jeu d'essai provenant d'une CX-52 serie D. Il est également conforme (via les types CXM et CXMbis) au simulateur de Dirk Rijmenants. Dans le type CXMbis, les cinq premières barrettes n'agissent pas sur le décalage. Inversement dans le type CXM, les cinq premières barrettes agissent aussi bien sur l'avancement des roues que sur les décalages.

J'espère que ce simulateur pourra également être testé par rapport à d'autres modèles de CX-52.

L'archive

Exemple d'utilisation:


C:\> pax -r -f cx-52.tar

C:\> cd cx-52

C:\CX-52>echo "TOBEORNOTTOBE" |python cx-52.py serie_D B1 B47 B43 B29 B37 B31 B41 cle2 08:01:13:12:05:20
VNLBYSHNFWZLV

C:\CX-52>python cx-52.py CXM D1 D41 D37 D43 D47 D31 D29 cle1 H:A:M:L:E:T  < tobe.txt
VXHPNNDYKQOGEAHJPWNHTNQOTLKRUWHJATWLSGLYQGPBDSARPWFKRBWNTIRD

C:\CX-52>python cx-52.py CXM D1 D41 D37 D43 D47 D31 D29 cle1 H:A:M:L:E:T  < tobe.txt |python groupe.py
VXHPN NDYKQ OGEAH JPWNH TNQOT LKRUW HJATW LSGLY QGPBD SARPW
FKRBW NTIRD

C:\CX-52>echo "TOBEORNOTTOBE" |python cx-52.py CXMbis D1 D41 D37 D43 D47 D31 D29 cle1 H:A:M:L:E:T DE
Switch FV:  0  Direction:  -1 Alphabet:  ABCDEFGHIJKLMNOPQRSTUVWXYZ
Shift:  A   Extern Key:   < H- A- M- L- E- T>
001 [1, 0, 0, 0, 0, 0]  6 < I- B- N-21-06- U> T -> Z -> A
002 [0, 1, 1, 0, 0, 0] 10 <14- B-23- M- F- V> O -> Y -> B
003 [0, 1, 0, 0, 1, 0] 13 < J- B- O-23- G- W> B -> O -> L
004 [1, 1, 1, 1, 1, 1] 27 < K- C-25- N- H- X> E -> F -> U
005 [0, 1, 1, 0, 1, 1] 20 <17- C- P-25- I- Y> O -> I -> R
006 [1, 1, 0, 1, 0, 0] 16 < L-04- Q- 0- J- Z> R -> H -> S
007 [0, 0, 0, 0, 1, 0]  8 < M-04- Q- 0- J-29> N -> V -> E
008 [0, 0, 0, 0, 1, 1] 12 <20-04- Q- 0- J- A> O -> A -> Z
009 [1, 0, 0, 0, 1, 1] 17 < N- D-28-27-12- B> T -> K -> P
010 [0, 0, 1, 1, 0, 0] 13 <22- D-28- P- K- C> T -> G -> T
011 [1, 0, 1, 0, 0, 1] 18 < 0- E- R-29- L- D> O -> G -> T
012 [0, 0, 0, 1, 1, 1] 16 < P- E- R-29- M- E> B -> R -> I
013 [1, 0, 0, 1, 0, 0] 12 <25-07-30- Q- N- F> E -> Q -> J
ABLURSEZPTTIJ

C:\CX-52>echo "AAAAAAAAA" | python cx-52.py serie_D b1 - - B41 - B37 - cle1 01:01:01:01:01:01
MMMMEZEZE

C:\CX-52>more wheels\B29.whl
29
9
01:02:03:04:05:06:07:08:09:10:11:12:13:14:15:16:17:18:19:20:21:22:23:24:25:26:27:28:29:
00000010000010001001000100010
12345678901234567890123456789
         1         2
=== roue B29

C:\CX-52> more wheels\B1.lug
32
100000 ===01
010000 ===02
010000 ===03
010000 ===04
011000 ===05
001000 ===06
...
000001 ===30
000001 ===31
000001 ===32

C:\CX-52> more wheels\CXMbis.bar
32:1
0-11:01:00:00:00:00 ==01
0-00:00:01:00:00:00 ==02
0-00:00:00:01:00:00 ==03
0-00:00:00:00:01:00 ==04
0-00:00:00:00:00:01 ==05
1-00:00:00:00:00:00 ==06
1-00:00:00:00:00:00 ==07
1-00:00:00:00:00:00 ==08
...
1-00:00:00:00:00:00 ==30
1-00:00:00:00:00:00 ==31
1-00:00:00:00:00:00 ==32

C:\CX-52>more wheels\cle1.key
A
0
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ZYXWVUTSRQPONMLKJIHGFEDCBA

Remerciements

Je tiens à remercier Dirk Rijmenants pour toutes les précisions qu'il m'a donné concernant la CX-52 et son simulateur.

Liens