Comment reconnaître un chiffrement ?
Bien qu'en cryptanalyse théorique on considère que le système
de chiffrement est connu, dans la réalité il n'en est pas ainsi. Nous donnons
ici quelques pistes pour reconnaître un chiffre. Puis nous verrons une méthode
récente utilisant les réseaux de neurones
artificiels.
La première choses à faire quand on se trouve devant un message chiffré est de faire des statistiques: nombre de lettres, fréquence de chaque symbole, histogramme. De l'histogramme on peut déjà dire si c'est une substitution simple, une transposition ou... autre chose.
 |
|
 |
Exemple d'histogramme caractéristique d'une
substitution simple (en français) |
|
Exemple d'histogramme caractéristique d'une
transposition (en français) |
Si c'est une substitution simple, on doit retrouver des pics, qui correspondront aux lettres les plus fréquentes de la langue (par exemple, dans l'exemple ci-dessus, le E est très probablement remplacé par le B).
Si c'est une transposition, l'histogramme des lettres sera presque identique à l'histogramme théorique de la langue (les fréquences des lettres seront les mêmes puisqu'elles n'ont pas été remplacées).
Si c'est une substitution simple ou une transposition, on peut aussi deviner la langue d'après les statistiques d'apparition des lettres pour une langue donnée.
Si on retrouve pas de pics, c'est que l'on a affaire à un autre type de chiffrement.
 |
Exemple d'histogramme caractéristique d'un
chiffre de Vigenère (en français) |
Les symboles utilisés dans le cryptogramme sont des lettres
Soit n le nombre de lettres du cryptogramme.
- Si on a un nombre pair de lettres et qu'il n'y a que peu de lettres différentes, on peut les regrouper par deux et les interpréter comme des coordonnées dans une grille (voir le chiffre ADFGVX).
- S'il n'y a que 9 lettres différentes, c'est peut-être un chiffre de Collon.
- Si on a supposé qu'il s'agit d'une transposition, disposer les lettres en a lignes et b colonnes, avec a·b=n. Essayer ensuite de retrouver la règle de transposition (facile à dire!).
- Si n est un carré (p. ex 64, 81, 100, etc), il faut penser à l'utilisation d'une grille carrée, et peut-être d'une grille tournante.
- Il peut aussi s'agir d'une substitution homophonique.
- Le cryptogramme peut aussi avoir été construit à partir d'un système à répertoire.
Les symboles utilisés dans le cryptogramme sont des chiffres
Il y a plusieurs façons d'interpréter ces chiffres. En voici quelques-unes:
- Si les nombres sont compris entre 1 et 26, il s'agit peut-être d'une substitution simple, où un nombre remplace une lettre (par exemple A=1, B=2, etc.). Pour en être sûr, faire un histogramme.
- Si les nombres données sont compris entre -25 et 25, il s'agit peut-être de décalages par rapport à l'alphabet usuel ou à un texte qui sert de clef.
- Si on a un nombre pair de chiffres, on peut les regrouper par deux et les interpréter comme des coordonnées dans une grille (voir le chiffre de Polybe).
- Il s'agit aussi peut-être de la position d'une lettre dans un texte qui sert de clef (voir le chiffre du livre)
- Il peut aussi s'agir d'une substitution homophonique.
- Le cryptogramme peut aussi avoir été construit à partir d'un système à répertoire (voir le code Sittler).
Reconnaissance par apprentissage
Depuis les années 2010, des techniques utilisant des méthodes
d'apprentissage comme les réseaux de neurones ont été implémentées.
Les résultats sont encourageants. Cela fonctionne assez bien (mais pas
toujours) avec les systèmes de chiffrement les plus connus. Voici une
liste de sites où vous pourrez tester ces méthodes.
Références
Apprentissage
- Unsupervised
Cipher Cracking Using Discrete GANs, Aidan N. Gomez, Sicong Huang, Ivan
Zhang, Bryan M. Li, Muhammad Osama, Lukasz Kaiser, 2018
- Of
Ciphers and Neurons Detecting the Type of Ciphers Using Artificial
Neural Networks, Nils Kopal, 2020. Voir aussi la
vidéo dédiée à ce sujet (en anglais).
- Detection
of Classical Cipher Types with Feature-Learning Approaches, Ernst Leierzopf,
Vasily Mikhalev, Nils Kopal, Bernhard Esslinger,Harald Lampesberger, and Eckehard
Hermann, 2021
- A
Massive Machine-Learning Approach For Classical Cipher Type Detection Using
Feature Engineering, Ernst Leierzopf, Nils Kopal, Bernhard Esslinger,
Harald Lampesberger, Eckehard Hermann
- Classification
and Identification of Classical Cipher Type Using Artificial Neural Networks,
Ahmed Abd, Sufyan Al-Janabi, 2018