Chiffrement et Déchiffrement Vigenere





Le chiffre de Vigenere

Le chiffre de Vigenere est un chiffrement dit polyalphabétique. Dans ce genre de chiffrement, et contrairement aux chiffrements monoalphabétiques (qui sont tout de même utilisés dans les chiffrements polyalphabétiques), une lettre peut être chiffrée de façon différente selon sa position dans le texte. En effet, le chiffre de Vigenere introduit la notion de clé pour chiffrer le texte entré. Cette clé apporte une évolution majeure dans les chiffrements, notamment parcequ'elle permet au chiffre qui l'utilise de résister (dans une certaine mesure comme on le verra) aux attaques basées sur l'analyse de fréquence.


Le nom de chiffre de Vigenere provient du diplomate Blaise de Vigenere qui décrit ce chiffrement (intégré à un autre) en 1586 dans son livre, le Traité des Chiffres. Toutefois, un chiffrement semblable avait déjà été décrit par Giovan Battista Bellaso. Ce chiffre n'est cependant pas exactement le même, puisqu'il utilise premièrement un mot clé pour la création de 5 alphabets, qui serviront ensuite conjointement à une seconde clé à chiffrer le texte entré.


Le principe du chiffrement de Vigenere est en fait très simple. On utilise un tableau, qui peut être réecrit par coeur facilement. Ce tableau est bi-dimensionnel et comporte en X et en Y les lettres de l'alphabet, de A à Z. En X, les lettres sont celles du texte en clair, en Y les lettres sont celles de la clé. Pour chiffrer, on commence par faire correspondre toutes les lettres du texte clair avec les lettres de la clé. Si la clé est inférieure en taille au texte en clair (ce qui est généralement le cas), on la répète autant de fois que nécessaire. Par exemple, prenons le texte à chiffrer "Chiffre de Vigenere", avec la clé "clé" :


Texte en clair : Chiffre de Vigenere

Clé : cleclec le cleclecl

On voit que la clé est répétée autant de fois qu'il est nécéssaire pour correspondre avec la taille du text en clair. Ici il convient de faire remarquer à quel point la taille de la clé est importante au niveau de la sécurité du chiffre, en effet on voit que plus la clé est courte, plus elle sera répétée. Le risque est donc que l'attaquant soit en mesure repérer des répétitions dans le texte, mais nous verrons cela plus tard.


Une fois que nous avons étendu la clé à l'ensemble du texte à chiffrer, on peut chiffrer en utilisant le tableau.


Texte en clair
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

C
L
E

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

On prend donc la première lettre du texte à chiffrer, "C", et la première lettre de la clé, "C", et on regarde au croisement entre les deux lignes la lettre du texte chiffré. On voit que c'est un "E". On continue donc comme ça jusqu'à la fin.

Cela nous donne le texte "esmhqvg hg zkrippvg" si on conserve les espaces (pour ça vous avez des options).


La technique qui consiste à regarder dans le tableau pour chiffrer est pratique pour un humain, quoique lente, mais le mieux reste de procéder par addition. Si on observe le tableau, on se rend compte que la lettre chiffrée correspondant à la clé "C" et au texte en clair "C" est située 2 cases plus loin. Cela correspond en fait à la position dans le tableau de la lettre de la clé "C" (troisième position), auquel on retire 1.


Si on va plus loin, chiffrons par exemple la lettre H avec la clé F, on tombe sur la lettre chiffrée M. Si on regarde, on voit que F est à la sixième position dans le tableau, on retranche 1 pour obtenir 5, et on ajoute ça à la position de la lettre à chiffrer soit 5 + 8 (H est à la huitième position) = 13. On regarde le tableau et à la treizième position on trouve bien M. Si jamais l'addition de la position de la clé et de celle du texte à chiffrer est supérieure à 26, on fait une opération de type modulo 26 pour trouver la bonne position. Par exemple F avec Y, cela donnerait (6 - 1) + 25 = 30, il n'y a pas de lettre en 30è position, donc on fait 30 modulo 26 = 4, et on obtient D. C'est la technique utilisée sur cette page, parcequ'elle est très simple et rapide, ce qui vous permet de chiffrer de très longs texte sans problème.


