Décodeurs de code de substitution

Ce calculateur en ligne essayer de décoder un code par substitution sans connaître la clef. Il ,utilisent un algorithme génétique sur la fonction de justesse du texte pour décoder le texte coé.

Le calculateur ci-dessous essaye de décoder le texte codé avec un simple code de substitution sans connaître la clef. La logique du calculateur est expliquée sous le calculateur.
Attention ce calculateur se base sur les statistiques textuelles anglaises et donc ne fonctionne que pour des textes rédigés en anglais.

PLANETCALC, Décodeurs de code de substitution

Décodeurs de code de substitution

Clef
 
Texte décodé
 
Justesse du texte initial
 
Justesse du texte final
 
Le fichier est très volumineux; un ralentissement du navigateur peut se produire pendant le chargement et la création.

En cryptographie, un code de substitution est une méthode de codage suivant quelle des unités de texte pur sont remplacées par un texte codé suivant un système fixé ; les "unités" peuvent être des lettres simples (le plus commun), des paires de lettres, des triplets de lettres, un mélange des trois, et autres. Le récepteur décode le texte en réalisant la substitution inverse. La substitution de lettres uniques séparément — substitution simple — peut être démontrée en écrivant l'alphabet dans un certain ordre pour représenter la substitution. C'est une clef de code et c'est également appelé alphabet de substitution1

Pour un code de substitution simple, l'ensemble de clefs possible est fixé par l'ensemble de toutes les permutations possibles. Ainsi, pour l'alphabet anglais, le nombre de clefs est 26! (factoriel 26), soit environ 403*10^{24}. De ce fait, si vous voulez décoder le texte sans connaître la clef, une approche par force brute est hors de question.

Cependant, le code de substitution simple est considéré comme un code faible, car il est vulnérable à l'analyse cryptographique. Tout d'abord, la substitution ne change pas les fréquences des lettres, donc si le texte codé est long et que vous savez dans quelle langue il a été écrit, vous pouvez essayer une analyse de fréquences. Par exemple, la lettre la plus commune dans l'alphabet romain est le E, donc, la lettre la plus présente dans le texte codé est probablement E. L'analyse regarde également les fréquences des bigrammes et trigrammes commun, car certaines fréquences unigrammes sont trop proches les unes des autres pour se reposer dessus. L'utilisation de l'analyse des fréquences peut créer des clefs tests, et les tester pour voir si elles révèlent certains mots et phrases dans le texte codé.

Néanmoins, cette approche manuelle prend beaucoup de temps, ainsi le but de la solution automatisée est d'exclure l'être humain du processus de décodage du code. Et cela est possible, du fait d'une autre vulnérabilité de la substitution simple, connue comme l'Utilité de la Solution Partielle.

En d'autres termes, s'il y a de nombreuses paires de clefs dans l'espace des clefs où le décodage du texte codé par la clef la plus similaire à la bonne clef utilisée, plus la ressemblance au texte en clair est proche que le décodage du texte codé par une autre clef, le code a une Utilité de Solutions Partielles... S'il y a une corrélation entre le degré de ressemblance de la clef par rapport à la bonne clef, et le degré suivant lequel le décodage du texte codé par cette clef ressemble au texte en clair, il est possible de chercher efficacement l'espace des clefs en rejetant les clefs qui sont "pires" que toute clef étant la plus proche à ce moment, en se rapprochant de plus en plus de la clef optimale sans la connaître initialement. Plus spécifiquement, ces espaces de clefs peuvent être cherchés avec les Algorithmes d'Optimisation Stochastique.2

La partie délicate ici est comment mesure si une clef est "pire" qu'une autre. Pour résoudre cela, nous avons besoin de la **justesse du texte" qui nous donne un genre de score su comment un texte donné ressemble à un texte anglais typique. Il y a différentes approches, et j'ai essayé ceci et cela, mais une qui a fonctionné pour moi est mentionnée ici : Text fitness (version 3). En résumé, elle utilise la somme des probabilités du registre des quadrets et la compare avec le somme du texte anglais "normal" (créé comme la somme des probabilités du registre des quadrets les plus fréquents en anglais). Pour cela, je souhaite remercier Jens Guballa (site), auteur d'un autre décodeur de substitution, qui m'a gentiment donné l'indice que la fonction de justesse du texte devrait être "normalisée".

L'implantation ci-dessous utilise un algorithme génétique pour chercher la bonne clef. Si elle échoue, vous pouvez essayer de la répéter quelques fois (à chaque fois, elle commence avec un ensemble de clefs aléatoires) ou d'affiner les paramètres, par exemple, en augmentant le nombre de générations. Cliquez just sur les Détails pour révéler des paramètres supplémentaires. Dans ce monde, la calculateur affiche également la meilleure clef de chaque génération, ce qui est assez intéressant à regarder.

Si vous voyez que la clef trouvée est proche de celle correcte, mais que vous voulez affiner quelques lettres, vous voudrez utiliser l'Outil de code de substitution pour tester manuellement la clef.

URL copiée dans le presse-papiers
PLANETCALC, Décodeurs de code de substitution

commentaires