Le carré de Vigenère

Le carré de Vigenère est le premier et le plus célèbre chiffrement polyalphabétique.
Ce chiffrement se constitue d’une matrice carrée de 26 lignes et 26 colonnes.

Histoire :

Jean Trithème, dans le 5ème volume de ses 6 livres intitulés Polygraphiae décrit une table de sa création qu’il a nommée tabula recta dans lequel l’alphabet est répété sur 26 lignes, avec un décalage à gauche d’une lettre pour chaque nouvelle rangée.
En 1586, Blaise de Vigenère reprend cette idée dans son livre Traicté des chiffres, ou secretes manieres d’escrire. L’appellation chiffre de Vigenère apparut seulement à la fin du XVIIème siècle, en l’honneur de celui qui lui donna sa forme définitive.

 

Chiffrement :

Nous allons faire une matrice carrée de 26 positions horizontales par 26 positions verticales.

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

Nous avons ensuite 2 possibilités:

  • Nous pouvons utiliser une clé simple : nous déplacer d’une ligne vers le bas pour chacune des lettres du message original puis revenir à la première ligne une fois arrivé à la dernière.
    Par exemple pour la phrase « VENI VIDI VICI » :
    Pour chiffrer le premier « V », cherchons sa correspondance dans la ligne 1 : c’est le « V »
    Faisons la même chose pour le « E » dans la ligne 2 : c’est le « F »
    Pour le « N » : c’est le « P »
    […]
    « VENI VIDI VICI » nous donne donc « VFPL ZNJP DRMT » chiffré avec cette clé simple.
  • Nous pouvons également utiliser un message servant de clé, nous allons alors écrire la clé sous le message en la répétant autant de fois que nécessaire, puis on prend l’intersection entre la ligne (clé) et la colonne (message) correspondante et on obtient ainsi le message chiffré. Par exemple si on veut chiffrer le message « ATTAQUEZ LUNDI » avec la clé « FEVRIER » :
    Message original A T T A Q U E Z L U N D I
    Clé F E V R I E R F E V R I E
    Message chiffré F X O R Y Y V E P P E L M

    Le message chiffré serait alors « FXORYYVE PPELM »

Déchiffrement :

Le déchiffrement d’un message codé par un carré de Vigenère est symétrique par rapport au chiffrement. Nous traiterons ici uniquement du cas du chiffre de Vigenère avec une chaine de caractères lui servant de clé. Nous allons essayer de déchiffrer le message chiffré ci-dessus :

Message chiffré F X O R Y Y V E P P E L M
Clé F E V R I E R F E V R I E
Message original A T T A Q U E Z L U N D I

Pour la première ligne, on cherche une inconnue qui vérifie (?, F) = F, on va donc chercher la ligne dans laquelle se trouve « F » pour la colonne « F », c’est un « A ».
Cherchons ensuite la lettre qui vérifie (?, E) = X, on va donc chercher la ligne dans laquelle se trouve « X » pour la colonne « E », nous obtenons « T », nous continuons et retrouvons le message original.

Cryptanalyse :

Après avoir déterminé le type de chiffrement avec l’indice de coïncidence la première étape est de déterminer la taille de la clé. Pour cela nous allons utiliser le test de Kasiski, c’est-à-dire que nous allons chercher des répétitions qui sont probablement la même séquence de lettres du texte clair chiffré avec la même partie de la clé. Bien entendu plus le texte est long, plus la cryptanalyse sera aisée.

Nous étudierons ici le poème de Victor Hugo Demain, dès l’aube … avec la clé de chiffrement « BONJOUR ». Cela donne une chaîne de caractères sur laquelle je vais surligner les répétitions :

