Chiffre Vigenère

Comment briser le chiffre de Vigenère : examen Kasiski et récupération de clé

Apprenez à déchiffrer le chiffre de Vigenère sans clé à l'aide de l'examen Kasiski, de l'indice de coïncidence et de l'analyse de fréquence du chi carré.

Publié sur 18 mars 2026
14 min lire
Guides CaesarCipher.org

Pendant plus de trois siècles, le chiffre de Vigenère était connu sous le nom de "le chiffre indéchiffrable". Sa substitution polyalphabétique a vaincu toutes les attaques connues de son époque en masquant les modèles de fréquence des lettres qui rendent les chiffres monoalphabétiques comme le chiffre de César trivialement cassables. La même lettre de texte en clair pouvait être chiffrée en lettres de texte chiffrées entièrement différentes en fonction de sa position, et les cryptanalystes n'avaient aucun moyen d'exploiter cette variation.

Puis, dans les années 1850 et 1860, deux avancées ont brisé le mythe de l’invincibilité. Charles Babbage a secrètement déchiffré le chiffre vers 1854, et Friedrich Kasiski a publié indépendamment une attaque générale en 1863. Leur perspicacité était élégante : le mot-clé répétitif crée des modèles périodiques dans le texte chiffré, et ces modèles peuvent être mesurés, analysés et exploités pour récupérer la clé sans jamais voir le texte brut d'origine.

Cet article présente la cryptanalyse complète du chiffre de Vigenère – depuis la reconnaissance du fait qu'il s'agit d'un cryptage polyalphabétique, en passant par la détermination de la longueur de la clé, jusqu'à la récupération de chaque lettre de clé individuelle. Que vous résolviez un défi CTF, que vous étudiiez pour un cours de cryptographie ou que vous soyez simplement curieux de savoir comment fonctionne le décryptage, ces techniques vous donneront une méthode systématique pour déchiffrer n'importe quel message crypté par Vigenère.

Pourquoi le chiffre de Vigenère était considéré comme incassable

Pour comprendre pourquoi le chiffrement de Vigenère a nécessité des méthodes entièrement nouvelles, il est utile de voir ce qui le différencie des chiffrements de substitution plus simples.

Dans un chiffre de César, chaque lettre se décale du même montant. La lettre E, qui est la lettre la plus courante en anglais (apparaissant environ 12,7 % du temps), se déplace simplement vers une nouvelle position. Un cryptanalyste peut examiner la distribution de fréquence du texte chiffré, trouver le pic et déterminer immédiatement le décalage. L’ensemble de l’espace clé ne contient que 25 valeurs possibles.

Le chiffre Vigenère élimine cette vulnérabilité en utilisant un mot-clé répétitif pour faire varier le décalage à chaque position. Si le mot-clé est "LEMON" (longueur 5), alors la position 1 se décale de 11 (L), la position 2 se décale de 4 (E), la position 3 se décale de 12 (M), la position 4 se décale de 14 (O) et la position 5 se décale de 13 (N). La position 6 revient à un décalage de 11 et le motif se répète.

Le résultat est que la lettre E ne chiffre plus en une seule lettre de texte chiffré. Selon la lettre du mot-clé avec laquelle il s'aligne, E peut devenir P, I, Q, S, R ou toute autre lettre. La distribution des fréquences du texte chiffré s’aplatit considérablement – ​​aucune lettre ne domine – et la simple analyse des fréquences qui permet de déchiffrer César en quelques secondes devient inutile.

Mais « inutile » n’est pas la même chose qu’« impossible ». Le mot-clé répétitif introduit une subtile faiblesse structurelle que Kasiski et Babbage ont découvert indépendamment comment exploiter.

Reconnaître le texte chiffré de Vigenère

