Partie C5 · exercices 26 à 29

Vigenère : plusieurs décalages

Comment résister à l'analyse des fréquences : changer de clé à chaque lettre

Le code de César est faible car une lettre est toujours remplacée par la même lettre. Au XVIᵉ siècle, le diplomate Blaise de Vigenère décrit une méthode qui change de décalage à chaque lettre, à l'aide d'un mot-clé.

CoursLe principe

La clé est un mot. Chaque lettre du mot donne un décalage : A = 0, B = 1, C = 2, … Z = 25. On utilise les décalages l'un après l'autre, en boucle.

Exemple : on chiffre « ECOLE » avec la clé « CLE » (décalages 2, 11 et 4).

Lettre du texteECOLE
Lettre de la cléCLECL
Décalage2114211
Lettre chiffréeGNSNP

À retenir

Le E est chiffré en G la première fois, en P la seconde : une même lettre du texte clair peut donner des lettres différentes. Inversement, deux lettres différentes (ici C et L) peuvent donner la même lettre chiffrée (N).

Tu peux essayer avec la machine de Vigenère.

Pour déchiffrer

On connaît la clé : on décale dans l'autre sens, avec les mêmes décalages dans le même ordre.

ExercicesChiffrer à la main, puis comparer

EX 26Je m'entraîne 🌶️prise en main

Exercice 26 — Un premier message

  1. Chiffre « BONJOUR » avec la clé « LUNE » (décalages 11, 20, 13, 4).
  2. Déchiffre « XEL TSFHL ZGZT TTMEAGAWE » avec la clé « MATHS » (décalages 12, 0, 19, 7, 18).
Indice

Écris la clé sous le message, en la répétant. Ne consomme une lettre de la clé que pour une lettre du message (pas pour un espace).

📝 réponses dans ton compte rendu, exercice 26

EX 27Je découvre 🌶️🌶️application

Exercice 27 — César contre Vigenère

Voici le même texte clair, puis deux chiffrements. Le premier est un César de clé 7, le second un Vigenère de clé « LUNE ».

  • César : THPAYL JVYILHB ZBY BU HYIYL WLYJOL ALUHPA LU ZVU ILJ BU MYVTHNL THPAYL YLUHYK WHY S VKLBY HSSLJOL SBP APUA H WLB WYLZ JL SHUNHNL
  • Vigenère : XUVXCY PSCVREF MHV FH NVMLR TPLPLP NRRLCG IY MBR MYP YY ZESXUTI XUVXCY EIYUEH AUE P ZXRYC UYPPWUI WOV XTHG E AYH TCYF GP FNRRUTI
  1. Avec l'Analyseur de fréquences, colle chaque texte. Quelle est la lettre la plus fréquente, et combien de fois apparaît-elle ?
  2. Sur lequel des deux textes la méthode de la partie C4 fonctionne-t-elle ? Pourquoi ?
  3. Pourquoi, avec Vigenère, le E n'est-il plus toujours chiffré par la même lettre ?
Indice

Le texte clair contient 104 lettres. Compare les hauteurs des barres sur les deux histogrammes.

📝 réponses dans ton compte rendu, exercice 27

ExercicesVigenère en Python

Ce programme reprend l'idée de cryptCesar, en utilisant le reste de la division % pour boucler dans l'alphabet (cf. le défi de la partie C3).

EX 28Je programme 🌶️🌶️🌶️plusieurs étapes

Exercice 28 — La fonction vigenere

Enregistre ce programme, puis complète la ligne marquée .... Les messages sont en majuscules, sans accent.

vigenere.py
def vigenere(texte, cle):
    resultat = ""
    i = 0                                    # position dans la clé
    for lettre in texte.upper():
        if 65 <= ord(lettre) <= 90:
            decalage = ord(cle[i % len(cle)]) - ...          # à compléter
            resultat += chr((ord(lettre) - 65 + decalage) % 26 + 65)
            i = i + 1
        else:
            resultat += lettre
    return resultat
  1. Complète la ligne du décalage (un décalage vaut 0 pour A).
  2. Teste print(vigenere("ECOLE", "CLE")). Obtiens-tu GNSNP ?
  3. À quoi sert i % len(cle) ?
  4. Comment utiliser la fonction pour déchiffrer ? (indice : pense à une clé qui « défait » le décalage)
Indice 1

Le décalage de la lettre C est ord("C") - 65 = 2.

Indice 2

Pour déchiffrer avec une clé de décalages \(d_1, d_2, …\), il faut décaler de \(26 - d_1, 26 - d_2, …\) : on peut construire la clé inverse lettre par lettre.

💾 NOM_Prenom_ex28.py

CoursPeut-on casser Vigenère ?

Oui, mais c'est plus difficile : le chiffrement de Vigenère a longtemps été surnommé « le chiffre indéchiffrable ». Il a pourtant été cassé au XIXᵉ siècle : si on retrouve la longueur de la clé (méthode de Kasiski, 1863), on se ramène à plusieurs César successifs, que l'on casse avec les fréquences.

Une idée pour la suite

Plus la clé est longue, plus le chiffrement est solide. Une clé aussi longue que le message, choisie au hasard et utilisée une seule fois donne un chiffrement impossible à casser (le « masque jetable »). Mais il faut alors échanger cette clé en secret… ce qui pose un autre problème.

EX 29Je synthétise 🌶️🌶️🌶️plusieurs étapes

Exercice 29 — Pourquoi c'est plus solide

  1. Que se passe-t-il si on choisit une clé d'une seule lettre ?
  2. Pourquoi une clé plus longue rend-elle l'analyse de fréquences plus difficile ?
  3. Pourquoi une clé aussi longue que le message est-elle difficile à utiliser en pratique ?
Indice

Une clé d'une lettre donne toujours le même décalage.

📝 réponses dans ton compte rendu, exercice 29