« EszjwhufgyjivvbzunilvpiouohtiwguowrndnpbyAfdnahcibwIxwmkvxrbocjrirci
gruhrwrmAjfnrduimosxfykkwejwjrsznvchkbuanXyefdhrgxvnshaslcpwamsnfjd
ydgffougnajjKszjfwyffnrzyjzshgtcofgfdfgvtdrwgyvtGnwglzfbixwlrvrrqcljtoabsh
kfbqasuldiakfozuGrdzcedcawifvecflcoicsynggrjbflfiztsrbHlzthrnhfvkchadilsabr
gyibqbvaycbbhrhDvosenuuiesejwhzmcemimfjfddwnfnprWwfvtjbrzyjbiyxwhuf
gpnbxrohinfmYbfsusoiFhddohukoeawpvsovssgvuhejwmlshnccgsfiakcohvsgm
sbfvlinfnvurrkfopffrnbzcfie »

Nous comparons alors les distances entre les répétitions en cherchant les diviseurs communs :

Séquence répétée Distance entre les répétitions Longueurs de clef possibles (diviseurs de la distance)
WHUFG 338 2, 169, 13, 26
RZYJ 182 91, 2, 7, 27, 13, 14
FNR 77 7, 11
INF 63 3, 21, 7, 9
EJW 217 et 84 7
IAK 189 3, 63, 7, 27, 9, 21

Nous pouvons remarquer que c’est le nombre 7 qui ressort le plus souvent.

Pour trouver ce nombre nous pouvons également étudier l’indice de coïncidence avec le test de Friedman. Ce test consiste à chercher pour quelle longueur de clé les sous-textes ont un indice de coïncidence moyen proche du français : voici les indice de coïncidence moyens en fonction des longueurs de clés :

Longueur de clé Indice de coïncidence moyen
2 0.042515
3 0.04321
4 0.0427525
5 0.04274
6 0.0430683
7 0.0684
8 0.04081125

Nous pouvons remarquer que la moyenne de l’IC (Indice de coïncidence) des sous-textes est la plus proche du français (0.074) pour une longueur de clé de 7.

Nous découpons alors notre texte en 7 sous-textes sur lesquels nous allons effectuer des analyses de fréquence monoalphabétiques.

1 EfbpinfbvrujmksbfnpjoKfzfttfvtfdudecjttksbboemjntbfobFksusfvvuff
2 sgziwddwxihfowzudswdusfsgdGbrobiGccsbshcaqbsscfpjighfhoohhislrfi
3 zyuognnIrrrnsenahhaygznhfrniraqarafyfrrhbbheeedrbypisdevenagirre
4 jjnuupaxbcwrxjvnramdnjrgdwwxqbakdwlnlbnarvrnjmdWrxnnudasjckmnkn
5 wiioobhwoirdfwcXgssgafztfggwcssfzicgfHhdgahuwiwwzwbfsowswccsffb
6 hvlhwycmcgmuyjhyxlnfjwycgylllhuocfogilfiyyDuhmnfyhxmohpgmgobnoz
7 uvvtrAikjrAikrkevcffjyjovvzrjklzevirzzvlicvizffvjurYiuvvlshfvpc

Nous effectuons alors des analyses de fréquences pour chacun des sous-textes en nous aidant par exemple de cette page de comparaison : Analyse de Vigenère et de César

Avec ces analyses de fréquence nous obtenons le mot-clé : « BONJOUR »

Nous essayons alors ce mot-clé qui nous donne le texte suivant : « DemaindeslaubealheureoublanchitlacampagneJepartiraiVoistujesaisquetumattendsJiraiparlaforetjiraiparlamontagneJenepuisdemeurerloindetoipluslongtempsJemarcherailesyeuxfixessurmespenseesSansrienvoiraudehorssansentendreaucunbruitSeulinconnuledoscourbelesmainscroiseesTristeetlejourpourmoiseracommelanuitJeneregarderainilordusoirquitombeNilesvoilesauloindescendantversHarfleurEtquandjarriveraijemettraisurtatombeunbouquetdehouxvertetdebruyereenfleur »

Nous avons donc réussi à casser ce code de Vigenère.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.