Avant de tenter de déchiffrer un chiffre, vous devez identifier s'il s'agit du chiffrement Vigenère. Plusieurs caractéristiques le distinguent des autres types de chiffrement :

  • Caractères alphabétiques avec limites de mots préservées. Comme César, le chiffre de Vigenère ne crypte traditionnellement que les lettres, laissant intacts les espaces et la ponctuation. La longueur des mots correspond au texte brut d'origine.
  • Une distribution des lettres aplatie mais non uniforme. Dans le texte chiffré de César, la distribution des fréquences ressemble à celle de l'anglais mais décalée. Dans le texte chiffré de Vigenère, la distribution est nettement plus plate — aucune lettre ne domine — mais elle n'est pas non plus complètement uniforme. Des fréquences complètement uniformes suggéreraient un pavé unique ou un texte aléatoire.
  • Un indice de coïncidence compris entre 0,04 et 0,05. Le IC du texte anglais est d'environ 0,0667, tandis qu'un texte véritablement aléatoire a un IC d'environ 0,0385. Le texte chiffré de Vigenère se situe généralement entre ces valeurs, et cette plage intermédiaire est un indicateur fort de substitution polyalphabétique.
  • Séquences répétées à intervalles réguliers. Si vous repérez des séquences identiques de trois lettres ou plus apparaissant à des distances partageant un facteur commun, le texte est très probablement crypté par Vigenère. Cette observation est à la base de l’examen Kasiski.

Si vous souhaitez automatiser cette étape d'identification, l'outil Cipher Identifier utilise ces caractéristiques pour détecter le chiffrement Vigenère et estimer automatiquement la longueur de la clé.

La stratégie d'attaque en deux étapes

Briser le chiffre de Vigenère nécessite une approche en deux étapes. Cette division est fondamentale : la sécurité du chiffre dépend de deux secrets distincts (la longueur de la clé et les lettres de la clé elles-mêmes), et chacun doit être attaqué avec des techniques différentes.

**Étape 1 :**Déterminez la longueur de la clé à l'aide de l'examen Kasiski et/ou de l'analyse de l'indice de coïncidence.Étape 2 : Une fois la longueur de la clé connue, divisez le texte chiffré en groupes et récupérez chaque lettre clé à l'aide de l'analyse de fréquence.

La beauté de cette approche est qu’elle réduit le problème de la décomposition d’un chiffre polyalphabétique en plusieurs cas de déchiffrement de simples chiffres de César – un problème qui avait déjà été résolu des siècles plus tôt.

Étape 1 : Trouver la longueur de la clé

Méthode A : Examen Kasiski

Publiée en 1863 par Friedrich Kasiski, un officier militaire prussien à la retraite, dans son livre Die Geheimschriften und die Dechiffrir-Kunst (« L'écriture secrète et l'art du déchiffrement »), cette méthode exploite une conséquence fondamentale du mot-clé répétitif.

L'idée principale est la suivante : les séquences de texte brut courantes - des mots comme "THE", "AND", "ING", "TION" - s'aligneront occasionnellement sur la même position dans le mot-clé répétitif. Lorsque cela se produit, la même séquence de texte en clair chiffrée avec les mêmes lettres clés produit des séquences de texte chiffré identiques. En trouvant ces séquences de texte chiffré répétées et en mesurant les distances entre elles, vous pouvez déterminer la longueur de la clé.

Exemple pratique de l'examen Kasiski

Supposons que vous analysiez un texte chiffré et que vous découvriez le trigramme répété suivant :

OccurrenceSéquencePosteDistance au suivant
1erVGH824
2èmeVGH3224
3èmeVGH56

Les distances entre les répétitions sont de 24 et 24. La longueur de la clé doit être un facteur de ces distances, car le mot-clé se répète toutes les k lettres, donc deux séquences de texte en clair identiques ne produiront des séquences de texte chiffré identiques que lorsque leur différence de position est un multiple de k.

Les facteurs de 24 sont : 1, 2, 3, 4, 6, 8, 12, 24.

Supposons maintenant que vous trouviez des séquences répétées supplémentaires :

SéquencePostesDistanceFacteurs
VGH8, 32, 5624, 241, 2, 3, 4, 6, 8, 12, 24
QMR15, 33181, 2, 3, 6, 9, 18
BWLX42, 78361, 2, 3, 4, 6, 9, 12, 18, 36

Le facteur commun aux trois séries de distances est 6. Cela suggère fortement que le mot-clé comporte 6 caractères.

Quand l'examen Kasiski fonctionne le mieux

