Le chiffre de Vigenère et l'analyse fréquentielle : un Grand oral de cryptographie
Comment les statistiques ont fait tomber trois siècles de chiffrement
Sommaire13 sections
Pendant trois siècles, les États européens ont confié leurs correspondances les plus sensibles au chiffre de Vigenère. On l’appelait « le chiffre indéchiffrable », et cryptographes, diplomates comme militaires s’y fiaient pour les messages qu’il ne fallait surtout pas perdre. Personne n’avait réussi à le casser publiquement.
En 1854, un mathématicien britannique du nom de Charles Babbage en vient à bout. Ce qui frappe, ce n’est pas le temps qu’il lui a fallu, mais la simplicité des outils qu’il a mobilisés : un test de divisibilité et une analyse des fréquences de lettres. Deux outils que tu connais déjà. Le PGCD, au programme de seconde. Les statistiques descriptives, au programme de spé.
Cet article raconte cette histoire. C’est un sujet de Grand oral solide mathématiquement, avec une vraie démonstration à présenter, et parfaitement accessible sans l’option maths expertes.
Alice, Bob, Eve
Avant de démonter un code, un minimum de vocabulaire. En cryptographie, les trois personnages récurrents sont :
- Alice : elle veut envoyer un message.
- Bob : il veut le recevoir.
- Eve (de l’anglais eavesdropper, curieuse) : elle intercepte le message et essaie de le lire.
Le message sous sa forme lisible s’appelle le texte clair. Une fois chiffré, on parle de texte chiffré. Le procédé qui transforme l’un en l’autre s’appelle le chiffrement ; l’opération inverse, le déchiffrement. Ce procédé dépend d’une clé : sans elle, même en connaissant la méthode employée, on ne tire rien du texte chiffré.
On va voir deux méthodes historiques : César et Vigenère. Les deux sont publiques depuis des siècles. Ce qui compte, c’est la clé. Tu vas voir comment on la retrouve.
Le chiffre de César
La méthode tire son nom de Jules César, qui l’aurait utilisée pour sa correspondance militaire. L’idée est simple : on décale chaque lettre de l’alphabet d’un nombre fixe de positions. Si la clé vaut 3, le A devient D, le B devient E, le C devient F, et ainsi de suite. Quand on arrive au Z, on repart du A.
Mathématiquement, on numérote les lettres de 0 (A) à 25 (Z). Chiffrer avec une clé , c’est appliquer à chaque lettre de position la transformation :
Déchiffrer, c’est l’opération inverse : . L’arithmétique modulo 26, c’est le genre d’outil qu’on croise dès la seconde avec les restes de division euclidienne. Rien de sorcier.
Le chiffre de César a deux défauts qui le rendent inutilisable dès qu’on le regarde sérieusement :
- Espace des clés ridicule. Il n’existe que 26 clés possibles (en fait 25 si on exclut la clé identité). Tester les 26 à la main prend quelques minutes. En Python, une boucle sur
range(26)règle l’affaire en une milliseconde. - Signature statistique conservée. Le décalage préserve la distribution des lettres. Si le E est la lettre la plus fréquente en français (c’est le cas, on va le voir), alors dans le texte chiffré, la lettre la plus fréquente sera le E décalé de . Une simple analyse de fréquence suffit à retrouver .
César est un jeu. Il sert à poser le vocabulaire, pas à sécuriser quoi que ce soit. Le vrai sujet arrive maintenant.
Le chiffre de Vigenère
Au XVIᵉ siècle, le diplomate italien Giovan Battista Bellaso propose une amélioration majeure, que l’histoire attribuera plus tard à tort à Blaise de Vigenère. C’est le nom qui est resté. L’idée : plutôt qu’un décalage unique, on utilise une clé-mot que l’on répète le long du message.
Prenons le message RENDEZVOUSDEMAIN et la clé CLE. On répète la clé sous le message, et on décale chaque lettre du message par la lettre de la clé correspondante :
Message : R E N D E Z V O U S D E M A I N
Clé : C L E C L E C L E C L E C L E C
Chiffré : T P R F P D X Z Y U O I O L M P
Pour chaque colonne, on applique le décalage indiqué par la clé (A = 0, B = 1, C = 2…). Le R décalé de C (2) donne T. Le E décalé de L (11) donne P. Et ainsi de suite.
La différence avec César est fondamentale : un même caractère clair peut être chiffré différemment selon sa position. Dans notre exemple, le E du mot RENDEZ est chiffré par la lettre L de la clé et devient P. Le E du mot DEMAIN est chiffré par la lettre E de la clé et devient I. Même lettre claire, deux lettres chiffrées différentes. La signature statistique de l’alphabet n’apparaît plus directement.
Pourtant, il cède. Et il cède avec des outils que tu as déjà dans ta trousse.
Première brèche : le test de Kasiski
Le nom officiel vient d’un officier prussien, Friedrich Wilhelm Kasiski, qui publie la méthode en 1863. Mais la véritable paternité revient à Charles Babbage : l’inventeur de la machine à calcul mécanique avait trouvé la méthode dès 1854, probablement à la demande des services secrets britanniques pendant la guerre de Crimée. Il ne l’a jamais publiée, et elle est restée un secret militaire jusqu’à ce que Kasiski la redécouvre neuf ans plus tard.
L’idée géniale tient en une observation. Quand Alice chiffre son message, si une même séquence de lettres du clair retombe sur la même portion de clé, elle produit la même séquence chiffrée. Exemple :
Message : ...LEMOTDEPASSE...LEMOTARRIVE...
Clé : ...ABCABCABCABC...ABCABCABCABC...
Si LE apparaît deux fois dans le message, et que les deux occurrences tombent à des positions telles que la clé se répète à l’identique, on obtient deux fois la même paire de lettres dans le chiffré. Ces répétitions dans le chiffré sont une fuite d’information massive.
Le test de Kasiski en trois temps :
- Repérer les répétitions de 3 lettres ou plus dans le texte chiffré.
- Mesurer les distances entre deux occurrences successives d’une même répétition.
- Prendre le PGCD de toutes ces distances : ce PGCD est très probablement la longueur de la clé.
Voici un message chiffré intercepté. Les répétitions du chiffré sont mises en évidence : chaque couleur correspond à un trigramme qui revient. Leurs positions révèlent la longueur probable de la clé.
-
XGH -
Positions : 0, 9, 24
Distances : 9, 15 -
APG -
Positions : 3, 15, 30
Distances : 12, 15 -
ZGR -
Positions : 6, 21, 33
Distances : 15, 12
La longueur de la clé est probablement 3 (ou un diviseur de 3). On commence par tester 3.
Pourquoi le PGCD ? Parce que si deux occurrences d’une même séquence du clair tombent sur la même portion de clé, c’est que la distance qui les sépare est un multiple entier de la longueur de la clé. Avec plusieurs répétitions, le PGCD de toutes les distances converge vers la longueur de la clé elle-même.
Le PGCD est au programme de seconde. Ici, il devient un outil cryptanalytique.
À ce stade, on connaît la longueur de la clé, mais pas ses lettres. C’est l’objet de la deuxième attaque.
Deuxième étape : l’analyse fréquentielle
Admettons qu’on sache que la clé fait 5 lettres. Alors la même lettre de la clé décale toutes les lettres du chiffré qui occupent les positions 1, 6, 11, 16, etc. Même chose pour les positions 2, 7, 12, 17, et ainsi de suite pour chacune des cinq positions modulo 5.
Autrement dit, le chiffré se découpe en 5 sous-textes, et chacun de ces sous-textes est un simple chiffre de César, avec sa propre clé.
Or un chiffre de César préserve la signature statistique de la langue. Et la distribution des lettres en français est parfaitement connue :
Déplace le curseur pour tester chaque décalage possible. Quand les deux barres s'alignent, tu as trouvé le bon.
Les cinq lettres les plus fréquentes en français sont E, A, I, S, T, dans cet ordre. Le E pèse à lui seul près de 18 % du texte. Cette signature est extrêmement stable dès que le texte dépasse quelques centaines de caractères.
La méthode devient limpide :
- Pour chaque sous-texte, on calcule l’histogramme des fréquences.
- On compare à la distribution du français.
- On trouve le décalage qui aligne au mieux les deux distributions.
- Ce décalage donne une lettre de la clé.
- On répète pour chacun des 5 sous-textes.
Pour l’étape 3, on teste les 26 décalages possibles et on retient celui qui minimise un écart entre les deux distributions (la somme des écarts en valeur absolue fait parfaitement l’affaire ; les élèves qui connaissent la distance du khi-deux peuvent aussi s’en servir). Avec 5 sous-textes à 26 essais chacun, on a au maximum essais. De quoi tenir dans un tableur. Et encore plus vite en Python : quelques lignes suffisent.
On décrypte Vigenère, pas à pas
On reçoit un message intercepté d’environ 400 caractères. On relève les répétitions de 3 lettres ou plus. On trouve :
WXYaux positions 12 et 75 → distance 63ABCaux positions 30 et 135 → distance 105MNOaux positions 48 et 195 → distance 147
PGCD(63, 105, 147) = 21. Mais 21 = 3 × 7, donc la longueur de la clé est probablement 3, 7 ou 21. En pratique, on teste d’abord les plus petits candidats (3, puis 7).
Verdict provisoire : la clé fait très probablement 3 lettres.
On suppose une clé de 3 lettres. On découpe le chiffré en 3 sous-textes : position 1, 4, 7… pour le premier, 2, 5, 8… pour le deuxième, 3, 6, 9… pour le troisième.
Pour le premier sous-texte, on calcule l’histogramme des lettres. La lettre la plus fréquente est H. Si c’est un décalage du E, alors la clé commence par , soit la lettre D.
Pour le deuxième sous-texte, lettre la plus fréquente : V. Décalage , donc la lettre est R.
Pour le troisième : B en tête, ce qui donnerait , donc la lettre X. Étrange pour le troisième caractère d’un mot français. On essaie alors la deuxième lettre la plus fréquente du sous-texte, R, qui donne , soit N.
Ni DRX ni DRN ne produisent quelque chose d’intelligible au déchiffrement. On élargit la recherche au troisième candidat fréquent du sous-texte, et c’est la clé DRA qui donne un texte lisible.
Avec la clé DRA (), on déchiffre le message complet. Il commence par :
MESSAGEINTERCEPTEAPPROCHEEPENDANTLANUIT...Soit, une fois lisible : « Message intercepté approche, pendant la nuit… »
Le message a cédé. Bilan du temps passé : une quinzaine de minutes pour le test de Kasiski à la main, une vingtaine pour l’analyse fréquentielle sur les trois sous-textes, deux minutes pour le déchiffrement final. Moins d’une heure en tout, pour un chiffrement qui passait pour inviolable.
Le verdict mathématique
Qu’est-ce qu’on a réellement démontré ?
On a prouvé qu’aucun chiffrement périodique ne résiste à une analyse statistique dès que le texte est suffisamment long. La raison profonde tient à l’entropie : la clé de Vigenère contient très peu d’information aléatoire comparée au message qu’elle protège. Une clé de cinq lettres représente à peine bits d’aléa, là où un message de 500 caractères en porte plusieurs milliers. Ce déséquilibre finit toujours par trahir la clé.
Vigenère fait exactement l’inverse : une clé courte, réutilisée sans relâche. C’est précisément ce qui le condamne.
Et aujourd’hui ?
Les chiffrements modernes (AES pour le symétrique, RSA pour l’asymétrique) ne sont pas attaquables par Kasiski. Ils n’ont pas de période exploitable, et leurs sorties ont une distribution quasi-uniforme même pour un message structuré. Les casser demanderait soit une force brute impraticable ( essais pour AES-128), soit de résoudre des problèmes mathématiques considérés comme durs (factorisation des grands nombres pour RSA).
Les ordinateurs quantiques menacent cet équilibre. L’algorithme de Shor (1994) casse RSA en temps polynomial sur une machine quantique suffisamment grande. Personne n’en a encore, mais le jour où ce sera le cas, il faudra tout remplacer. C’est l’objet de la cryptographie post-quantique, un champ de recherche actif, où certains candidats s’appuient sur des problèmes de réseaux euclidiens ou de codes correcteurs d’erreurs. De quoi animer les Grands oraux des prochaines années.
Ton plan Grand oral, minute par minute
L’épreuve du Grand oral se déroule en deux temps de 10 minutes, plus 20 minutes de préparation en amont. Voici un plan chronométré pour la phase d’exposé (les dix premières minutes, monologue) : respecte les temps, le jury pénalise les candidats qui s’éternisent sur l’introduction.
Pose le défi : peut-on construire un code vraiment incassable ? Vigenère a tenu trois siècles. Puis il est tombé en une heure. Cet exposé raconte pourquoi.
Définir chiffrement, déchiffrement, clé. Présenter César (décalage modulo 26) comme cas trivial, puis Vigenère (clé-mot répétée). Montrer qu'un même caractère clair peut donner différentes lettres chiffrées.
Répétitions dans le chiffré. Distances entre occurrences. PGCD des distances. Argument central : si deux occurrences d'une même séquence claire tombent sur la même portion de clé, leur distance est un multiple de la longueur de la clé.
Une fois la longueur de la clé connue, le chiffré se découpe en sous-textes équivalents chacun à un César. Distribution des lettres en français. Chaque lettre de la clé se retrouve en minimisant l'écart entre les deux distributions.
Dérouler les trois étapes sur un exemple concret préparé sur ton support papier : Kasiski donne 3, l'analyse fréquentielle donne DRA, le message devient lisible. Moins d'une heure pour un chiffre qui passait pour inviolable.
Aucun chiffrement périodique ne résiste à l'analyse statistique sur un texte long. Le one-time pad (Shannon, 1949) comme seule solution théoriquement incassable. Enjeux modernes : RSA, et la menace quantique pour demain.
Petite frise de l’histoire
graph LR A["Bellaso / Vigenère 1553-1586"] --> B["Babbage 1854"] B --> C["Kasiski 1863"] C --> D["Shannon 1949"] D --> E["RSA 1977"]
Ta checklist avant le passage
Vérifie que tu maîtrises
- Tu sais définir chiffrement, déchiffrement, clé, texte clair, texte chiffré
- Tu connais le principe de Kerckhoffs (la sécurité repose sur la clé, pas sur la méthode)
- Tu sais expliquer le chiffre de César et pourquoi il est trivialement cassable
- Tu sais expliquer le chiffre de Vigenère et pourquoi il a tenu trois siècles
- Tu sais énoncer le test de Kasiski en trois étapes : repérer les répétitions, mesurer les distances, prendre le PGCD
- Tu sais justifier pourquoi le PGCD donne la longueur de la clé
- Tu connais les cinq lettres les plus fréquentes en français (E, A, I, S, T)
- Tu sais expliquer comment découper le chiffré en sous-textes après Kasiski
- Tu sais ce que dit le théorème de Shannon sur le one-time pad (clé aléatoire aussi longue que le message = incassable)
- Tu sais pourquoi RSA ne tombe pas comme Vigenère
Pour conclure
Le chiffre de Vigenère est un beau cadavre. Il a tenu par réputation plutôt que par mérite mathématique : aucun mathématicien de son siècle n’avait pris la peine de le casser sérieusement. Babbage l’a fait en 1854 avec deux outils que tu connais par cœur : le PGCD et une simple analyse de fréquences.
La leçon dépasse le Grand oral. Un code qui paraît sûr ne l’est que jusqu’au jour où quelqu’un le regarde avec les bons outils. Les cryptographes modernes le savent, et c’est pour cette raison qu’ils passent leur temps à essayer de casser leurs propres chiffrements avant que d’autres ne s’en chargent. La sécurité, ça se démontre. Ça ne se suppose pas.
Si tu maîtrises Kasiski et l’analyse fréquentielle, si tu sais pourquoi le PGCD apparaît et pourquoi le E finit par tout trahir, tu tiens un Grand oral solide. Rigoureux, ancré dans ton programme, et porteur d’une vraie leçon.
Sources
- Kahn, D. (1967). The Codebreakers: The Story of Secret Writing. Macmillan. (La bible historique de la cryptographie, 1200 pages, tout y est.)
- Kasiski, F.W. (1863). Die Geheimschriften und die Dechiffrir-Kunst. Berlin.
- Singh, S. (1999). The Code Book. Anchor Books. (Vulgarisation de référence, très accessible pour un lycéen.)
- Shannon, C.E. (1949). “Communication Theory of Secrecy Systems”. Bell System Technical Journal, 28(4), pp. 656-715. (L’article qui fonde la cryptographie mathématique moderne.)
- Stern, J. (1998). La science du secret. Odile Jacob. (En français, par un grand cryptographe français, niveau lycéen motivé.)
- Accromath : diverses publications sur l’analyse fréquentielle et le chiffre de Vigenère.