Pour le déchiffrement on fait l'inverse, dans la technique utilisant le tableau on regarde dans la colonne clé à la lettre que l'on a, par exemple pour notre exemple du début avec le texte chiffré "esmhqvg hg zkrippvg" et la clé "cle", on prend la lettre C, et on suit la ligne jusqu'à trouver la lettre du texte chiffré, E ici. Une fois trouvée, on remonte pour trouver la lettre en clair, C donc. On peut aussi procéder par soustraction, à l'inverse de l'addition utilisée pour le chiffrement. Par exemple pour déchiffrer la lettre E avec la lettre C, on prend leurs positions respectives dans le tableau, et on fait une soustraction en retranchant 1 à la position de la clé. Pour nous donc 5 - (3 - 1) = 3, ce qui est bien la position de la lettre C.


Cryptanalyse

Le chiffre de Vigenere n'est clairement plus considéré comme sûr depuis que le Majors Prussien Friedrich Kasiski l'a cassé en 1863. Il est toutefois intéressant d'analyser les différentes façons de décrypter le chiffrement vigenere. Premièrement, il existe un cas pour lequel la sécurité offerte par Vigenere est maximale, il s'agit du cas où la clé ferait exactement la même taille que le texte à chiffrer. La clé peut aussi avoir une taille supérieure évidemment. Dans le cas où cette clé serait aussi définie aléatoirement, et où elle serait utilisée une fois seulement par chiffrement, on donne le nom de masque jetable, ou chiffre de Vernam, au chiffrement utilisé.


Dans la plupart des cas toutefois, la clé a une taille de beaucoup inférieure à la taille du texte à chiffrer. Dans ce genre de cas, on utilise la méthode de Kasiski (bien que Charles Babbage ait lui aussi réussi à casser certains chiffres de Vigenere, on a aucun écrit de sa part, il est donc impossible de savoir comment il a procédé). Cette méthode consiste à repérer dans le texte chiffré des sous-textes qui se répètent, de façon à découvrir la longueur de la clé. Une fois cette longueur trouvée, il suffit de sélectionner les sous-textes correspondants aux répétitions de la clé pour effectuer une analyse de fréquence sur cet ensemble de sous-chaîne. Si le texte est assez long, il devient alors possible de déchiffrer le texte. Au XXè siècle, Friedman crée une technique permettant de déchiffrer les chiffres polyalphabétiques, dont le chiffre de Vigenere, c'est l'indice de coïncidence qui permet de définir si un chiffre a été chiffré par chiffrement monoalphabétique ou polyalphabétique, ainsi que de deviner la longueur de la clé.


L'autre technique de cryptanalyse, beaucoup plus lente évidemment, est la technique de bruteforce. On peut s'aider dans cette technique de l'observation des sous-chaine contenues dans le texte chiffré, de manière à deviner la longueur de la clé utilisée. Cela permettra de limiter les possibilités concernant la bruteforce (qui consiste à calculer toutes les combinaisons possibles pour une clé de longueur donnée et suivant un alphabet donné). De plus, la clé ne comporte que des lettres, généralement seulement minuscules, ce qui simplifie encore la tâche.


Pour complexifier la tâche des attaquants, il est aussi possible de créer un alphabet de toutes pièces, voire même de rajouter autant de caractères que l'on veut à l'alphabet existant. La meilleure solution reste de choisir une clé très longue. Il était fréquent lorsque ce chiffre était encore utilisé, de choisir des passages entiers d'oeuvres littéraires pour chiffrer les messages les plus importants. Le chiffre de Vigenere ne propose plus aucune sécurité, il est toutefois resté plus de trois siècles sans être cassé.