L'efficacité de l'analyse Kasiski dépend fortement de la quantité de texte chiffré disponible :

  • Moins de 100 caractères : Les séquences répétées sont rares et peuvent ne pas apparaître du tout. L'analyse de Kasiski n'est pas fiable à cette longueur.
  • 100 à 200 caractères : Vous pouvez trouver quelques trigrammes répétés, suffisants pour une estimation provisoire de la longueur de la clé, mais peut-être pas concluante.
  • 200+ caractères : La méthode devient très fiable. Plusieurs séquences répétées apparaîtront et leurs distances convergeront vers la longueur de clé correcte.
  • 1 000+ caractères : L'analyse devient presque certaine, avec de nombreux trigrammes répétés et même des quadgrammes fournissant des preuves statistiques accablantes.

Il est également important de noter que toutes les séquences répétées dans le texte chiffré n’ont pas de sens. Certaines répétitions se produisent par coïncidence : une séquence de texte en clair s'alignant sur différentes positions clés produit simplement le même texte chiffré. Ces faux positifs introduisent du bruit dans l’analyse, c’est pourquoi il est essentiel d’examiner plusieurs séquences répétées et de rechercher le facteur partagé le plus courant.

Méthode B : Indice de coïncidence (IC)

Développé par William Friedman en 1920 lors de son travail révolutionnaire pour le service de renseignement sur les transmissions de l'armée US, l'indice de coïncidence offre une approche purement statistique pour déterminer la longueur des clés. Tandis que l'examen Kasiski recherche des modèles visibles, la méthode IC mesure la structure statistique sous-jacente du texte.

L'indice de coïncidence est la probabilité que deux lettres choisies au hasard dans un texte soient identiques. La formule est :

IC = Σ nᵢ(nᵢ - 1) / N(N - 1)nᵢ est le nombre de la i-ème lettre (A à Z) et N est le nombre total de lettres dans le texte.

Valeurs IC attendues

Différents types de texte produisent des valeurs IC caractéristiques :

Type de texteAttendu IC
Texte brut en anglais~0,0667
Texte clair allemand~0,0762
Texte clair français~0,0778
Aléatoire (distribution uniforme)~0,0385
Texte chiffré de Vigenère (clé courte)0,04 – 0,05
Texte chiffré de Vigenère (clé longue)~0,038

L’idée clé est qu’un chiffre César préserve le IC de la langue d’origine (car il ré-étiquete simplement les lettres sans changer leurs fréquences), tandis que le cryptage Vigenère réduit le IC vers la ligne de base aléatoire.

Utilisation de IC pour trouver la longueur de la clé

La procédure est systématique :

  1. Pour chaque longueur de clé candidate k (à partir de 1), extrayez chaque k-ème lettre du texte chiffré pour créer k sous-séquences distinctes.
  2. Calculez le IC de chaque sous-séquence.
  3. Faites la moyenne des valeurs IC sur toutes les sous-séquences k.
  4. Lorsque la moyenne du IC approche 0,0667 (la valeur anglaise), vous avez trouvé la bonne longueur de clé.

Le raisonnement est simple : lorsque vous devinez la bonne longueur de clé, chaque sous-séquence est constituée de lettres qui ont toutes été cryptées avec le même décalage César. Ces lettres conservent la distribution de fréquence de l'anglais (juste décalée), donc leur IC correspondra à l'anglais. Lorsque vous devinez la mauvaise longueur de clé, les sous-séquences mélangent des lettres cryptées avec différents décalages, produisant une distribution plus plate et un IC inférieur.

Par exemple, tester les longueurs de clé sur un texte chiffré peut produire :

Longueur de la clé du candidatMoyenne IC
10,0421
20,0398
30,0412
40,0405
50,0638
60,0423
70,0401

La pointe pointue à la longueur de clé 5 (IC = 0,0638, proche de la valeur anglaise de 0,0667) révèle la longueur de clé correcte. Tous les autres candidats produisent des valeurs IC proches de la ligne de base aléatoire de 0,0385.

Combiner Kasiski et IC pour plus de confiance

En pratique, les cryptanalystes expérimentés utilisent les deux méthodes ensemble. L'examen Kasiski fournit des longueurs de clé candidates basées sur des séquences répétées, et le test IC confirme quel candidat a raison. Si Kasiski suggère des longueurs de clé de 4, 6 ou 12 (comme facteurs communs des distances observées), le calcul du IC pour chaque candidat identifiera le bon. Cette approche combinée est ce que notre décodeur de chiffre Vigenère implémente automatiquement.

