Chiffre ABC

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Le chiffrement ABC a été utilisé par les Allemands à la fin de 1914 en remplacement du chiffrement UBCHI cassé par la section Chiffre du Grand quartier général français.

Peu robuste cette méthode de chiffrement n'a pas résisté longtemps aux cryptologues français.

Histoire[modifier | modifier le code]

De 1912 à 1914 l'armée allemande utilisait un système de chiffrement des messages unique, le chiffrement UBCHI[note 1] avec une même clef pour l'ensemble de l'armée, changée régulièrement (tous les huit à dix jours)[1].
Le service du Chiffre du général Cartier a découvert la méthode de chiffrement (deux transpositions utilisant la même clef) avant même le début de la guerre et mis au point un système permettant de retrouver cette clef à partir de trois messages interceptés de longueurs comparables.

Grâce à un message déchiffré, l'armée française bombarde Tielt (Belgique) le , au moment où l'empereur Guillaume II passe ses troupes en revue (tuant deux de ses aides de camp mais laissant le Kaiser indemne[2]). Mais des journaux français (notamment Le Matin) ont dévoilé publiquement l'information, obligeant les Allemands à changer précipitamment leur code (ce qui explique sa faiblesse)[3].

Le nouveau code le remplaçant — surnommé ABC — sera vite cassé, mais là encore cet avantage stratégique sera dévoilé, par l'armée française elle-même cette fois : le soir du réveillon de Noël 1914 une poésie satirique composée avec le code allemand a été diffusée sur les ondes hertziennes[4].


Principe[modifier | modifier le code]

Le chiffrement s'effectue en deux étapes.

D'abord une substitution utilisant le Chiffre de Vigenère avec une clef à la fois fixe et très courte (plus la clef est longue plus il est difficile de casser le code) qui a donné son nom au code : ABC.

Puis le message obtenu est transformé par une simple transposition rectangulaire codée avec une clef changée elle régulièrement[4].

Chiffrement[modifier | modifier le code]

Soit le message « WIKIPEDIA EST UN PROJET D ENCYCLOPEDIE COLLECTIVE ». Le mot-clef « SAVOIR » a été au préalable transmis au destinataire. Il sera utilisé lors de la seconde étape.

Première étape[modifier | modifier le code]

On utilise le carré de Vigenère limité à la clef ABC, c'est-à-dire que pour chaque lettre correspondant à la lettre A de la clef, on applique le décalage correspondant à la lettre A (à savoir aucun décalage), pour chaque lettre correspondant à la lettre B de la clef, on applique le décalage correspondant à la lettre B (décalage d'une lettre, donc G devient H, H devient I, etc.) et pour chaque lettre correspondant à la lettre C de la clef, on applique le décalage correspondant à la lettre C (décalage de deux lettres, donc G devient I, H devient J, etc.), la clef étant répétée sur toute la longueur du message.

Avec l'exemple cité en introduction :

W I K I P E D I A E S T U N P R O J E T D E N C Y C L O P E D I E C O L L E C T I V E
A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A
W+0 I+1 K+2 I+0 P+1 E+2 D+0 I+1 A+2 E+0 S+1 T+2 U+0 N+1 P+2 R+0 O+1 J+2 E+0 T+1 D+2 E+0 N+1 C+2 Y+0 C+1 L+2 O+0 P+1 E+2 D+0 I+1 E+2 C+0 O+1 L+2 L+0 E+1 C+2 T+0 I+1 V+2 E+0
W J M I Q G D J C E T V U O R R P L E U F E O E Y D N O Q G D J G C P N L F E T J X E

On obtient ainsi un message intermédiaire :

WJMIQGDJCETVUORRPLEUFEOEYDNOQGDJFCPNLFETJXE

Seconde étape[modifier | modifier le code]

Le mot-clef est écrit dans un tableau et chaque colonne se voit attribuer un numéro suivant l'ordre alphabétique (si une lettre est présente plusieurs fois l'ordre de lecture est utilisé : pour la clef WIKIPEDIA la clef serait ainsi codée 9 4 7 5 8 3 2 6 1) et le message obtenu lors de la première étape est recopié dans ce tableau :


S A V O I R
5 1 6 3 2 4
W J M I Q G
D J C E T V
U O R R P L
E U F E O E
Y D N O Q G
D J G C P N
L F E T J X
E

Le message chiffré final est obtenu en lisant d'abord la colonne numérotée 1, de haut en bas (ici JJOUDJF), puis la colonne numérotée 2 (ici QTPOQPJ), etc.

Dans notre exemple le message est donc :

JJOUD JFQTP OQPJI EREOC TGVLE GNXWD UEYDL EMCRF NGE


Déchiffrement[modifier | modifier le code]

