Qu'est-ce que le chiffre de Vigenère ?
Le chiffre de Vigenère est un chiffre de substitution polyalphabétique : chaque lettre est chiffrée avec un décalage de César choisi par un mot-clé répété. Avec la clé KEY, les décalages se répètent ainsi : K=10, E=4, Y=24, K=10, etc. Comme le décalage change selon la position, une même lettre du texte clair peut donner plusieurs lettres chiffrées dans le même message.
La méthode aujourd'hui appelée chiffre de Vigenère a en réalité été décrite par le cryptographe italien Giovan Battista Bellaso en 1553, qui s'est appuyé sur le disque polyalphabétique de Leon Battista Alberti et sur la tabula recta de Johannes Trithemius. Le XIXe siècle a attribué à tort le chiffre au diplomate français Blaise de Vigenère (1523-1596), et le nom est resté, même si la contribution propre de Vigenère était une variante à clé automatique plus robuste.
Pendant près de trois siècles, le chiffre a été surnommé le chiffre indéchiffrable, car sa clé répétée masque le simple motif de fréquence des lettres qui casse les chiffres monoalphabétiques. Cette réputation s'est finalement effondrée au XIXe siècle. L'officier d'infanterie prussien Friedrich Kasiski a publié la première attaque générale largement connue dans son ouvrage de 1863 Die Geheimschriften und die Dechiffrir-Kunst, montrant comment des fragments de texte chiffré répétés trahissent la longueur de la clé. Le polymathe anglais Charles Babbage avait presque certainement cassé Vigenère encore plus tôt, vers les années 1850, mais il n'a jamais publié sa méthode, si bien que le mérite de l'attaque est revenu à Kasiski.
Fonctionnement du chiffre de Vigenère
Formule de chiffrement
Pour chaque lettre du texte clair à la position i :
Cᵢ = (Pᵢ + Kᵢ) mod 26
Pᵢ est la valeur de la lettre claire (A=0, B=1, ... Z=25), et Kᵢ est la valeur de la lettre correspondante du mot-clé.
Formule de déchiffrement
Pᵢ = (Cᵢ - Kᵢ + 26) mod 26
Exemple rapide
Chiffrons ATTACK AT DAWN avec la clé LEMON :
Texte clair : A T T A C K A T D A W N
Clé : L E M O N L E M O N L E
Texte chiffré:L X F O P V E F R N H R
Résultat : ATTACK AT DAWN -> LXFOPV EF RNHR
Les deux T deviennent X et F, car ils sont associés à deux lettres de clé différentes. Cette substitution dépendante de la position est l'idée centrale du chiffre de Vigenère.
Tabula Recta, carré de Vigenère et table de Vigenère
Tabula recta, carré de Vigenère et table de Vigenère désignent généralement la même grille 26x26 d'alphabets décalés. Une orientation courante consiste à :
- utiliser la lettre de clé comme ligne ;
- utiliser la lettre du texte clair comme colonne ;
- lire la lettre chiffrée à l'intersection.
Certains ouvrages inversent les lignes et les colonnes. Pour le chiffrement standard de Vigenère, le résultat reste le même, mais les consignes de déchiffrement dépendent de l'orientation choisie. La table de Vigenère interactive permet de suivre les deux sens visuellement.
Vigenère ou César : quelle différence ?
| Propriété | Chiffre de César | Chiffre de Vigenère |
|---|---|---|
| Type de substitution | Monoalphabétique | Polyalphabétique |
| Clé | Un seul décalage de 0 à 25 | Un mot-clé de longueur quelconque |
| Lettres répétées | Les motifs restent visibles | Elles peuvent donner des lettres différentes |
| Attaque de base | Essayer 26 décalages | Estimer la longueur de clé, puis analyser les colonnes |
| Faiblesse principale | Alphabet fixe | Mot-clé répété |
Une clé de Vigenère d'une seule lettre revient à un décalage du chiffre de César. Un mot-clé répété plus long répartit les fréquences sur plusieurs alphabets décalés.
Pourquoi Vigenère est plus robuste que César
Le chiffre de César cède à une attaque simple : comme chaque lettre utilise le même décalage, la lettre la plus fréquente du texte chiffré correspond presque toujours au E du texte clair, et le profil de fréquence complet du texte chiffré n'est que le profil de l'anglais tourné de la valeur de la clé. Un attaquant peut lire le décalage directement sur un graphique de fréquences, ou simplement essayer les 26 possibilités.
Vigenère déjoue cette attaque en étant plusieurs chiffres de César en rotation. Avec une clé de longueur n, la première lettre, la (n+1)e, la (2n+1)e, et ainsi de suite, partagent un même décalage, mais les positions voisines utilisent des décalages différents. Chaque E du texte clair tombe donc sur une lettre chiffrée différente selon sa place dans le cycle de la clé. Les pics et les creux des fréquences de l'anglais sont étalés sur n alphabets distincts, si bien qu'un graphique de fréquences de l'ensemble du texte chiffré paraît beaucoup plus plat et bien moins anglais. Plus la clé est longue et variée, plus le signal mono-alphabet est effacé — c'est précisément pourquoi l'analyse de fréquences simple ne peut pas casser Vigenère directement, et pourquoi un attaquant doit d'abord retrouver la longueur de clé pour décomposer le chiffre en ses colonnes de César sous-jacentes.
Sécurité et faiblesses du chiffre de Vigenère
Malgré sa réputation de trois siècles, le chiffre de Vigenère n'est pas sûr selon les normes modernes, et il ne doit jamais servir à protéger des informations réelles.
- La clé répétée est le défaut fatal. Réutiliser le mot-clé impose une période au texte chiffré. C'est précisément cette périodicité que détectent l'examen de Kasiski et l'indice de coïncidence, et une fois la longueur de clé connue, le chiffre s'effondre en colonnes de César solubles indépendamment.
- Les clés courtes sont très faibles. Plus la clé est courte par rapport au message, plus le motif périodique est marqué et plus l'attaque est facile. Une clé d'une seule lettre n'est qu'un chiffre de César ; même un mot court n'offre guère de protection face à un solveur automatique.
- Un long texte chiffré aide l'attaquant. Les attaques statistiques ont besoin de données. Plus il y a de texte chiffré sous une même clé, plus l'estimation de la longueur de clé et l'analyse de fréquences par colonne deviennent fiables.
Relation avec le masque jetable
Le chiffre de Vigenère ne devient véritablement incassable que dans un cas extrême. Si la clé est vraiment aléatoire, au moins aussi longue que le message et jamais réutilisée, alors ce n'est plus un chiffre de Vigenère à clé répétée — c'est un masque jetable, qui offre le secret parfait. Sans répétition, il n'y a pas de période que l'examen de Kasiski puisse trouver, et chaque texte clair possible de la bonne longueur est tout aussi compatible avec le texte chiffré. Autrement dit, le masque jetable est le cas limite de Vigenère avec une clé infiniment longue, aléatoire et à usage unique. Ce qui rend Vigenère cassable au quotidien, c'est exactement l'écart entre cet idéal et une clé courte, répétée et fondée sur un mot.
Comment reconnaître un texte chiffré par Vigenère
Un texte chiffré par Vigenère présente souvent ces signes :
- Texte surtout alphabétique. Les espaces et la ponctuation sont souvent conservés dans les exemples pédagogiques ou les énigmes.
- Fréquences de lettres aplaties. La distribution ressemble moins à l'anglais courant qu'un chiffre de César, sans être aussi uniforme qu'un texte aléatoire.
- Indice de coïncidence intermédiaire. Pour un texte anglais chiffré par Vigenère, l'IC se situe souvent entre le hasard et l'anglais naturel, autour de 0,04 à 0,05 selon la longueur de la clé.
- Fragments répétés à distances liées. Des trigrammes répétés, dont les espacements ont des facteurs communs, peuvent révéler des longueurs de clé probables par l'examen de Kasiski.
L'outil d'identification de chiffre utilise ces signaux pour reconnaître un texte de type Vigenère et estimer une longueur de clé probable.
Comment casser le chiffre de Vigenère
Pendant trois siècles, le chiffre de Vigenère a résisté à l'analyse parce que la clé répétée aplatit les fréquences de lettres qui trahissent les chiffres de substitution simples. La percée a été de comprendre qu'un chiffre de Vigenère n'est pas un seul chiffre, mais plusieurs chiffres de César entrelacés. Si l'on parvient à retrouver la longueur de la clé, on peut découper le texte chiffré en colonnes distinctes, chacune chiffrée avec un seul décalage de César, et résoudre chacune indépendamment. La cryptanalyse moderne de Vigenère suit trois étapes classiques.
Étape 1 : l'examen de Kasiski
L'examen de Kasiski, publié par Friedrich Kasiski en 1863, trouve la longueur de clé en cherchant les séquences répétées dans le texte chiffré. Lorsqu'un mot répété du texte clair s'aligne par hasard sur la même partie de la clé, il produit un fragment chiffré identique. La distance entre deux de ces répétitions est donc un multiple de la longueur de la clé.
Pour mener un examen de Kasiski, parcourez le texte chiffré à la recherche de trigrammes répétés ou de séquences plus longues, mesurez l'écart entre chaque paire d'occurrences, et factorisez ces écarts. Un facteur qui revient dans de nombreux écarts — par exemple 3, 5 ou 6 — est un candidat solide pour la longueur de clé. Les répétitions fortuites produisent des espacements aléatoires, si bien que la vraie longueur de clé ressort comme le facteur commun le plus fréquent.
Étape 2 : indice de coïncidence et test de Friedman
L'indice de coïncidence (IC) mesure la probabilité que deux lettres tirées au hasard d'un texte soient identiques. L'anglais courant a un IC d'environ 0,067, tandis qu'un texte uniformément aléatoire avoisine 0,038. Le texte chiffré par Vigenère se situe entre les deux, et plus la clé est longue, plus il dérive vers l'aléatoire.
Le test de Friedman transforme cette observation en une estimation de la longueur de clé : il compare l'IC de l'ensemble du texte chiffré aux valeurs d'IC connues de l'anglais et du texte aléatoire. Une variante plus fiable découpe le texte chiffré en groupes de colonnes candidats pour chaque longueur de clé possible, puis mesure l'IC moyen à l'intérieur de ces colonnes. Lorsque les colonnes sont découpées à la bonne longueur de clé, chaque colonne est un seul décalage de César, donc son IC remonte vers le 0,067 de l'anglais naturel. La longueur de clé dont les colonnes affichent l'IC moyen le plus élevé est la meilleure estimation. Utilisés ensemble, l'examen de Kasiski et l'indice de coïncidence s'accordent généralement sur la longueur de clé et se vérifient mutuellement.
Étape 3 : analyse de fréquences de chaque colonne
Une fois la longueur de clé n connue, écrivez le texte chiffré en n colonnes : la colonne 1 contient les lettres 1, n+1, 2n+1, et ainsi de suite. Chaque lettre d'une même colonne a été chiffrée avec la même lettre de clé, ce qui signifie que chaque colonne n'est qu'un chiffre de César.
Appliquez maintenant une analyse de fréquences ordinaire à chaque colonne. Pour chacun des 26 décalages possibles, annulez le décalage et comparez la distribution de lettres obtenue aux fréquences standard de l'anglais — le score du khi-deux ou une simple correspondance de fréquences fonctionne bien. Le décalage qui correspond le mieux à l'anglais révèle la lettre de clé de cette colonne. Répétez pour les n colonnes et vous avez retrouvé le mot-clé complet ; déchiffrer le message devient alors trivial.
Faire tout cela à la main est lent. Le décodeur et résolveur Vigenère automatise chaque étape : il mène l'examen de Kasiski, calcule l'indice de coïncidence pour les longueurs de clé candidates, effectue l'analyse de fréquences colonne par colonne, et classe pour vous les clés et textes clairs les plus probables.
Chiffre de Vigenère en Python, Java et JavaScript
Le coeur de l'algorithme est court : parcourir le mot-clé en boucle, ajouter le décalage pour chiffrer et le soustraire pour déchiffrer. Ces exemples conservent la casse et laissent les caractères non alphabétiques inchangés.
Python
def vigenere_encrypt(text: str, key: str) -> str:
key = key.upper()
out, j = [], 0
for ch in text:
if ch.isalpha():
base = 65 if ch.isupper() else 97
shift = ord(key[j % len(key)]) - 65
out.append(chr((ord(ch) - base + shift) % 26 + base))
j += 1
else:
out.append(ch)
return "".join(out)
Java
static String vigenereEncrypt(String text, String key) {
key = key.toUpperCase();
StringBuilder out = new StringBuilder();
int j = 0;
for (char ch : text.toCharArray()) {
if (Character.isLetter(ch)) {
int base = Character.isUpperCase(ch) ? 'A' : 'a';
int shift = key.charAt(j % key.length()) - 'A';
out.append((char) ((ch - base + shift) % 26 + base));
j++;
} else {
out.append(ch);
}
}
return out.toString();
}
JavaScript
function vigenereEncrypt(text, key) {
key = key.toUpperCase();
let out = "", j = 0;
for (const ch of text) {
if (/[a-zA-Z]/.test(ch)) {
const base = ch >= "a" ? 97 : 65;
const shift = key.charCodeAt(j % key.length) - 65;
out += String.fromCharCode((ch.charCodeAt(0) - base + shift) % 26 + base);
j++;
} else {
out += ch;
}
}
return out;
}
Pour déchiffrer, il suffit de soustraire le décalage : (value - shift + 26) % 26.
Comment prononcer "Vigenère"
En anglais, Vigenère se prononce couramment /ˌviːʒəˈnɛər/, approximativement vee-zhuh-NAIR. Le nom vient de Blaise de Vigenère (1523-1596), diplomate et cryptographe français.
L'orthographe correcte comporte un accent grave sur le second e : Vigenère. Les recherches pour "Vigenere cipher" désignent généralement le même chiffre, mais la forme accentuée est la forme standard.
Où rencontre-t-on encore Vigenère ?
- CTF et chasses aux énigmes : il faut identifier le chiffre, trouver la longueur de clé et récupérer la clé.
- Escape games : le mot-clé peut être caché comme indice séparé.
- Cours de cryptographie : il illustre la substitution polyalphabétique, la répétition de clé, l'examen de Kasiski et l'indice de coïncidence.
- Culture populaire : il est reconnaissable, soluble à la main et pratique pour construire des indices.
- Étude historique : il montre pourquoi des méthodes statistiques plus fortes sont devenues nécessaires après les substitutions simples.
Chiffres polyalphabétiques apparentés
- Chiffre de Beaufort — Variante réciproque où le chiffrement et le déchiffrement utilisent la même opération.
- Chiffre à clé automatique — La clé est prolongée par le texte clair au lieu de répéter seulement l'amorce.
- Chiffre de Gronsfeld — Variante numérique de Vigenère avec des chiffres de clé de 0 à 9.
- Chiffre à clé courante — Utilise un long passage de texte comme clé.
- Chiffre de Trithemius — Utilise un décalage progressif fixe plutôt qu'un mot-clé secret répété.
- Chiffre de Porta — Chiffre polyalphabétique réciproque fondé sur des alphabets appariés.
- Chiffre de Quagmire — Combine des alphabets mélangés et des décalages de type Vigenère.
- Chiffre d'Alberti — Disque polyalphabétique ancien, antérieur à Bellaso et Vigenère.
Pour aller plus loin
- Décodeur et résolveur Vigenère — Déchiffrer avec une clé connue ou analyser un texte sans clé
- Exemples et tutoriels Vigenère — Étudier des exemples courts, des alignements et un exemple de déchiffrement
- Table de Vigenère — Comprendre l'orientation ligne/colonne de la tabula recta
- Casser le chiffre de Vigenère : examen de Kasiski et indice de coïncidence — Un guide de cryptanalyse plus détaillé