Étape 2 : Récupérer chaque lettre clé

Une fois la longueur de clé kdéterminée, le plus dur est passé. Le texte chiffré est divisé en groupesk, chacun chiffré avec un seul décalage César :

  • Groupe 1 : Lettres aux positions 1, k+1, 2k+1, 3k+1, ...
  • Groupe 2 : Lettres aux positions 2, k+2, 2k+2, 3k+2, ...
  • Groupe k : Lettres aux positions k, 2k, 3k, 4k, ...

Chaque groupe est un simple chiffre de César, et briser les chiffres de César est élémentaire. Deux approches fonctionnent bien :

Analyse de fréquence

Pour chaque groupe, comptez la fréquence de chaque lettre et comparez-la à la distribution attendue de la fréquence des lettres anglaises. La lettre la plus courante du groupe est probablement le cryptage E (la lettre anglaise la plus courante). Si la lettre la plus fréquente du groupe 1 est P, alors le décalage pour ce groupe est P - E = 11, ce qui signifie que la première lettre clé est L (position 11).

Cette approche fonctionne bien avec les grands groupes (plus de 100 lettres par groupe), mais peut s'avérer peu fiable avec des échantillons plus petits où les fluctuations statistiques faussent la distribution.

Test du chi carré

Une approche plus robuste consiste à calculer la statistique du chi carré pour chaque valeur de décalage possible (0 à 25) et à sélectionner le décalage qui produit la valeur du chi carré la plus basse, indiquant la correspondance la plus proche de la distribution anglaise attendue.

Pour un décalage donné s appliqué à un groupe, la statistique du chi carré est :

χ² = Σ (Oᵢ - Eᵢ)² / EᵢOᵢ est le nombre observé de la i-ème lettre après déchiffrement avec le décalage s, et Eᵢ est le nombre attendu basé sur les fréquences des lettres anglaises.

Le décalage qui minimise χ² est presque certainement le bon, même avec des tailles d'échantillon relativement petites. Tester les 26 équipes de chaque groupe et sélectionner le minimum est à la fois rapide et précis.

Rassembler tout cela

Supposons que l'analyse Kasiski et IC ait déterminé une longueur de clé de 5. Vous divisez le texte chiffré en 5 groupes et exécutez une analyse du chi carré sur chacun :

GroupeMeilleur quart de travailLettre clé
111L
24E
312M
414Ô
513N

Le mot-clé récupéré est LEMON. Vous pouvez désormais décrypter l'intégralité du message en utilisant la formule de décryptage standard de Vigenère :

Pᵢ = (Cᵢ - Kᵢ + 26) mod 26

Pour vérifier le résultat, décryptez les premiers mots et vérifiez s’ils forment un anglais cohérent. Si tel est le cas, la clé est confirmée.

Longueur de la clé par rapport à la sécurité

La sécurité du chiffre Vigenère dépend presque entièrement de la longueur du mot-clé par rapport au texte en clair. Comprendre cette relation explique à la fois pourquoi le chiffre a été efficace pendant des siècles et pourquoi il a finalement échoué :