Pour déchiffre le message reçu (en étant en possession de la clef) il faut d'abord reconstituer le tableau final, puis en déduire message intermédiaire issu de la table de Vigenère et enfin reconstituer le message initial.

Notons m le nombre de lettres du message et c le nombre de lettre de la clef. dans l'exemple, m = 43 et c = 6.


Première étape[modifier | modifier le code]

La division euclidienne de 43 par 6 donne un quotient de 7 et un reste de 3 (43 = 6 x 7 + 1). Le tableau a donc 6 colonnes (le nombre de lettres de la clef), la première est composée de 8 lignes et les cinq autres de 7 lignes (de manière plus générique, si m = c x q + r, les r premières colonnes ont une taille de (q+1) et les (c-r) autres une taille de q).

On peut donc reconstituer le tableau

S A V O I R
5 1 6 3 2 4

La colonne 1 est une colonne à 7 lignes, on y met donc les 7 premières lettres, JJOUDJF, de haut en bas.

S A V O I R
5 1 6 3 2 4
J
J
O
U
D
J
F

La colonne 2 est une colonne à 7 lignes, on y met donc les 7 lettres suivantes, QTPOQPJ, de haut en bas.

S A V O I R
5 1 6 3 2 4
J Q
J T
O P
U O
D Q
J P
F J

Et ainsi de suite jusqu'à reconstituer le tableau en entier :

S A V O I R
5 1 6 3 2 4
W J M I Q G
D J C E T V
U O R R P L
E U F E O E
Y D N O Q G
D J G C P N
L F E T J X
E

On retrouve bien le tableau identique à celui obtenu lors de la seconde étape du chiffrement, et en le lisant ligne par ligne le message « WJMIQGDJCETVUORRPLEUFEOEYDNOQGDJFCPNLFETJXE » obtenu à la fin de la première étape.

Deuxième étape[modifier | modifier le code]

Lors de la seconde étape du déchiffrement il suffit d'appliquer la substitution inverse à celle de la première étape :

W J M I Q G D J C E T V U O R R P L E U F E O E Y D N O Q G D J G C P N L F E T J X E
A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A
W-0 J-1 M-2 I-0 Q-1 G-2 D-0 J-1 C-2 E-0 T-1 V-2 U-0 O-1 R-2 R-0 P-1 L-2 E-0 U-1 F-2 E-0 O-1 E-2 Y-0 D-1 N-2 O-0 Q-1 G-2 D-0 J-1 G-2 C-0 P-1 N-2 L-0 F-1 E-2 T-0 J-1 X-2 E-0
W I K I P E D I A E S T U N P R O J E T D E N C Y C L O P E D I E C O L L E C T I V E

Et on obtient « WIKIPEDIA EST UN PROJET D ENCYCLOPEDIE COLLECTIVE ».

Cryptanalyse[modifier | modifier le code]

Si le Chiffre de Vigenère a résisté aux cryptologues pendant plusieurs siècles, il n'offre plus aucune sécurité depuis que le major prussien Friedrich Kasiski qui a publié (en 1863) sa méthode pour le casser. Le test de Kasiski est d'autant plus efficace que la clef (ABC) est courte[5].

La seconde partie du code est une simple transposition qui ne résiste pas à une analyse fréquentielle.

Le Chiffre ABC est donc peut résistant, d'autant moins qu'une équipe est dédiée à sa casse (l'analyse étant à refaire partiellement à chaque changement de clef).

Le le capitaine de réserve d'artillerie Georges Painvin fait parvenir au service du Chiffre un mémoire exposant une méthode pour reconstituer la clef du système ABC à partir d'un unique message, le système ARC. La méthode est extrêmement efficace et Georges Painvin est intégré au service du Chiffre où il montrera l'étendue de son talent durant la suite de la guerre[3].

Notes et références[modifier | modifier le code]

Notes[modifier | modifier le code]

  1. Ubchi étant le nom donné par le service du Chiffre Français, contraction de Übung (exercice) et de Chiffre

Références[modifier | modifier le code]

  1. « Le chiffre UBCHI », sur bibmath.net (consulté le 17 mars 2016)
  2. Alphonse Nicot, La Grande Guerre, vol. 2 : De la Marne à la mer, Maison Alfred Mame et fils, (LCCN 18018117, lire en ligne), p. 247
  3. a et b Général Desfemmes, « LE RADIOGRAMME DE LA VICTOIRE », La jaune et le rouge,‎ (lire en ligne)
  4. a et b « Le chiffre ABC », sur bibmath.net (consulté le 17 mars 2016)
  5. « Décryptement du chiffre de Vigenère (théorie) », sur apprendre-en_ligne.net (consulté le 18 mars 2016)

Annexes[modifier | modifier le code]

Articles connexes[modifier | modifier le code]