title: Chiffre ABC
text: # Chiffre ABC
  
  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
  
  De 1912 à 1914 l'armée allemande utilisait un système de chiffrement des messages unique, le chiffrement UBCHI avec une même clef pour l'ensemble de l'armée, changée régulièrement (tous les huit à dix jours).
  
  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 1er novembre 1914, au moment où l'empereur Guillaume II passe ses troupes en revue (tuant deux de ses aides de camp mais laissant le Kaiser indemne). 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).
  
  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.
  
  ## Principe
  
  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.
  
  ## Chiffrement
  
  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
  
  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
  
  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
  
  Pour déchiffrer 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
  
  La division euclidienne de 43 par 6 donne un quotient de 7 et un reste de 1 (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
  
  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
  
  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.
  
  La seconde partie du code est une simple transposition qui ne résiste pas à une analyse fréquentielle.
  
  Le Chiffre ABC est donc peu résistant, d'autant moins qu'une équipe est dédiée à sa casse (l'analyse étant à refaire partiellement à chaque changement de clef).
  
  Le 21 janvier 1915 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.
  
  