Longueur de cléSécurité efficaceVulnérabilité
1 lettreÉquivalent à Chiffre de CésarTrivialement brisé par la force brute (25 clés)
3-5 lettresFaibleFacilement déchiffré avec plus de 100 caractères de texte chiffré
6-12 lettresModéré (pour l'époque)Cassable avec Kasiski + analyse IC
20+ lettresÉlevé (pour l'époque)Nécessite un texte chiffré très long pour attaquer
= longueur du texte en clair (aléatoire)Théoriquement incassableIl s'agit dupad unique (chiffre Vernam)

Le tampon à usage unique – où la clé est véritablement aléatoire, au moins aussi longue que le message, et jamais réutilisée – est le seul système de cryptage prouvé incassable qui existe. C'est l'aboutissement logique du principe de Vigenère : utiliser une clé si longtemps qu'elle ne se répète jamais, éliminant ainsi les motifs périodiques exploités par Kasiski et IC.

Évaluation de la sécurité : pourquoi les normes modernes exigent davantage

Le chiffre de Vigenère n'est pas sécurisé selon les normes modernes, et ses faiblesses vont au-delà du simple fait d'avoir une clé courte :

FaiblesseDétail
Touche répétitiveLe mot-clé se répète, créant des modèles périodiques exploitables par l'analyse Kasiski
La longueur de la clé est le goulot d'étranglementLa sécurité est proportionnelle à la longueur de la clé ; les clés courtes sont facilement récupérées
Vulnérable à l'analyse ICLes méthodes statistiques peuvent déterminer la longueur de la clé à partir du seul texte chiffré
Pas de diffusionChaque lettre du texte chiffré ne dépend que d'une lettre du texte en clair et d'une lettre clé
Déterministe par posteLa même lettre en clair aux positions avec la même lettre clé produit toujours le même texte chiffré

Les algorithmes de chiffrement modernes tels que AES utilisent des clés de 128 à 256 bits, plusieurs cycles de transformation, ainsi que de la confusion et de la diffusion pour garantir que la modification d'un bit d'entrée unique affecte chaque bit de sortie. Le chiffre de Vigenère n'atteint aucune de ces propriétés.

Décryptage historique : Babbage et la guerre de Crimée

Charles Babbage (1791-1871), le mathématicien anglais célèbre pour avoir conçu le premier ordinateur mécanique, a secrètement déchiffré le chiffre de Vigenère vers 1854, soit près d'une décennie avant l'attaque publiée par Kasiski. Travaillant dans son étude privée, Babbage a découvert que des séquences répétées dans le texte chiffré révèlent la longueur de la clé, essentiellement la même idée que Kasiski a publiée plus tard de manière indépendante.

Mais Babbage n'a jamais publié ses résultats. Les historiens pensent que cela était délibéré : les renseignements britanniques ont probablement utilisé cette technique pendant la guerre de Crimée (1853-1856) pour lire les communications cryptées russes et alliées. La publication de la méthode aurait alerté les adversaires de la vulnérabilité. La percée de Babbage n'a été redécouverte qu'au XXe siècle grâce à ses notes inédites.

Cet épisode illustre un schéma récurrent tout au long de l’histoire de la cryptographie : l’écart entre la cryptanalyse secrète du gouvernement et les connaissances universitaires publiques peut s’étendre sur des décennies. La même dynamique s’est produite avec le NSA et la cryptographie à clé publique dans les années 1970.

Échec du monde réel : le chiffre de Vigenère dans la guerre civile américaine

La guerre civile américaine (1861-1865) fournit une étude de cas frappante sur la manière dont le chiffre de Vigenère échoue en pratique, même lorsque les mathématiques sous-jacentes sont solides.

Les États confédéréss'appuyaient sur une variante du chiffre de Vigenère pour les communications sur le terrain. Les officiers confédérés utilisaient undisque chiffré en laiton— deux roues alphabétiques concentriques qui pouvaient être tournées pour définir différentes valeurs de décalage — ainsi qu'un mot-clé convenu à l'avance qui changeait périodiquement. Le mot-clé confédéré le plus couramment utilisé aurait été**"MANCHESTER BLUFF"**, bien que des clés telles que "COMPLETE VICTORY" aient également été utilisées.

Cependant, la mise en œuvre confédérée souffrait de faiblesses critiques :

  • Mots-clés courts et prévisibles. Phrases souvent patriotiques que les cryptanalystes de l'Union pourraient deviner ou reconstruire partiellement.
  • Clés répétées. Le même mot-clé a été réutilisé dans de nombreux messages, fournissant ainsi un texte chiffré suffisant pour une analyse de style Kasiski.
  • Mauvaise sécurité opérationnelle. Des mots-clés étaient parfois transmis en clair ou enregistrés dans des documents capturés.

Le Bureau de chiffrement de l'Union, dirigé par des cryptanalystes dont Albert J. Myer et les opérateurs télégraphiques des « Trois Sacrés » (David Homer Bates, Albert Chandler et Charles Tinker), cassait régulièrement les messages confédérés de Vigenère. Le capitaine Campbell Brown de l'armée confédérée écrivit plus tard que le système de chiffrement « était si mal géré que les autorités fédérales ont probablement déchiffré nos dépêches avec régularité tout au long de la guerre ».

Leur succès a démontré un principe qui reste fondamental dans la cryptographie moderne : aucun algorithme de chiffrement, aussi solide soit-il mathématiquement, ne peut protéger les messages si les clés sont prévisibles, réutilisées ou manipulées avec négligence. La gestion des clés est au moins aussi importante que le chiffrement lui-même.

La véritable histoire : Bellaso contre Vigenère

Le chiffre universellement connu sous le nom de "Vigenère" n'a pas été inventé par Blaise de Vigenère. Le véritable inventeur était Giovan Battista Bellaso, un cryptographe italien qui a publié la méthode de substitution polyalphabétique en utilisant un mot-clé répétitif dans son ouvrage de 1553 La Cifra del Sig. Giovan Battista Bellaso.

L'innovation de Bellaso était élégante : plutôt que d'utiliser un décalage fixe (comme l'a fait César) ou un décalage progressif (comme le proposait Trithemius en 1508), il a introduit un mot-clé secretsur lequel l'expéditeur et le destinataire se sont mis d'accord à l'avance, le mot-clé se répétant tout au long du message.Blaise de Vigenère (1523-1596), diplomate et cryptographe français, a publié un chiffre différent et sans doute plus sophistiqué en 1586 dans sa Traicté des Chiffres. Le chiffrement réel de Vigenère était un système de clé automatique : la clé commence par une lettre d'amorçage, puis utilise le texte en clair lui-même pour générer les lettres clés suivantes, ce qui rend la clé efficace non répétitive. Il s’agit d’un système fondamentalement plus puissant que le chiffre à mots-clés répétitifs qui porte son nom. Vous pouvez explorer l'invention réelle de Vigenère sur notre page Autokey Cipher.

La mauvaise attribution s'est produite au XIXe siècle, lorsque les historiens ont confondu les deux systèmes. Au moment où l'erreur a été reconnue, le « chiffre de Vigenère » était devenu le nom standard de la méthode de répétition de mots-clés de Bellaso, et son usage persiste encore aujourd'hui.

Implémentation de l'analyse Kasiski en Python

Une implémentation pratique en Python des techniques de cryptanalyse évoquées ci-dessus permet de solidifier les concepts. Le code suivant illustre à la fois l'examen Kasiski et la détection de la longueur de clé basée sur IC- :

from collections import Counter
import math

def find_repeated_sequences(ciphertext, min_length=3):
    """Find repeated sequences and their distances (Kasiski examination)."""
    sequences = {}
    text = ''.join(c for c in ciphertext.upper() if c.isalpha())

    for length in range(min_length, min(6, len(text) // 2)):
        for i in range(len(text) - length + 1):
            seq = text[i:i + length]
            if seq not in sequences:
                sequences[seq] = []
            sequences[seq].append(i)

    # Keep only sequences that appear more than once
    repeated = {seq: positions for seq, positions in sequences.items()
                if len(positions) > 1}

    # Calculate distances
    distances = []
    for seq, positions in repeated.items():
        for i in range(len(positions) - 1):
            distances.append(positions[i + 1] - positions[i])

    return repeated, distances

def compute_ic(text):
    """Compute the Index of Coincidence for a text."""
    counts = Counter(c for c in text.upper() if c.isalpha())
    n = sum(counts.values())
    if n <= 1:
        return 0
    return sum(c * (c - 1) for c in counts.values()) / (n * (n - 1))

def find_key_length_ic(ciphertext, max_key_length=20):
    """Use IC analysis to find the most likely key length."""
    text = ''.join(c for c in ciphertext.upper() if c.isalpha())
    results = {}

    for key_len in range(1, min(max_key_length + 1, len(text) // 2)):
        groups = ['' for _ in range(key_len)]
        for i, char in enumerate(text):
            groups[i % key_len] += char

        avg_ic = sum(compute_ic(g) for g in groups) / key_len
        results[key_len] = avg_ic

    return results

def recover_key(ciphertext, key_length):
    """Recover key letters using chi-squared analysis."""
    text = ''.join(c for c in ciphertext.upper() if c.isalpha())
    english_freq = [0.0817, 0.0150, 0.0278, 0.0425, 0.1270,
                    0.0223, 0.0202, 0.0609, 0.0697, 0.0015,
                    0.0077, 0.0403, 0.0241, 0.0675, 0.0751,
                    0.0193, 0.0010, 0.0599, 0.0633, 0.0906,
                    0.0276, 0.0098, 0.0236, 0.0015, 0.0197, 0.0007]

    key = []
    for group_idx in range(key_length):
        group = text[group_idx::key_length]
        n = len(group)
        best_shift = 0
        best_chi2 = float('inf')

        for shift in range(26):
            chi2 = 0
            for i in range(26):
                observed = sum(1 for c in group
                              if (ord(c) - ord('A') - shift) % 26 == i)
                expected = english_freq[i] * n
                if expected > 0:
                    chi2 += (observed - expected) ** 2 / expected

            if chi2 < best_chi2:
                best_chi2 = chi2
                best_shift = shift

        key.append(chr(best_shift + ord('A')))

    return ''.join(key)

# Full cryptanalysis pipeline
ciphertext = "LXFOPVEFRNHR"  # Example: ATTACKATDAWN with key LEMON

# Step 1: Find key length using IC
ic_results = find_key_length_ic(ciphertext)
print("IC Analysis Results:")
for length, ic in sorted(ic_results.items()):
    marker = " <-- likely" if ic > 0.06 else ""
    print(f"  Key length {length}: IC = {ic:.4f}{marker}")

# Step 2: Recover the key
best_length = max(ic_results, key=lambda k: ic_results[k])
key = recover_key(ciphertext, best_length)
print(f"\nRecovered key: {key}")

Cette implémentation suit exactement l'approche en deux étapes décrite ci-dessus : déterminez d'abord la longueur de la clé via l'analyse IC, puis récupérez chaque lettre clé via un test du chi carré par rapport aux fréquences attendues des lettres anglaises. Pour une implémentation complète du cryptage/déchiffrement, visitez la page Exemples et codes de chiffrement Vigenère.

Chiffres associés et lectures complémentaires

Le chiffre de Vigenère appartient à une famille de systèmes polyalphabétiques, et comprendre ses proches permet d'approfondir vos connaissances en cryptanalyse :

  • Beaufort Cipher — Une variante réciproque dans laquelle la lettre clé est soustraite d'une position fixe plutôt qu'ajoutée. La même opération effectue à la fois le cryptage et le déchiffrement, mais elle est vulnérable aux mêmes attaques Kasiski et IC.
  • Autokey Cipher — Le chiffre que Vigenère a réellement inventé. En utilisant le texte brut lui-même comme partie intégrante de la clé, il élimine la faiblesse de la clé répétitive, rendant l'examen Kasiski inefficace. Cependant, il possède ses propres vulnérabilités basées sur des attaques connues en texte clair.
  • Cesar Cipher — Le prédécesseur monoalphabétique. Comprendre la cryptanalyse de César est essentiel car l'étape 2 de l'attaque de Vigenère se réduit à résoudre indépendamment plusieurs chiffres de César.
  • Table Vigenère — La tabula recta 26x26 utilisée pour le cryptage manuel de Vigenère. Comprendre ce tableau permet de visualiser pourquoi différentes lettres clés produisent différents alphabets de substitution.

L'évolution de César (changement unique) à Vigenère (mot-clé répétitif), en passant par l'autokey (clé non répétitive) et le pavé unique (clé véritablement aléatoire) représente l'un des arcs conceptuels les plus importants de l'histoire de la cryptographie. Chaque étape répond à une faiblesse spécifique de la conception précédente, et les attaques développées contre chaque chiffre ont conduit à l’invention de son successeur.

Essayez-le vous-même

La meilleure façon de comprendre la cryptanalyse de Vigenère est de la pratiquer. Essayez notre décodeur Vigenère Cipher gratuit avec examen Kasiski automatique et récupération de clé. Collez n'importe quel texte chiffré par Vigenère et l'outil estimera la longueur de la clé, récupérera le mot-clé et déchiffrera le message, le tout en utilisant les techniques décrites dans cet article.

À propos de cet article

Cet article fait partie de notre collection de guides Chiffre Vigenère. Explorez les outils, exemples et workflows pratiques associés sur CaesarCipher.org.

Essayez l'outil Chiffre Vigenère

Mettez le guide en pratique avec des outils et exemples liés à chiffre vigenère.

Essayez l'outil Chiffre Vigenère