Outil pour décoder/encoder Vigenere automatiquement. Le Chiffre de Vigenère est un système de chiffrement par substitution poly-alphabétique utilisant une clé et un tableau à double entrée.
Chiffre de Vigenère - dCode
Catégorie(s) : Chiffre Poly-Alphabétique
dCode est gratuit et ses outils sont une aide précieuse dans les jeux, les maths, les énigmes, les géocaches, et les problèmes à résoudre au quotidien !
Une suggestion ? un problème ? une idée ? Écrire à dCode !
Le chiffre de Vigenère est une méthode de chiffrement polyalphabétique utilisant un mot-clé pour encoder un message.
Inventé par le cryptologue français Blaise de Vigenère au XVIe siècle, il repose sur l'utilisation d'une grille/tableau appelée carré de Vigenère qui permet de réaliser des décalages des lettres selon le mot-clé.
Le chiffrement Vigenere utilise une clé (et un alphabet).
Exemple : Coder message clair DCODE avec la clé CLE et l'alphabet latin ABCDEFGHIJKLMNOPQRSTUVWXYZ.
Vigenère peut être décrit par 2 méthodes de chiffrement (qui arrivent au même résultat)
METHODE 1 : Chiffrement Vigenere par addition de lettres
Le chiffrement Vigenère consiste à additionner la clé au texte clair.
— Faire correspondre, pour chaque lettre, la valeur de son rang dans l'alphabet, à partir de 0 : A=0,B=1,…,Z=25. Les calculs d'addition de lettres qui suivent sont en fait des additions de nombres (les valeurs des lettres sont ajoutées).
— Réaliser le calcul (lettre claire + lettre mot-clé) (modulo 26). NB: si le résultat est supérieur ou égal à 26, soustraire 26 au résultat (où 26 est la longueur de l'alphabet).
— Répéter le calcul pour les lettres suivantes, si besoin, faire correspondre la longueur du texte à la clé, celle-ci est répétée à l'infini : CLECLECLEC..
Exemple : Prendre les premières lettres du message D (=3) et de la clé C (=2) et les ajouter 3+2=5. Noter la valeur et continuer avec la lettre suivante du message C (=2) et la lettre suivante de la clé L (=11) : 2+11=13 etc. Arrivé à la fin de la clé, recommencer au début de celle-ci.
— Pour chaque nombre obtenu (qui doit être une valeur entre 0 et 25), faire correspondre la lettre ayant le même rang dans l'alphabet. Le message chiffré est composé de la suite de lettres obtenue.
Exemple :
D | C | O | D | E | message clair |
3 | 2 | 14 | 3 | 4 | valeurs des lettres du message |
C | L | E | C | L | clé de chiffrement répétée |
2 | 11 | 4 | 2 | 11 | valeurs des lettres de la clé |
5 | 13 | 18 | 5 | 15 | résultat de l'addition (modulo 26) |
F | N | S | F | P | message chiffré |
METHODE 2 : Chiffrement Vigenere avec un tableau
Pour chiffrer avec Vigenere via un tableau à deux entrées, utiliser la grille/matrice suivante (cas où l'alphabet est ABCDEFGHIJKLMNOPQRSTUVWXYZ) :
— Repérer la colonne correspondant à lettre du texte clair et la ligne correspondant à la lettre de la clé, l'intersection de la ligne et de la colonne renvoie la lettre chiffrée.
Exemple : L'intersection de la colonne D (4ème colonne), et de la ligne C (3ème ligne) donne la lettre chiffrée F.
— Répéter avec la lettre suivante du message et la lettre suivante de la clé, arrivé à la fin de la clé, recommencer au début de celle-ci.
Exemple : FNSFP est le message chiffré.
Le décryptage de Vigenere nécessite une clé (et un alphabet).
Exemple : Déchiffrer le message FNSFP avec la clé CLE et l'alphabet latin ABCDEFGHIJKLMNOPQRSTUVWXYZ
Vigenère peut être décrit par 2 méthodes de déchiffrement (qui arrivent au même résultat)
METHODE 1 : Déchiffrement de Vigenere par soustraction de lettres
Le déchiffrement Vigenère consiste à soustraire la clé au texte chiffré.
— Faire correspondre, pour chaque lettre, la valeur de son rang dans l'alphabet, à partir de 0 : 0=A,1=B,…,25=Z. Les calculs de soustraction de lettres qui suivent sont en fait des soustraction de nombres (les valeurs des lettres sont soustraites).
— Réaliser le calcul (lettre chiffrée - lettre mot-clé) (modulo 26). NB: si le résultat est négatif (inférieur à 0), ajouter 26 au résultat (où 26 est la longueur de l'alphabet).
— Répéter le calcul pour les lettres suivantes, si besoin, faire correspondre la longueur du texte à la clé, celle-ci est répétée à l'infini : CLECLEC..
Exemple : Prendre les premières lettres du message F (=5) et de la clé C (=2) et les soustraire (5-2=3), la lettre de rang 3 est D.
— Pour chaque nombre obtenu (qui doit être une valeur entre 0 et 25), faire correspondre la lettre ayant le même rang dans l'alphabet. Le message clair est composé de la suite de lettres obtenue.
Exemple :
F | N | S | F | P | message chiffré |
5 | 13 | 18 | 5 | 15 | valeurs des lettres du message |
C | L | E | C | L | clé de chiffrement répétée |
2 | 11 | 4 | 2 | 11 | valeurs des lettres de la clé |
3 | 2 | 14 | 3 | 4 | résultat de la soustraction (modulo 26) |
D | C | O | D | E | message clair |
METHODE 2 : Déchiffrement Vigenere avec un tableau
Pour déchiffrer avec Vigenere via un tableau carré à deux entrées, utiliser la grille/matrice suivante (cas où l'alphabet est ABCDEFGHIJKLMNOPQRSTUVWXYZ) :
— Repérer la ligne de la lettre de la clé (colonne de gauche) et parcourir la ligne jusqu'à trouver la première lettre du message chiffré. Alors, remonter la colonne pour lire la lettre claire correspondante (tout en haut).
Exemple : La lettre C correspond à la ligne 3, parcourir la ligne jusqu'à trouver F, et le nom de cette colonne est D, c'est la première lettre du message clair.
— Répéter avec la lettre suivante du message et la lettre suivante de la clé, arrivé à la fin de la clé, recommencer au début de celle-ci.
Exemple : DCODE est le message en clair.
Suite à un chiffrement Vigenere, le message a un indice de coincidence qui baisse entre 0.05 et 0.04 selon la longueur de la clé, il diminue vers 0.04 plus la clé est longue.
L'expression A l'aise, Blaise peut faire référence au prénom de Vigenere.
Tout lien avec la France ou la nationalité française de Blaise de Vigenere est un indice.
Les techniques de déchiffrement de Vigenère sans clé débutent par des méthodes statistiques qui permettent de retrouver la longueur de la clé, ensuite une analyse des fréquences permet de retrouver chaque lettre de la clé.
TEST DE KASISKI
Le Test de Kasiski (développé par Friedrich Kasiski en 1863) permet d'identifier la longueur de la clé utilisée pour le chiffrement. Il repose sur l'observation que, dans un texte chiffré avec une clé répétée, toute suite de lettres apparissant plusieurs fois dans le message clair, a une probabilité d'être chiffrée avec une même portion de la clé, créant ainsi une même suite de lettres chiffrées dans le message encodé.
Le test de Kasiski consiste à repérer des répétitions de lettres dans le texte chiffré et à calculer la distance (en nombre de caractères) entre ses occurrences. Les diviseurs communs des distances obtenues correspondent à des longueurs possibles pour la clé.
Exemple : ABC apparait trois fois dans le message ABCXYZABCKLMNOPQRSABC. Les positions de ABC sont 0, 6 et 18. Les écarts entre deux redondances de séquences identiques sont 6, 12 et 18 (se sont probablement des multiples de la longueur de la clé). Les diviseurs les plus courants de ces nombres sont 2, 3 et 6, la clé a donc une forte probabilité d'être de longueur 2, 3 ou 6.
CALCUL DE L'INDICE DE COINCIDENCE
Le test de l'indice de coincidence consiste à prendre une lettre sur N dans le message, et de mesurer l'indice de coincidence du message obtenu. Plus l'indice de coincidence est proche de celui de la langue supposée du message clair, plus forte est la probabilité que N soit la longueur de la clé utilisée.
En effet, prendre une lettre sur N lorsque N est la longueur de la clé revient à prendre une série de lettre chiffrée toujours chiffrée avec le même décalage (équivalent à une substitution mono-alphabétique), l'indice de coincidence est donc égal à celui du texte clair.
Une fois la longueur de la clé déterminée, il est possible de casser le chiffre de Vigenère en utilisant l'analyse des fréquences. Cette méthode repose sur la distribution prévisible des lettres dans une langue donnée (comme la fréquence élevée des lettres E, A, T ou S en français ou en anglais).
— Diviser le texte codé en plusieurs sous-textes, chaque sous-texte correspondant à un même décalage d'après le cycle de la clé. (Si la clé a une longueur de N, cela revient à regrouper toutes les lettres situées à des positions multiples de N).
— Analyser chaque sous-texte indépendamment : chaque sous-texte est chiffré avec un chiffre par décalage (ou chiffre de César)
— Calculer la fréquence des lettres dans le sous-texte (compter combien de fois chaque lettre apparaît) et comparer ces fréquences avec les fréquences des lettres dans la langue cible. L'objectif est donc de retrouver le décalage appliqué à chaque sous-texte et d'en déduire la lettre correspondant au décalage.
— Une fois le décalage de chaque sous-texte déterminé, en déduire la clé ou bien appliquer le décalage inverse (en négatif) sur le texte codé.
Lors du chiffrement, le clé est ajoutée au texte clair pour obtenir un texte chiffré. Donc, à partir du texte chiffré, soustraire le texte clair pour obtenir la clé.
NB : Cela revient à déchiffrer le texte chiffré avec comme clé le message clair. La clé apparaîtra alors répétée.
Exemple : Le texte chiffré est FNSFP et le texte clair connu est DCODE. Utiliser DCODE comme une clé pour déchiffrer FNSFP permet de trouver comme texte clair CLECL qui est en fait la clé de chiffrement CLE répétée.
Le chiffre de Vigenère a inspiré plusieurs variantes :
— Le chiffre de Beaufort : variante du chiffre de Vigenère où le chiffrement consiste à soustraire le texte clair à la clé.
— Le chiffre de Gronsfeld : variante où la clé est directement numérique (composée uniquement de chiffres 0-9).
— Le chiffre de Vernam ou One-Time Pad (ou à clé unique) : le chiffre de Vigenère est appliqué, mais la clé est aléatoire et aussi longue que le texte clair et n'est jamais réutilisée (un seul usage pour garantir la sécurité).
— Un chiffre de Vigenère autoclave (ou à clé courante) : plutôt que de répéter une clé fixe, à la fin de la clé, c'est le texte clair (ou le texte chiffré) qui est utilisé comme clé. Celà rend le système moins sensible aux attaques statistiques.
— Un chiffre de Vigenère avec alphabet désordonné : l'alphabet utilisé dans le carré de Vigenère peut être modifié pour ne pas suivre l'ordre ABCD..XYZ mais peut être dérivé d'un mot-clé ou complètement aléatoire.
— Le chiffre de Vigenère avec alphabet personnalisé : d'autres jeux de caractères, ou des symboles ou des chiffres sont utilisés.
— Un chiffre de Vigenère avec clé dynamique : la clé peut changer dynamiquement après certains caractères ou en fonction de règles prédéfinies.
— La réglette de Saint-Cyr : identique à Vigenère, la réglette mécanique utilise deux bandes d'alphabets mobiles pour faciliter les opérations de chiffrement et de déchiffrement.
Afin de rendre Vigenere résistant aux attaques, le codeur doit déterminer une clé de chiffrement la plus sécurisée possible. Toutes les attaques se basent sur les détections des répétitions de la clé, donc pour éviter cet écueil, il est nécessaire d'utiliser une clé la plus longue possible pour qu'elle ne se répète pas, elle doit être aléatoire et de longueur supérieure ou égale à la taille du texte à chiffrer. C'est le cas particulier du chiffre de Vernam (One-Time Pad).
Pour une sécurité encore plus accrue, il est nécessaire que la clé ne soit pas utilisée pour chiffrer 2 messages différents, car une seconde utilisation de la clé équivaut à une répétition qui lui ferai perdre sa sécurité.
La variante par clé courante utilise une longueur de clé au moins égale à celle du texte. Cette technique permet de sécuriser le chiffre de Vigénère car l'attaque de Kasiski n'est plus valable.
Pour obtenir une clé assez longue, il est courant d'utiliser un livre ou un autre message assez long. L'usage de ce genre de clé ouvre alors la possibilité d'autres attaques, par mot probable et/ou par analyse des fréquences des caractères si le message est assez long.
Dans le cas particulier où l'intégralité de la clé est composée de caractères aléatoires (voir chiffre de Vernam), alors le message devient complètement inattaquable par aucune méthode de cryptanalyse (sécurité inconditionnelle).
En utilisant un alphabet désordonné, ou une clé permettant de modifier l'alphabet latin classique, alors l'analyse des fréquence est plus complexe et le chiffre est plus résistant aux attaques classiques.
César est en fait l'équivalent d'un code de Vigénere à une lettre. Le code de Vigenere utilise donc des clés plus longues et ainsi chaque lettre peut alors être codée de plusieurs façons. L'analyse des fréquences ne peut pas être utilisée directement.
La réglette de Saint-Cyr est un instrument en forme de règle qui facilite le chiffrement et le déchiffrement manuels d'un message encodé avec Vigenère. Sa partie fixe est constituée de l'alphabet, et sa partie mobile coulissante est un double alphabet.
Pour chiffrer une lettre, déplacer le coulisseau de manière à ce que le A de la partie fixe corresponde à la lettre de la clé. Alors regarder la lettre de la partie mobile directement en dessous de la lettre du message clair écrite sur la partie fixe.
Le chiffre de Vigenère porte le nom de Blaise de Vigenère, un diplomate et cryptographe français du XVI siècle (1523-1596).
Bien qu'il n'ait pas inventé cette méthode de chiffrement, il l'a popularisée en l'améliorant et en la décrivant dans son ouvrage publié en 1586 Traité des chiffres ou secrètes manières d'écrire disponible ici (lien affilié)
La méthode avait été initialement proposée par Giovan Battista Bellaso, un cryptographe italien, en 1553. Cependant, les travaux de Vigenère, plus complets et détaillés, ont contribué à associer son nom à ce système.
dCode se réserve la propriété du code source pour "Chiffre de Vigenère". Sauf code licence open source explicite (indiqué Creative Commons / gratuit), l'algorithme pour "Chiffre de Vigenère", l'applet ou snippet (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou les fonctions liées à "Chiffre de Vigenère" (calculer, convertir, résoudre, décrypter / encrypter, déchiffrer / chiffrer, décoder / encoder, traduire) codés en langage informatique (Python, Java, C#, PHP, Javascript, Matlab, etc.) ou les données, en téléchargement, script, ou les accès API à "Chiffre de Vigenère" ne sont pas publics, idem pour un usage hors ligne, PC, mobile, tablette, appli iPhone ou Android !
Rappel : dCode est gratuit.
Le copier-coller de la page "Chiffre de Vigenère" ou de ses résultats est autorisée (même pour un usage commercial) tant que vous créditez dCode !
L'exportation des résultats sous forme de fichier .csv ou .txt est gratuite en cliquant sur l'icone export
Citer comme source bibliographique :
Chiffre de Vigenère sur dCode.fr [site web en ligne], consulté le 21/01/2025,