{
  "chapter": {
    "id": "securisation",
    "level": "terminale",
    "theme": "Architectures",
    "title": "Sécurisation des communications",
    "description": "Chiffrement symétrique (clé secrète) et asymétrique (clés\npublique/privée), fonctions de hachage cryptographiques,\nsignature numérique, certificats, protocole TLS, principes\nfondamentaux de la cryptographie moderne.",
    "parties": [
      {
        "id": "historiques",
        "title": "Chiffrements symétriques, d'hier à aujourd'hui"
      },
      {
        "id": "asymetrique",
        "title": "Chiffrement asymétrique et RSA"
      },
      {
        "id": "usages",
        "title": "Échange de clés et HTTPS"
      }
    ],
    "prerequisites": [],
    "references": []
  },
  "questions": [
    {
      "id": "q01",
      "difficulty": 1,
      "skills": [
        "definition",
        "chiffrement"
      ],
      "title": "Définition du chiffrement",
      "partie": "historiques",
      "statement": "Que désigne précisément le **chiffrement** d'un message ?",
      "options": [
        {
          "text": "La compression d'un fichier pour gagner de la place",
          "correct": false,
          "feedback": "Erreur : la compression et le chiffrement sont des\nopérations distinctes. La compression réduit la\ntaille, le chiffrement protège la confidentialité.\n"
        },
        {
          "text": "Rendre le message illisible sans la clé",
          "correct": true,
          "feedback": "Bonne réponse : le chiffrement protège la\n**confidentialité**. Le message « clair » devient un\n« chiffré » ou « cryptogramme ». Seul le détenteur\nde la clé peut le déchiffrer.\n"
        },
        {
          "text": "La signature d'un document",
          "correct": false,
          "feedback": "Erreur : la signature numérique est une autre\nopération cryptographique, qui garantit l'authenticité\n(qui ?) et l'intégrité (a-t-il été modifié ?), pas la\nconfidentialité.\n"
        },
        {
          "text": "La transformation du message en chiffres uniquement",
          "correct": false,
          "feedback": "Erreur : confusion possible avec le mot « chiffres ».\nLe chiffrement transforme un message en une forme\nillisible sans la bonne clé, mais pas spécifiquement\nen chiffres.\n"
        }
      ],
      "explanation": "Cryptologie = cryptographie (chiffrement, signature) +\ncryptanalyse (cassage des codes). Le terme « cryptage »\nest un anglicisme à éviter en français : on dit\n« chiffrement »."
    },
    {
      "id": "q02",
      "difficulty": 1,
      "skills": [
        "symetrique"
      ],
      "title": "Chiffrement symétrique",
      "partie": "historiques",
      "statement": "Qu'est-ce qu'un chiffrement **symétrique** ?",
      "options": [
        {
          "text": "Un chiffrement où l'on utilise deux clés différentes : une publique et une privée",
          "correct": false,
          "feedback": "Erreur : c'est la définition du chiffrement\n**asymétrique**, pas symétrique.\n"
        },
        {
          "text": "Un chiffrement où la même clé sert au chiffrement et au déchiffrement",
          "correct": true,
          "feedback": "Bonne réponse : le chiffrement de César ou AES en sont des exemples. La clé doit être partagée entre l'expéditeur et le destinataire avant l'échange. C'est rapide mais pose le problème de la **distribution** de la clé.\n"
        },
        {
          "text": "Un chiffrement qui ne nécessite aucune clé",
          "correct": false,
          "feedback": "Erreur : un chiffrement sans clé serait facilement\ndéchiffrable par toute personne connaissant\nl'algorithme. Ce serait un encodage, pas un\nchiffrement.\n"
        },
        {
          "text": "Un chiffrement qui inverse l'ordre des caractères",
          "correct": false,
          "feedback": "Erreur : c'est une simple transposition, qui n'est\npas un chiffrement moderne (et ne nécessite pas de\nclé).\n"
        }
      ],
      "explanation": "AES est aujourd'hui le chiffrement symétrique le plus utilisé. Comme dans le chiffrement de César, bien plus ancien et facile à casser, la même clé secrète sert à chiffrer et à déchiffrer."
    },
    {
      "id": "q03",
      "difficulty": 1,
      "skills": [
        "asymetrique"
      ],
      "title": "Chiffrement asymétrique",
      "partie": "asymetrique",
      "statement": "Quel est le principe du chiffrement **asymétrique** ?",
      "options": [
        {
          "text": "Le message est chiffré et déchiffré avec la même clé",
          "correct": false,
          "feedback": "Erreur : c'est la définition du chiffrement\n**symétrique**.\n"
        },
        {
          "text": "Deux algorithmes de chiffrement différents sont utilisés",
          "correct": false,
          "feedback": "Erreur : « asymétrique » fait référence à\nl'asymétrie des clés (publique vs privée), pas des\nalgorithmes.\n"
        },
        {
          "text": "On utilise deux algorithmes simultanément pour plus de sécurité",
          "correct": false,
          "feedback": "Erreur : aucun rapport. L'asymétrie concerne les clés.\n"
        },
        {
          "text": "Une clé publique chiffre, une clé privée déchiffre",
          "correct": true,
          "feedback": "Bonne réponse : on génère un **couple** (clé publique,\nclé privée). La clé publique peut être diffusée\nlibrement ; tout le monde peut chiffrer pour vous.\nSeul le détenteur de la clé privée peut déchiffrer.\n"
        }
      ],
      "explanation": "Le chiffrement asymétrique résout le problème de la\ndistribution des clés : pour qu'Alice envoie un message\nchiffré à Bob, elle utilise simplement la clé publique\nde Bob, qu'il a déjà publiée. Pas besoin d'échange\npréalable secret."
    },
    {
      "id": "q04",
      "difficulty": 1,
      "skills": [
        "rsa"
      ],
      "title": "RSA",
      "partie": "asymetrique",
      "statement": "Sur quelle difficulté mathématique repose la sécurité de\nl'algorithme **RSA** ?",
      "options": [
        {
          "text": "Factoriser un grand nombre en facteurs premiers",
          "correct": true,
          "feedback": "Bonne réponse : la clé publique contient le produit\n$N = p \\cdot q$ de deux grands nombres premiers. Si\non savait factoriser $N$ rapidement, on pourrait\nretrouver la clé privée. Pour des $N$ de plusieurs\nmilliers de bits, c'est encore impossible avec les\nordinateurs classiques.\n"
        },
        {
          "text": "La difficulté de calculer la racine carrée",
          "correct": false,
          "feedback": "Erreur : la racine carrée se calcule en temps\npolynomial. RSA repose sur d'autres problèmes.\n"
        },
        {
          "text": "La difficulté de trier de grandes listes",
          "correct": false,
          "feedback": "Erreur : le tri n'a aucun rapport avec RSA. Le tri\nest un problème facile.\n"
        },
        {
          "text": "La difficulté de calculer le produit de deux nombres",
          "correct": false,
          "feedback": "Erreur : la **multiplication** est facile (polynomial),\nc'est l'opération inverse qui est difficile.\n"
        }
      ],
      "explanation": "RSA (Rivest-Shamir-Adleman, $1977$) est l'algorithme\nasymétrique le plus connu. La sécurité dépend de la\ntaille de $N$ : aujourd'hui, on recommande au moins\n$2048$ bits."
    },
    {
      "id": "q05",
      "difficulty": 1,
      "skills": [
        "asymetrique",
        "cle-publique",
        "https"
      ],
      "title": "Une clé publique qui circule en clair",
      "partie": "asymetrique",
      "statement": "Au début d'une connexion HTTPS, le serveur envoie sa **clé publique** au navigateur sans la chiffrer. Un espion qui se contente d'observer le réseau peut donc la lire. Est-ce un problème pour la confidentialité des échanges ?",
      "options": [
        {
          "text": "Non, cette clé permet de chiffrer mais pas de déchiffrer",
          "correct": true,
          "feedback": "Bonne réponse : ce que la clé publique chiffre, seule la clé privée du serveur peut le déchiffrer. L'espion qui la connaît peut chiffrer des messages pour le serveur, mais pas lire ceux que le navigateur lui envoie.\n"
        },
        {
          "text": "Oui, l'espion peut déchiffrer la clé de session avec elle",
          "correct": false,
          "feedback": "Erreur : la clé de session est chiffrée avec la clé publique, et seule la clé privée correspondante permet de la déchiffrer. La clé publique ne sert à rien pour cette opération.\n"
        },
        {
          "text": "Oui, il faudrait l'envoyer chiffrée avec une clé symétrique",
          "correct": false,
          "feedback": "Erreur : le navigateur et le serveur ne partagent encore aucune clé symétrique à ce stade. Le chiffrement asymétrique sert justement à se passer de ce secret commun préalable.\n"
        },
        {
          "text": "Non, car l'espion ne peut pas lire les paquets d'une connexion HTTPS",
          "correct": false,
          "feedback": "Erreur : un espion placé sur le réseau voit passer tous les paquets. HTTPS rend leur contenu illisible, mais la clé publique, envoyée en clair, est bel et bien lisible.\n"
        }
      ],
      "explanation": "Une clé publique est faite pour être diffusée : la connaître ne donne aucun moyen de déchiffrer. Toute la sécurité repose sur la clé privée, qui ne quitte jamais le serveur."
    },
    {
      "id": "q06",
      "difficulty": 1,
      "skills": [
        "principes",
        "cle-secrete"
      ],
      "title": "Un algorithme de chiffrement rendu public",
      "partie": "historiques",
      "statement": "Les algorithmes de chiffrement utilisés sur Internet sont publiés en détail et étudiés par des chercheurs du monde entier. Pourquoi cette publicité ne compromet-elle pas la sécurité des messages chiffrés ?",
      "options": [
        {
          "text": "Les algorithmes publiés sont modifiés chaque jour par leurs auteurs",
          "correct": false,
          "feedback": "Erreur : un algorithme de chiffrement reste stable pendant des années, pour que tous les logiciels puissent l'utiliser de la même façon. C'est la clé qui change d'un échange à l'autre.\n"
        },
        {
          "text": "Seuls les chercheurs autorisés ont le droit de lire ces publications",
          "correct": false,
          "feedback": "Erreur : ces publications sont accessibles à tous, attaquants compris. La sécurité ne peut donc pas reposer sur leur confidentialité.\n"
        },
        {
          "text": "La sécurité repose sur le secret de la clé, pas sur l'algorithme",
          "correct": true,
          "feedback": "Bonne réponse : connaître l'algorithme ne suffit pas pour déchiffrer, il faut aussi la clé. Publier l'algorithme permet en outre à de nombreux experts d'y chercher des failles avant les attaquants.\n"
        },
        {
          "text": "La sécurité repose sur un algorithme publié de façon incomplète",
          "correct": false,
          "feedback": "Erreur : l'algorithme est publié en entier. Un chiffrement dont la sécurité dépend du secret de son fonctionnement est fragile, car ce secret finit toujours par être découvert.\n"
        }
      ],
      "explanation": "Un bon chiffrement reste sûr même quand l'adversaire connaît tout de son fonctionnement : seule la clé doit rester secrète. À l'inverse, le chiffrement de César n'est pas cassé parce que sa méthode est connue, mais parce qu'il n'offre que $26$ clés possibles."
    },
    {
      "id": "q07",
      "difficulty": 1,
      "skills": [
        "tls"
      ],
      "title": "Rôle du TLS",
      "partie": "usages",
      "statement": "À quoi sert le protocole **TLS** sur le web ?",
      "options": [
        {
          "text": "À accélérer le chargement des pages",
          "correct": false,
          "feedback": "Erreur : TLS introduit au contraire un léger\nsurcoût initial (établissement de la connexion).\n"
        },
        {
          "text": "À rendre le site web compatible avec tous les navigateurs",
          "correct": false,
          "feedback": "Erreur : TLS n'a pas de rôle de compatibilité. Son\nrôle est la sécurité.\n"
        },
        {
          "text": "À traduire les noms de domaines en adresses IP",
          "correct": false,
          "feedback": "Erreur : c'est le rôle du DNS, pas de TLS.\n"
        },
        {
          "text": "Sécuriser la communication entre navigateur et serveur",
          "correct": true,
          "feedback": "Bonne réponse : TLS (Transport Layer Security) chiffre les données échangées en HTTPS. Il succède à SSL.\n"
        }
      ],
      "explanation": "TLS combine chiffrement asymétrique, pour échanger une clé symétrique, et chiffrement symétrique, rapide, pour le gros des données."
    },
    {
      "id": "q08",
      "difficulty": 1,
      "skills": [
        "symetrique",
        "choix-chiffrement"
      ],
      "title": "Chiffrer son propre disque dur",
      "partie": "historiques",
      "statement": "Camille veut chiffrer le disque dur de son ordinateur portable pour que ses fichiers restent illisibles en cas de vol. Elle sera la seule à chiffrer et à déchiffrer ces données. Quel type de chiffrement convient le mieux ?",
      "options": [
        {
          "text": "Un chiffrement asymétrique, car il est plus rapide sur de gros volumes",
          "correct": false,
          "feedback": "Erreur : c'est l'inverse, l'asymétrique est bien plus lent que le symétrique. On le réserve à de petites données, comme une clé à transmettre.\n"
        },
        {
          "text": "Un chiffrement symétrique, avec une clé secrète qu'elle seule connaît",
          "correct": true,
          "feedback": "Bonne réponse : une seule personne chiffre et déchiffre, donc aucune clé n'est à transmettre et le problème de la distribution des clés ne se pose pas. Le symétrique est de plus bien plus rapide pour traiter de gros volumes.\n"
        },
        {
          "text": "Aucun chiffrement, un mot de passe de session suffit à protéger le disque",
          "correct": false,
          "feedback": "Erreur : le mot de passe de session protège l'accès au système, pas les données du disque. Un voleur qui branche le disque sur un autre ordinateur lit les fichiers sans rien saisir.\n"
        },
        {
          "text": "Un chiffrement asymétrique, pour publier sa clé privée en toute sécurité",
          "correct": false,
          "feedback": "Erreur : une clé privée ne se publie jamais, c'est la clé publique qui se diffuse. Et sans destinataire à qui écrire, l'asymétrique n'apporte rien ici.\n"
        }
      ],
      "explanation": "L'asymétrique résout un problème précis : communiquer avec quelqu'un sans secret partagé au préalable. Quand la même personne chiffre et déchiffre, ce problème n'existe pas, et le symétrique, plus rapide, s'impose."
    },
    {
      "id": "q09",
      "difficulty": 1,
      "skills": [
        "force-brute",
        "cle"
      ],
      "title": "Allonger une clé d'un bit",
      "partie": "historiques",
      "statement": "Une clé secrète de $40$ bits laisse $2^{40}$ clés possibles à un attaquant qui les essaie toutes. On passe à une clé de $41$ bits. Comment évolue le nombre de clés à essayer ?",
      "options": [
        {
          "text": "Il augmente de $1$",
          "correct": false,
          "feedback": "Erreur : ajouter un bit ne crée pas 1 clé(s) supplémentaire(s). Chaque clé de $40$ bits se prolonge de $2$ façons, ce qui donne $2$ clés de $41$ bits.\n"
        },
        {
          "text": "Il est multiplié par $41$",
          "correct": false,
          "feedback": "Erreur : on passe de $2^{40}$ à $2^{41}$, et non de $2^{40}$ à $41 \\times 2^{40}$. Le nombre de bits est un exposant, pas un facteur.\n"
        },
        {
          "text": "Il est élevé au carré",
          "correct": false,
          "feedback": "Erreur : élever $2^{40}$ au carré donnerait $2^{80}$, ce qui correspond à doubler la longueur de la clé, pas à lui ajouter un bit.\n"
        },
        {
          "text": "Il est multiplié par $2$",
          "correct": true,
          "feedback": "Bonne réponse : $2^{41} = 2 \\times 2^{40}$. Chaque bit ajouté double le nombre de clés, et donc la durée d'une attaque par force brute.\n"
        }
      ],
      "explanation": "Avec $n$ bits, il existe $2^n$ clés. Ajouter $10$ bits multiplie le nombre de clés par $2^{10} = 1024$ : allonger modestement une clé suffit à rendre la force brute impraticable.",
      "variants": [
        {
          "statement": "Une clé secrète de $40$ bits laisse $2^{40}$ clés possibles à un attaquant qui les essaie toutes. On passe à une clé de $41$ bits. Comment évolue le nombre de clés à essayer ?",
          "options": [
            {
              "text": "Il augmente de $1$",
              "correct": false,
              "feedback": "Erreur : ajouter un bit ne crée pas 1 clé(s) supplémentaire(s). Chaque clé de $40$ bits se prolonge de $2$ façons, ce qui donne $2$ clés de $41$ bits.\n"
            },
            {
              "text": "Il est multiplié par $41$",
              "correct": false,
              "feedback": "Erreur : on passe de $2^{40}$ à $2^{41}$, et non de $2^{40}$ à $41 \\times 2^{40}$. Le nombre de bits est un exposant, pas un facteur.\n"
            },
            {
              "text": "Il est élevé au carré",
              "correct": false,
              "feedback": "Erreur : élever $2^{40}$ au carré donnerait $2^{80}$, ce qui correspond à doubler la longueur de la clé, pas à lui ajouter un bit.\n"
            },
            {
              "text": "Il est multiplié par $2$",
              "correct": true,
              "feedback": "Bonne réponse : $2^{41} = 2 \\times 2^{40}$. Chaque bit ajouté double le nombre de clés, et donc la durée d'une attaque par force brute.\n"
            }
          ],
          "explanation": "Avec $n$ bits, il existe $2^n$ clés. Ajouter $10$ bits multiplie le nombre de clés par $2^{10} = 1024$ : allonger modestement une clé suffit à rendre la force brute impraticable."
        },
        {
          "statement": "Une clé secrète de $128$ bits laisse $2^{128}$ clés possibles à un attaquant qui les essaie toutes. On passe à une clé de $131$ bits. Comment évolue le nombre de clés à essayer ?",
          "options": [
            {
              "text": "Il augmente de $3$",
              "correct": false,
              "feedback": "Erreur : ajouter trois bits ne crée pas 3 clé(s) supplémentaire(s). Chaque clé de $128$ bits se prolonge de $8$ façons, ce qui donne $8$ clés de $131$ bits.\n"
            },
            {
              "text": "Il est multiplié par $131$",
              "correct": false,
              "feedback": "Erreur : on passe de $2^{128}$ à $2^{131}$, et non de $2^{128}$ à $131 \\times 2^{128}$. Le nombre de bits est un exposant, pas un facteur.\n"
            },
            {
              "text": "Il est élevé au carré",
              "correct": false,
              "feedback": "Erreur : élever $2^{128}$ au carré donnerait $2^{256}$, ce qui correspond à doubler la longueur de la clé, pas à lui ajouter trois bits.\n"
            },
            {
              "text": "Il est multiplié par $8$",
              "correct": true,
              "feedback": "Bonne réponse : $2^{131} = 8 \\times 2^{128}$. Chaque bit ajouté double le nombre de clés, et donc la durée d'une attaque par force brute.\n"
            }
          ],
          "explanation": "Avec $n$ bits, il existe $2^n$ clés. Ajouter $10$ bits multiplie le nombre de clés par $2^{10} = 1024$ : allonger modestement une clé suffit à rendre la force brute impraticable."
        },
        {
          "statement": "Une clé secrète de $56$ bits laisse $2^{56}$ clés possibles à un attaquant qui les essaie toutes. On passe à une clé de $58$ bits. Comment évolue le nombre de clés à essayer ?",
          "options": [
            {
              "text": "Il augmente de $2$",
              "correct": false,
              "feedback": "Erreur : ajouter deux bits ne crée pas 2 clé(s) supplémentaire(s). Chaque clé de $56$ bits se prolonge de $4$ façons, ce qui donne $4$ clés de $58$ bits.\n"
            },
            {
              "text": "Il est multiplié par $58$",
              "correct": false,
              "feedback": "Erreur : on passe de $2^{56}$ à $2^{58}$, et non de $2^{56}$ à $58 \\times 2^{56}$. Le nombre de bits est un exposant, pas un facteur.\n"
            },
            {
              "text": "Il est élevé au carré",
              "correct": false,
              "feedback": "Erreur : élever $2^{56}$ au carré donnerait $2^{112}$, ce qui correspond à doubler la longueur de la clé, pas à lui ajouter deux bits.\n"
            },
            {
              "text": "Il est multiplié par $4$",
              "correct": true,
              "feedback": "Bonne réponse : $2^{58} = 4 \\times 2^{56}$. Chaque bit ajouté double le nombre de clés, et donc la durée d'une attaque par force brute.\n"
            }
          ],
          "explanation": "Avec $n$ bits, il existe $2^n$ clés. Ajouter $10$ bits multiplie le nombre de clés par $2^{10} = 1024$ : allonger modestement une clé suffit à rendre la force brute impraticable."
        }
      ]
    },
    {
      "id": "q10",
      "difficulty": 1,
      "skills": [
        "asymetrique",
        "cle-privee"
      ],
      "title": "Clé privée perdue",
      "partie": "asymetrique",
      "statement": "Lina a publié sa clé publique, et plusieurs amis l'utilisent pour lui écrire. Son ordinateur tombe en panne et elle perd sa **clé privée**, dont elle n'avait aucune copie. Quelle est la conséquence ?",
      "options": [
        {
          "text": "Elle retrouve sa clé privée à partir de sa clé publique, qui est connue",
          "correct": false,
          "feedback": "Erreur : si l'on pouvait déduire la clé privée de la clé publique, n'importe qui pourrait le faire et le chiffrement asymétrique ne protégerait rien.\n"
        },
        {
          "text": "Ses amis peuvent lui renvoyer une copie de sa clé privée",
          "correct": false,
          "feedback": "Erreur : ses amis n'ont jamais eu la clé privée de Lina, qui ne quitte pas son propriétaire. Ils ne possèdent que sa clé publique.\n"
        },
        {
          "text": "Elle ne peut plus lire les messages chiffrés avec sa clé publique",
          "correct": true,
          "feedback": "Bonne réponse : seule la clé privée associée déchiffre ce que la clé publique a chiffré. Lina doit générer une nouvelle paire de clés et diffuser sa nouvelle clé publique.\n"
        },
        {
          "text": "Rien ne change, car sa clé publique suffit pour déchiffrer",
          "correct": false,
          "feedback": "Erreur : la clé publique sert à chiffrer, pas à déchiffrer. Si elle permettait de lire les messages, tous ceux qui la connaissent pourraient le faire.\n"
        }
      ],
      "explanation": "En asymétrique, la clé privée est le seul moyen de déchiffrer. La perdre rend illisibles tous les messages chiffrés pour son propriétaire, qui doit repartir d'une nouvelle paire de clés."
    },
    {
      "id": "q11",
      "difficulty": 2,
      "skills": [
        "hybride"
      ],
      "title": "Chiffrement hybride",
      "partie": "usages",
      "statement": "Pourquoi TLS combine-t-il un chiffrement asymétrique et\nun chiffrement symétrique (chiffrement « hybride ») ?",
      "options": [
        {
          "text": "L'asymétrique sert à échanger une clé symétrique rapide",
          "correct": true,
          "feedback": "Bonne réponse : on prend le meilleur des deux\nmondes. L'asymétrique résout l'échange initial\n(sans secret partagé préalable), le symétrique fait\nle gros du chiffrement avec efficacité.\n"
        },
        {
          "text": "Parce que le chiffrement symétrique serait nettement moins sûr",
          "correct": false,
          "feedback": "Erreur : les deux sont sûrs avec des clés\nadéquates. Le chiffrement symétrique est même plus\nrapide à clés équivalentes.\n"
        },
        {
          "text": "Pour respecter une réglementation européenne",
          "correct": false,
          "feedback": "Erreur : c'est un choix purement technique, pas\nréglementaire.\n"
        },
        {
          "text": "Pour la beauté technique",
          "correct": false,
          "feedback": "Erreur : c'est un choix d'ingénierie pour combiner\nles avantages des deux approches.\n"
        }
      ],
      "explanation": "AES sur $128$ bits offre un niveau de sécurité\néquivalent à RSA sur environ $3072$ bits, mais bien\nplus vite. C'est pour cela qu'on échange juste une clé\nAES via RSA, puis qu'on chiffre les données avec AES."
    },
    {
      "id": "q12",
      "difficulty": 2,
      "skills": [
        "cesar",
        "symetrique",
        "python"
      ],
      "title": "Déchiffrer avec la fonction de chiffrement",
      "partie": "historiques",
      "statement": "On dispose de la fonction suivante, qui chiffre par décalage un mot écrit en majuscules :\n\n```python\ndef chiffrer(mot, k):\n    res = \"\"\n    for c in mot:\n        res = res + chr((ord(c) - 65 + k) % 26 + 65)\n    return res\n```\n\nL'appel `chiffrer(\"NSI\", 3)` renvoie `\"QVL\"`. Quel appel redonne `\"NSI\"` ?",
      "options": [
        {
          "text": "`chiffrer(\"QVL\", 3)`",
          "correct": false,
          "feedback": "Erreur : cet appel décale une seconde fois de $3$ et renvoie `\"TYO\"`. Pour annuler le chiffrement, il faut un décalage qui compense le premier.\n"
        },
        {
          "text": "`chiffrer(\"QVL\", 23)`",
          "correct": true,
          "feedback": "Bonne réponse : décaler de $23$ revient à reculer de $3$, car $3 + 23 = 26$ et le calcul se fait modulo $26$. L'appel renvoie bien `\"NSI\"` : la même fonction chiffre et déchiffre, avec deux clés liées.\n"
        },
        {
          "text": "`chiffrer(\"NSI\", -3)`",
          "correct": false,
          "feedback": "Erreur : cet appel recule bien de $3$, mais il part du mot clair et renvoie `\"KPF\"`. C'est le message chiffré `\"QVL\"` qu'il faut déchiffrer.\n"
        },
        {
          "text": "`chiffrer(\"QVL\", 26)`",
          "correct": false,
          "feedback": "Erreur : un décalage de $26$ fait un tour complet de l'alphabet et laisse le texte inchangé : l'appel renvoie `\"QVL\"`.\n"
        }
      ],
      "explanation": "Le chiffrement de César est symétrique : la clé $k$ sert à chiffrer, et le décalage $26 - k$, qui s'en déduit immédiatement, sert à déchiffrer. Grâce au modulo $26$, un décalage négatif comme `-3` fonctionne aussi, à condition de l'appliquer au message chiffré."
    },
    {
      "id": "q13",
      "difficulty": 2,
      "skills": [
        "affine",
        "symetrique",
        "calcul"
      ],
      "title": "Chiffrement affine d'une lettre",
      "partie": "historiques",
      "statement": "Dans le chiffrement affine de clé $(a, b) = (3, 5)$, on numérote les lettres de $0$ pour A à $25$ pour Z. La lettre de rang $x$ est remplacée par la lettre de rang $(3x + 5)$ modulo $26$. Par quelle lettre la lettre C est-elle chiffrée ?",
      "options": [
        {
          "text": "O",
          "correct": false,
          "feedback": "Erreur : tu numérotes à partir de $1$ et donnes à C le rang $3$, d'où $3 \\times 3 + 5 = 14$, qui mène à O. Avec la numérotation de l'énoncé, C a le rang $2$.\n"
        },
        {
          "text": "V",
          "correct": false,
          "feedback": "Erreur : tu ajoutes $5$ avant de multiplier, en calculant $3 \\times (2 + 5) = 21$, qui mène à V. La formule multiplie d'abord le rang par $3$, puis ajoute $5$.\n"
        },
        {
          "text": "G",
          "correct": false,
          "feedback": "Erreur : tu oublies d'ajouter $b = 5$ et t'arrêtes à $3 \\times 2 = 6$, qui mène à G. La clé comporte deux nombres, et les deux interviennent.\n"
        },
        {
          "text": "L",
          "correct": true,
          "feedback": "Bonne réponse : C a le rang $2$, et $3 \\times 2 + 5 = 11$, rang de la lettre L. Le résultat est inférieur à $26$, le modulo ne change donc rien ici.\n"
        }
      ],
      "explanation": "Le chiffrement affine généralise celui de César, qui correspond au cas $a = 1$. C'est un chiffrement symétrique : la clé $(a, b)$, partagée par les deux correspondants, sert aussi à déchiffrer."
    },
    {
      "id": "q14",
      "difficulty": 2,
      "skills": [
        "cesar",
        "composition"
      ],
      "title": "Deux César successifs",
      "partie": "historiques",
      "statement": "Pour renforcer la sécurité, Hugo chiffre un message par César avec un décalage de $3$, puis chiffre le résultat par César avec un décalage de $5$. Que penser de cette précaution ?",
      "options": [
        {
          "text": "Elle multiplie par $26$ le nombre de clés possibles",
          "correct": false,
          "feedback": "Erreur : les deux décalages se combinent en un seul, compris entre $0$ et $25$. L'attaquant ne cherche pas le couple $(3, 5)$, seulement le décalage total, parmi $26$ possibilités.\n"
        },
        {
          "text": "Inutile : cela revient à un César de décalage $8$",
          "correct": true,
          "feedback": "Bonne réponse : décaler de $3$ puis de $5$ revient à décaler de 8 en une fois. Par exemple, `NSI` devient `VAQ` dans les deux cas. Un attaquant n'a toujours que $26$ décalages à essayer.\n"
        },
        {
          "text": "Elle rend l'analyse de fréquences impossible",
          "correct": false,
          "feedback": "Erreur : chaque lettre est toujours remplacée par la même lettre, décalée de $8$. Les fréquences du français se retrouvent donc intactes dans le chiffré.\n"
        },
        {
          "text": "Elle empêche de déchiffrer, même avec les deux clés",
          "correct": false,
          "feedback": "Erreur : Hugo et son destinataire déchiffrent en reculant de $5$ puis de $3$, ou directement de $8$. Le message n'est pas perdu.\n"
        }
      ],
      "explanation": "Enchaîner deux chiffrements n'ajoute de la sécurité que si le résultat n'est pas lui-même un chiffrement du même type avec une autre clé. Deux décalages successifs forment un seul décalage : la protection reste celle, très faible, d'un César.",
      "variants": [
        {
          "statement": "Pour renforcer la sécurité, Hugo chiffre un message par César avec un décalage de $3$, puis chiffre le résultat par César avec un décalage de $5$. Que penser de cette précaution ?",
          "options": [
            {
              "text": "Elle multiplie par $26$ le nombre de clés possibles",
              "correct": false,
              "feedback": "Erreur : les deux décalages se combinent en un seul, compris entre $0$ et $25$. L'attaquant ne cherche pas le couple $(3, 5)$, seulement le décalage total, parmi $26$ possibilités.\n"
            },
            {
              "text": "Inutile : cela revient à un César de décalage $8$",
              "correct": true,
              "feedback": "Bonne réponse : décaler de $3$ puis de $5$ revient à décaler de 8 en une fois. Par exemple, `NSI` devient `VAQ` dans les deux cas. Un attaquant n'a toujours que $26$ décalages à essayer.\n"
            },
            {
              "text": "Elle rend l'analyse de fréquences impossible",
              "correct": false,
              "feedback": "Erreur : chaque lettre est toujours remplacée par la même lettre, décalée de $8$. Les fréquences du français se retrouvent donc intactes dans le chiffré.\n"
            },
            {
              "text": "Elle empêche de déchiffrer, même avec les deux clés",
              "correct": false,
              "feedback": "Erreur : Hugo et son destinataire déchiffrent en reculant de $5$ puis de $3$, ou directement de $8$. Le message n'est pas perdu.\n"
            }
          ],
          "explanation": "Enchaîner deux chiffrements n'ajoute de la sécurité que si le résultat n'est pas lui-même un chiffrement du même type avec une autre clé. Deux décalages successifs forment un seul décalage : la protection reste celle, très faible, d'un César."
        },
        {
          "statement": "Pour renforcer la sécurité, Hugo chiffre un message par César avec un décalage de $7$, puis chiffre le résultat par César avec un décalage de $9$. Que penser de cette précaution ?",
          "options": [
            {
              "text": "Elle multiplie par $26$ le nombre de clés possibles",
              "correct": false,
              "feedback": "Erreur : les deux décalages se combinent en un seul, compris entre $0$ et $25$. L'attaquant ne cherche pas le couple $(7, 9)$, seulement le décalage total, parmi $26$ possibilités.\n"
            },
            {
              "text": "Inutile : cela revient à un César de décalage $16$",
              "correct": true,
              "feedback": "Bonne réponse : décaler de $7$ puis de $9$ revient à décaler de 16 en une fois. Par exemple, `NSI` devient `DIY` dans les deux cas. Un attaquant n'a toujours que $26$ décalages à essayer.\n"
            },
            {
              "text": "Elle rend l'analyse de fréquences impossible",
              "correct": false,
              "feedback": "Erreur : chaque lettre est toujours remplacée par la même lettre, décalée de $16$. Les fréquences du français se retrouvent donc intactes dans le chiffré.\n"
            },
            {
              "text": "Elle empêche de déchiffrer, même avec les deux clés",
              "correct": false,
              "feedback": "Erreur : Hugo et son destinataire déchiffrent en reculant de $9$ puis de $7$, ou directement de $16$. Le message n'est pas perdu.\n"
            }
          ],
          "explanation": "Enchaîner deux chiffrements n'ajoute de la sécurité que si le résultat n'est pas lui-même un chiffrement du même type avec une autre clé. Deux décalages successifs forment un seul décalage : la protection reste celle, très faible, d'un César."
        },
        {
          "statement": "Pour renforcer la sécurité, Hugo chiffre un message par César avec un décalage de $20$, puis chiffre le résultat par César avec un décalage de $10$. Que penser de cette précaution ?",
          "options": [
            {
              "text": "Elle multiplie par $26$ le nombre de clés possibles",
              "correct": false,
              "feedback": "Erreur : les deux décalages se combinent en un seul, compris entre $0$ et $25$. L'attaquant ne cherche pas le couple $(20, 10)$, seulement le décalage total, parmi $26$ possibilités.\n"
            },
            {
              "text": "Inutile : cela revient à un César de décalage $4$",
              "correct": true,
              "feedback": "Bonne réponse : décaler de $20$ puis de $10$ revient à décaler de 30, soit 4 après un tour complet de l’alphabet en une fois. Par exemple, `NSI` devient `RWM` dans les deux cas. Un attaquant n'a toujours que $26$ décalages à essayer.\n"
            },
            {
              "text": "Elle rend l'analyse de fréquences impossible",
              "correct": false,
              "feedback": "Erreur : chaque lettre est toujours remplacée par la même lettre, décalée de $4$. Les fréquences du français se retrouvent donc intactes dans le chiffré.\n"
            },
            {
              "text": "Elle empêche de déchiffrer, même avec les deux clés",
              "correct": false,
              "feedback": "Erreur : Hugo et son destinataire déchiffrent en reculant de $10$ puis de $20$, ou directement de $4$. Le message n'est pas perdu.\n"
            }
          ],
          "explanation": "Enchaîner deux chiffrements n'ajoute de la sécurité que si le résultat n'est pas lui-même un chiffrement du même type avec une autre clé. Deux décalages successifs forment un seul décalage : la protection reste celle, très faible, d'un César."
        }
      ]
    },
    {
      "id": "q15",
      "difficulty": 2,
      "skills": [
        "vigenere",
        "denombrement"
      ],
      "title": "Nombre de clés d'un Vigenère",
      "partie": "historiques",
      "statement": "Le chiffrement de César n'offre que $26$ clés. Pour un chiffrement de Vigenère dont la clé est un mot de **trois** lettres majuscules, combien de clés différentes un attaquant doit-il envisager ?",
      "options": [
        {
          "text": "$78$",
          "correct": false,
          "feedback": "Erreur : tu additionnes les possibilités des trois lettres, $26 + 26 + 26 = 78$. Les choix se combinent : pour chaque première lettre, il y a $26$ deuxièmes lettres, et ainsi de suite, il faut donc multiplier.\n"
        },
        {
          "text": "$676$",
          "correct": false,
          "feedback": "Erreur : $676 = 26^{2}$ correspond à une clé de 2 lettre(s). Avec trois lettres, il faut multiplier encore par $26$.\n"
        },
        {
          "text": "$15600$",
          "correct": false,
          "feedback": "Erreur : $26 \\times 25 \\times 24 = 15600$ suppose trois lettres toutes différentes. Rien n'interdit une clé qui répète une lettre, comme `AAB` ou `ZZZ`.\n"
        },
        {
          "text": "$17576$",
          "correct": true,
          "feedback": "Bonne réponse : chacune des trois lettres peut prendre $26$ valeurs, indépendamment des autres, soit $26 \\times 26 \\times 26 = 17576$ clés.\n"
        }
      ],
      "explanation": "Chaque lettre de clé ajoutée multiplie le nombre de clés par $26$ : une clé de $n$ lettres en offre $26^n$. Cet espace grandit vite, mais reste modeste pour un ordinateur, qui essaie $17576$ clés en une fraction de seconde.",
      "variants": [
        {
          "statement": "Le chiffrement de César n'offre que $26$ clés. Pour un chiffrement de Vigenère dont la clé est un mot de **trois** lettres majuscules, combien de clés différentes un attaquant doit-il envisager ?",
          "options": [
            {
              "text": "$78$",
              "correct": false,
              "feedback": "Erreur : tu additionnes les possibilités des trois lettres, $26 + 26 + 26 = 78$. Les choix se combinent : pour chaque première lettre, il y a $26$ deuxièmes lettres, et ainsi de suite, il faut donc multiplier.\n"
            },
            {
              "text": "$676$",
              "correct": false,
              "feedback": "Erreur : $676 = 26^{2}$ correspond à une clé de 2 lettre(s). Avec trois lettres, il faut multiplier encore par $26$.\n"
            },
            {
              "text": "$15600$",
              "correct": false,
              "feedback": "Erreur : $26 \\times 25 \\times 24 = 15600$ suppose trois lettres toutes différentes. Rien n'interdit une clé qui répète une lettre, comme `AAB` ou `ZZZ`.\n"
            },
            {
              "text": "$17576$",
              "correct": true,
              "feedback": "Bonne réponse : chacune des trois lettres peut prendre $26$ valeurs, indépendamment des autres, soit $26 \\times 26 \\times 26 = 17576$ clés.\n"
            }
          ],
          "explanation": "Chaque lettre de clé ajoutée multiplie le nombre de clés par $26$ : une clé de $n$ lettres en offre $26^n$. Cet espace grandit vite, mais reste modeste pour un ordinateur, qui essaie $17576$ clés en une fraction de seconde."
        },
        {
          "statement": "Le chiffrement de César n'offre que $26$ clés. Pour un chiffrement de Vigenère dont la clé est un mot de **deux** lettres majuscules, combien de clés différentes un attaquant doit-il envisager ?",
          "options": [
            {
              "text": "$52$",
              "correct": false,
              "feedback": "Erreur : tu additionnes les possibilités des deux lettres, $26 + 26 = 52$. Les choix se combinent : pour chaque première lettre, il y a $26$ deuxièmes lettres, et ainsi de suite, il faut donc multiplier.\n"
            },
            {
              "text": "$26$",
              "correct": false,
              "feedback": "Erreur : $26 = 26^{1}$ correspond à une clé de 1 lettre(s). Avec deux lettres, il faut multiplier encore par $26$.\n"
            },
            {
              "text": "$650$",
              "correct": false,
              "feedback": "Erreur : $26 \\times 25 = 650$ suppose deux lettres toutes différentes. Rien n'interdit une clé qui répète une lettre, comme `AAB` ou `ZZZ`.\n"
            },
            {
              "text": "$676$",
              "correct": true,
              "feedback": "Bonne réponse : chacune des deux lettres peut prendre $26$ valeurs, indépendamment des autres, soit $26 \\times 26 = 676$ clés.\n"
            }
          ],
          "explanation": "Chaque lettre de clé ajoutée multiplie le nombre de clés par $26$ : une clé de $n$ lettres en offre $26^n$. Cet espace grandit vite, mais reste modeste pour un ordinateur, qui essaie $676$ clés en une fraction de seconde."
        },
        {
          "statement": "Le chiffrement de César n'offre que $26$ clés. Pour un chiffrement de Vigenère dont la clé est un mot de **quatre** lettres majuscules, combien de clés différentes un attaquant doit-il envisager ?",
          "options": [
            {
              "text": "$104$",
              "correct": false,
              "feedback": "Erreur : tu additionnes les possibilités des quatre lettres, $26 + 26 + 26 + 26 = 104$. Les choix se combinent : pour chaque première lettre, il y a $26$ deuxièmes lettres, et ainsi de suite, il faut donc multiplier.\n"
            },
            {
              "text": "$17576$",
              "correct": false,
              "feedback": "Erreur : $17576 = 26^{3}$ correspond à une clé de 3 lettre(s). Avec quatre lettres, il faut multiplier encore par $26$.\n"
            },
            {
              "text": "$358800$",
              "correct": false,
              "feedback": "Erreur : $26 \\times 25 \\times 24 \\times 23 = 358800$ suppose quatre lettres toutes différentes. Rien n'interdit une clé qui répète une lettre, comme `AAB` ou `ZZZ`.\n"
            },
            {
              "text": "$456976$",
              "correct": true,
              "feedback": "Bonne réponse : chacune des quatre lettres peut prendre $26$ valeurs, indépendamment des autres, soit $26 \\times 26 \\times 26 \\times 26 = 456976$ clés.\n"
            }
          ],
          "explanation": "Chaque lettre de clé ajoutée multiplie le nombre de clés par $26$ : une clé de $n$ lettres en offre $26^n$. Cet espace grandit vite, mais reste modeste pour un ordinateur, qui essaie $456976$ clés en une fraction de seconde."
        }
      ]
    },
    {
      "id": "q16",
      "difficulty": 2,
      "skills": [
        "chiffrement-bout-en-bout"
      ],
      "title": "Chiffrement de bout en bout",
      "partie": "usages",
      "statement": "Que signifie le **chiffrement de bout en bout** dans une\nmessagerie comme Signal ou WhatsApp ?",
      "options": [
        {
          "text": "Le message est chiffré jusqu'au serveur, qui le déchiffre puis le rechiffre vers le destinataire",
          "correct": false,
          "feedback": "Erreur : ce n'est pas du chiffrement « de bout en\nbout ». Avec ce modèle, le serveur peut lire les\nmessages.\n"
        },
        {
          "text": "Tous les messages sont automatiquement effacés",
          "correct": false,
          "feedback": "Erreur : aucun rapport avec l'éphémérité.\n"
        },
        {
          "text": "Chiffré par l'expéditeur, déchiffrable seulement par le destinataire",
          "correct": true,
          "feedback": "Bonne réponse : c'est précisément ce qui distingue\nle chiffrement E$2$E. Même un serveur compromis ne\npeut pas révéler le contenu des messages, faute de\nclé.\n"
        },
        {
          "text": "Le message est chiffré une fois sur l'ordinateur et une fois sur le téléphone",
          "correct": false,
          "feedback": "Erreur : ce n'est pas la définition du E$2$E. Le\nchiffrement reste basé sur des clés des **utilisateurs**,\npas sur la diversité des appareils.\n"
        }
      ],
      "explanation": "Le chiffrement E$2$E est devenu la norme dans les\nmessageries modernes. Il a un coût : si on perd ses\nclés, on perd l'accès à ses anciens messages. Mais il\noffre une sécurité bien supérieure aux serveurs\n« curieux »."
    },
    {
      "id": "q17",
      "difficulty": 2,
      "skills": [
        "echange-cle",
        "principe"
      ],
      "title": "Établir une clé sur un canal public",
      "partie": "usages",
      "statement": "Quel principe permet à deux personnes qui n'ont\njamais communiqué auparavant d'établir une **clé secrète commune** sur un canal pourtant **public** ?",
      "options": [
        {
          "text": "Combiner sa clé privée avec la clé publique de l'autre",
          "correct": true,
          "feedback": "Bonne réponse : c'est l'apport fondamental de\nla cryptographie asymétrique. Un attaquant\nqui écoute le canal voit seulement les clés\npubliques, ce qui ne lui permet pas de\nretrouver le secret partagé.\n"
        },
        {
          "text": "Chiffrer la clé avec elle-même",
          "correct": false,
          "feedback": "Erreur : on aurait alors besoin de la clé pour\ndéchiffrer la clé. Ce n'est pas réalisable.\n"
        },
        {
          "text": "Faire entièrement confiance au fournisseur d'accès Internet",
          "correct": false,
          "feedback": "Erreur : la sécurité ne doit pas reposer sur\nun acteur particulier du réseau.\n"
        },
        {
          "text": "Envoyer la clé en clair, mais très rapidement",
          "correct": false,
          "feedback": "Erreur : la vitesse d'envoi ne change rien à\nl'interception possible.\n"
        }
      ],
      "explanation": "L'échange asymétrique d'une clé symétrique est au\ncœur du protocole HTTPS. Il combine la robustesse\nde l'asymétrique (pas besoin de canal sûr\npréalable) avec la rapidité du symétrique pour le\nreste de la communication."
    },
    {
      "id": "q18",
      "difficulty": 2,
      "skills": [
        "https"
      ],
      "title": "HTTPS et confidentialité",
      "partie": "usages",
      "statement": "Quand vous visitez un site en HTTPS, qu'est-ce qui reste\nvisible pour votre fournisseur d'accès Internet (FAI) ?",
      "options": [
        {
          "text": "Rien du tout",
          "correct": false,
          "feedback": "Erreur : HTTPS chiffre le contenu mais laisse\nvisible certaines métadonnées.\n"
        },
        {
          "text": "Tout le contenu complet de la page que vous consultez",
          "correct": false,
          "feedback": "Erreur : non, le contenu HTTP est chiffré par TLS.\nLe FAI ne voit pas les requêtes ni les réponses.\n"
        },
        {
          "text": "Le nom de domaine, l'IP et le volume échangé",
          "correct": true,
          "feedback": "Bonne réponse : même en HTTPS, le FAI peut voir\n**quel** site vous visitez (mais pas **quoi** vous y\nfaites précisément), à quelle heure, et combien de\ndonnées vous échangez.\n"
        },
        {
          "text": "Vos identifiants de connexion uniquement",
          "correct": false,
          "feedback": "Erreur : les identifiants sont chiffrés par TLS, le\nFAI ne les voit pas.\n"
        }
      ],
      "explanation": "Même en HTTPS, l'adresse IP du serveur contacté reste visible, puisque les routeurs en ont besoin pour acheminer les paquets. Seul le contenu des échanges est chiffré."
    },
    {
      "id": "q19",
      "difficulty": 2,
      "skills": [
        "csar"
      ],
      "title": "Chiffrement de César",
      "partie": "historiques",
      "statement": "Le **chiffrement de César** (décalage de chaque lettre\nd'un certain nombre de positions dans l'alphabet) est-il\nsûr ?",
      "options": [
        {
          "text": "Non, seulement $26$ clés possibles, vite cassable",
          "correct": true,
          "feedback": "Bonne réponse : le chiffrement de César est un\nexemple historique pédagogique mais pas un chiffrement\nsérieux. L'analyse des fréquences ou la simple\nénumération suffit à le casser.\n"
        },
        {
          "text": "Cela dépend de la longueur du message",
          "correct": false,
          "feedback": "Erreur : la sécurité du chiffrement de César ne\ndépend pas de la longueur du message.\n"
        },
        {
          "text": "Oui, il est très sûr s'il utilise un grand décalage",
          "correct": false,
          "feedback": "Erreur : le décalage est borné par la taille de\nl'alphabet ($26$ pour le français). Il y a donc\nseulement $26$ clés possibles.\n"
        },
        {
          "text": "Oui, à condition de changer la clé chaque jour",
          "correct": false,
          "feedback": "Erreur : même avec changement quotidien, chaque jour\nla clé peut être trouvée en quelques secondes.\n"
        }
      ],
      "explanation": "Le César est facile à casser, mais il a une utilité\npédagogique : il introduit les notions de clé,\nchiffrement, déchiffrement, cryptanalyse. La famille\ndes chiffrements **par substitution** est généralement\nfaible."
    },
    {
      "id": "q20",
      "difficulty": 2,
      "skills": [
        "vernam"
      ],
      "title": "Chiffrement de Vernam (masque jetable)",
      "partie": "historiques",
      "statement": "Le chiffrement de **Vernam** (ou masque jetable) combine chaque bit du message avec un bit de la clé par un ou exclusif (XOR). À quelles conditions sur la clé ce chiffrement est-il impossible à casser ?",
      "options": [
        {
          "text": "Plus courte que le message, pour être facile à transmettre",
          "correct": false,
          "feedback": "Erreur : une clé plus courte devrait être répétée, et ces répétitions laissent des régularités exploitables par un attaquant, comme dans le chiffrement de Vigenère.\n"
        },
        {
          "text": "Aléatoire, aussi longue que le message et utilisée une seule fois",
          "correct": true,
          "feedback": "Bonne réponse : avec une telle clé, tous les messages clairs de même longueur sont également possibles pour un chiffré donné, qui n'apprend donc rien à l'attaquant. Ce chiffrement a été utilisé pour le téléphone rouge entre Washington et Moscou.\n"
        },
        {
          "text": "Réutilisée pour chaque message, afin d'être bien mémorisée",
          "correct": false,
          "feedback": "Erreur : réutiliser le masque est la faute fatale. Le XOR de deux messages chiffrés avec la même clé fait disparaître celle-ci et donne le XOR des deux messages clairs.\n"
        },
        {
          "text": "Choisie parmi les mots du dictionnaire, connus des deux correspondants",
          "correct": false,
          "feedback": "Erreur : un mot du dictionnaire n'est pas aléatoire, et un attaquant peut essayer très rapidement tous les mots d'un dictionnaire.\n"
        }
      ],
      "explanation": "Limitation pratique : la clé doit être aussi longue que\nle message et utilisée **une seule fois** (« one-time\npad »). Échanger des clés aussi longues que les\nmessages est rarement faisable, sauf pour des\ncommunications très sensibles à très faible volume."
    },
    {
      "id": "q22",
      "difficulty": 2,
      "skills": [
        "cle-publique",
        "usage"
      ],
      "title": "Que faire avec une clé publique ?",
      "partie": "asymetrique",
      "statement": "Alice veut envoyer un message confidentiel à Bob.\nBob a publié sa **clé publique**. Que doit faire\nAlice ?",
      "options": [
        {
          "text": "Envoyer le message en clair, puisque Bob a une clé publique",
          "correct": false,
          "feedback": "Erreur : la clé publique seule ne sécurise\nrien. Encore faut-il que le message soit\nchiffré avec.\n"
        },
        {
          "text": "Envoyer la clé publique de Bob avec le message",
          "correct": false,
          "feedback": "Erreur : la clé publique de Bob est… déjà\npublique. Cela n'apporte aucune sécurité.\n"
        },
        {
          "text": "Chiffrer le message avec la clé publique de Bob",
          "correct": true,
          "feedback": "Bonne réponse : c'est l'usage de base du\nchiffrement asymétrique pour la\nconfidentialité. La clé publique sert à\nchiffrer, la clé privée à déchiffrer.\n"
        },
        {
          "text": "Chiffrer son message avec sa propre clé privée",
          "correct": false,
          "feedback": "Erreur : ce procédé existe mais correspond à\nla **signature** (authentification de\nl'émetteur), pas à la confidentialité.\nN'importe qui pourrait déchiffrer avec la\nclé publique d'Alice.\n"
        }
      ],
      "explanation": "Mémo : pour la **confidentialité** vers Bob, on\nchiffre avec **la clé publique de Bob**. Pour\n**prouver** qu'on est bien Alice, Alice signe\navec **sa propre clé privée**. Les deux usages\nsont complémentaires."
    },
    {
      "id": "q23",
      "difficulty": 3,
      "skills": [
        "scenario",
        "fuite-cle"
      ],
      "title": "Que se passe-t-il si une clé fuite ?",
      "partie": "usages",
      "statement": "Dans un système de chiffrement **asymétrique**, si\nla **clé privée** de Bob est volée par un\nattaquant, quelle conséquence est correcte ?",
      "options": [
        {
          "text": "L'attaquant peut déchiffrer les messages destinés à Bob",
          "correct": true,
          "feedback": "Bonne réponse : la clé privée est ce qui\npermet de déchiffrer ; sa fuite compromet\nimmédiatement la confidentialité des messages\ndestinés à Bob. C'est pourquoi la clé privée\ndoit être protégée avec le plus grand soin.\n"
        },
        {
          "text": "Il faut juste générer une nouvelle clé symétrique",
          "correct": false,
          "feedback": "Erreur : la clé symétrique n'a aucun lien avec\nla clé privée asymétrique compromise. Il faut\ngénérer une nouvelle paire (publique, privée)\net faire republier la clé publique.\n"
        },
        {
          "text": "L'attaquant peut chiffrer mais pas déchiffrer",
          "correct": false,
          "feedback": "Erreur : c'est l'inverse, chiffrer se fait\navec la clé **publique** (que tout le monde\na) ; déchiffrer requiert la clé privée que\nl'attaquant vient justement de voler.\n"
        },
        {
          "text": "Aucune conséquence, puisque la clé publique reste secrète",
          "correct": false,
          "feedback": "Erreur : la clé publique n'est **pas**\nsecrète, c'est précisément ce qui la\ndistingue de la clé privée. Et la fuite de\nla clé privée est très grave.\n"
        }
      ],
      "explanation": "La sécurité d'un système asymétrique repose\nentièrement sur la confidentialité de la clé\nprivée. En cas de compromission, on doit\n**révoquer** la clé compromise et en générer une\nnouvelle. C'est l'un des rôles des autorités de\ncertification."
    },
    {
      "id": "q24",
      "difficulty": 3,
      "skills": [
        "https",
        "chiffrement-hybride",
        "analyse"
      ],
      "title": "Les clés du navigateur après l'échange HTTPS",
      "partie": "usages",
      "statement": "Une connexion HTTPS vient de s'établir entre un navigateur et un serveur : le navigateur a reçu la clé publique du serveur, a choisi une clé de session et l'a transmise chiffrée, puis les données circulent chiffrées de manière symétrique. Quelles clés le **navigateur** connaît-il alors ?",
      "options": [
        {
          "text": "La clé privée du serveur et la clé de session",
          "correct": false,
          "feedback": "Erreur : la clé privée ne quitte jamais le serveur. C'est avec elle que le serveur, et lui seul, déchiffre la clé de session reçue.\n"
        },
        {
          "text": "La clé publique du serveur et la clé de session",
          "correct": true,
          "feedback": "Bonne réponse : le navigateur a reçu la clé publique du serveur, puis a choisi la clé de session qu'il a chiffrée avec elle. Il chiffre et déchiffre ensuite les échanges avec cette clé de session.\n"
        },
        {
          "text": "Uniquement la clé publique du serveur",
          "correct": false,
          "feedback": "Erreur : le navigateur connaît aussi la clé de session, puisque c'est lui qui l'a choisie. Sans elle, il ne pourrait pas déchiffrer les pages envoyées par le serveur.\n"
        },
        {
          "text": "Les deux clés du serveur, mais pas la clé de session",
          "correct": false,
          "feedback": "Erreur : le navigateur ne reçoit jamais la clé privée du serveur. En revanche, il connaît la clé de session, indispensable au chiffrement symétrique des échanges.\n"
        }
      ],
      "explanation": "À la fin de l'échange, le serveur possède sa paire de clés et la clé de session ; le navigateur, la clé publique du serveur et la clé de session ; un espion, uniquement la clé publique et des données chiffrées. La clé de session est le seul secret partagé, et elle n'a jamais circulé en clair."
    },
    {
      "id": "q25",
      "difficulty": 3,
      "skills": [
        "synthese"
      ],
      "title": "Sécurité et facteur humain",
      "partie": "usages",
      "statement": "Quel est généralement le maillon le plus faible dans la\nsécurité d'un système ?",
      "options": [
        {
          "text": "La taille de la clé utilisée par l'algorithme de chiffrement",
          "correct": false,
          "feedback": "Erreur : avec des tailles de clés modernes ($2048$\nbits pour RSA, $256$ pour AES), aucune attaque par\nforce brute n'est faisable.\n"
        },
        {
          "text": "Le facteur humain, c'est-à-dire les erreurs des utilisateurs",
          "correct": true,
          "feedback": "Bonne réponse : les meilleurs systèmes\ncryptographiques sont contournés par des erreurs\nhumaines : mots de passe faibles ou réutilisés, clic\nsur un mail de hameçonnage, mots de passe collés sur\nun post-it, mauvaise configuration de serveur. La\nformation des utilisateurs est aussi importante que\nla technique.\n"
        },
        {
          "text": "Le langage de programmation dans lequel le système a été écrit",
          "correct": false,
          "feedback": "Erreur : le langage n'est pas le problème principal,\nmême si certains langages aident à éviter des\nvulnérabilités courantes (gestion de mémoire,\ntypes).\n"
        },
        {
          "text": "L'algorithme de chiffrement choisi pour protéger les données",
          "correct": false,
          "feedback": "Erreur : les algorithmes modernes (AES, RSA, etc.)\nsont très solides quand correctement utilisés. Les\nattaques réussies passent presque toujours par\nailleurs.\n"
        }
      ],
      "explanation": "La sécurité n'est jamais acquise une fois pour toutes : l'aspect humain (formation, hygiène numérique, processus organisationnels) est aussi crucial que les algorithmes."
    },
    {
      "id": "q26",
      "difficulty": 3,
      "skills": [
        "diffie-hellman",
        "cle-partagee"
      ],
      "title": "Échange de clés Diffie-Hellman",
      "partie": "usages",
      "statement": "Le protocole de **Diffie-Hellman** permet à deux personnes d'établir une clé secrète commune en n'échangeant que des valeurs publiques. On l'illustre avec les petits nombres publics $p = 23$ et $g = 5$ :\n- Alice choisit en secret $a = 3$ et envoie $A$, reste de la division de $g^a$ par $p$, soit $A = 10$ ;\n- Bob choisit en secret $b = 2$ et envoie $B$, reste de la division de $g^b$ par $p$, soit $B = 2$ ;\n- Alice calcule le reste de la division de $B^a$ par $p$, Bob celui de $A^b$ par $p$.\nQuelle clé commune obtiennent-ils ?",
      "options": [
        {
          "text": "$10$",
          "correct": false,
          "feedback": "Erreur : $10$ est la valeur publique envoyée par Alice, que tout espion voit passer. La clé commune doit au contraire rester inconnue de l'espion.\n"
        },
        {
          "text": "$8$",
          "correct": true,
          "feedback": "Bonne réponse : Alice calcule $2^{3} = 8$, dont le reste dans la division par $23$ vaut $8 - 0 \\times 23 = 8$ ; Bob calcule $10^{2} = 100$, dont le reste vaut $100 - 4 \\times 23 = 8$. Les deux obtiennent la même valeur sans l'avoir jamais transmise.\n"
        },
        {
          "text": "$20$",
          "correct": false,
          "feedback": "Erreur : $20$ est le produit $10 \\times 2$ des deux valeurs publiques, calcul que n'importe quel espion peut faire. La clé s'obtient en élevant la valeur reçue à la puissance de son propre secret.\n"
        },
        {
          "text": "$100$",
          "correct": false,
          "feedback": "Erreur : $100$ est bien $10^{2}$, mais il manque la réduction modulo $23$. Le reste de la division de $100$ par $23$ vaut $8$.\n"
        }
      ],
      "explanation": "Chacun combine la valeur publique reçue avec son propre secret, et les deux calculs mènent au même résultat. L'espion connaît $p$, $g$, $A$ et $B$, mais ni $a$ ni $b$ : avec de très grands nombres, il ne sait pas retrouver la clé commune en un temps raisonnable.",
      "variants": [
        {
          "statement": "Le protocole de **Diffie-Hellman** permet à deux personnes d'établir une clé secrète commune en n'échangeant que des valeurs publiques. On l'illustre avec les petits nombres publics $p = 23$ et $g = 5$ :\n- Alice choisit en secret $a = 3$ et envoie $A$, reste de la division de $g^a$ par $p$, soit $A = 10$ ;\n- Bob choisit en secret $b = 2$ et envoie $B$, reste de la division de $g^b$ par $p$, soit $B = 2$ ;\n- Alice calcule le reste de la division de $B^a$ par $p$, Bob celui de $A^b$ par $p$.\nQuelle clé commune obtiennent-ils ?",
          "options": [
            {
              "text": "$10$",
              "correct": false,
              "feedback": "Erreur : $10$ est la valeur publique envoyée par Alice, que tout espion voit passer. La clé commune doit au contraire rester inconnue de l'espion.\n"
            },
            {
              "text": "$8$",
              "correct": true,
              "feedback": "Bonne réponse : Alice calcule $2^{3} = 8$, dont le reste dans la division par $23$ vaut $8 - 0 \\times 23 = 8$ ; Bob calcule $10^{2} = 100$, dont le reste vaut $100 - 4 \\times 23 = 8$. Les deux obtiennent la même valeur sans l'avoir jamais transmise.\n"
            },
            {
              "text": "$20$",
              "correct": false,
              "feedback": "Erreur : $20$ est le produit $10 \\times 2$ des deux valeurs publiques, calcul que n'importe quel espion peut faire. La clé s'obtient en élevant la valeur reçue à la puissance de son propre secret.\n"
            },
            {
              "text": "$100$",
              "correct": false,
              "feedback": "Erreur : $100$ est bien $10^{2}$, mais il manque la réduction modulo $23$. Le reste de la division de $100$ par $23$ vaut $8$.\n"
            }
          ],
          "explanation": "Chacun combine la valeur publique reçue avec son propre secret, et les deux calculs mènent au même résultat. L'espion connaît $p$, $g$, $A$ et $B$, mais ni $a$ ni $b$ : avec de très grands nombres, il ne sait pas retrouver la clé commune en un temps raisonnable."
        },
        {
          "statement": "Le protocole de **Diffie-Hellman** permet à deux personnes d'établir une clé secrète commune en n'échangeant que des valeurs publiques. On l'illustre avec les petits nombres publics $p = 23$ et $g = 5$ :\n- Alice choisit en secret $a = 4$ et envoie $A$, reste de la division de $g^a$ par $p$, soit $A = 4$ ;\n- Bob choisit en secret $b = 3$ et envoie $B$, reste de la division de $g^b$ par $p$, soit $B = 10$ ;\n- Alice calcule le reste de la division de $B^a$ par $p$, Bob celui de $A^b$ par $p$.\nQuelle clé commune obtiennent-ils ?",
          "options": [
            {
              "text": "$4$",
              "correct": false,
              "feedback": "Erreur : $4$ est la valeur publique envoyée par Alice, que tout espion voit passer. La clé commune doit au contraire rester inconnue de l'espion.\n"
            },
            {
              "text": "$18$",
              "correct": true,
              "feedback": "Bonne réponse : Alice calcule $10^{4} = 10000$, dont le reste dans la division par $23$ vaut $10000 - 434 \\times 23 = 18$ ; Bob calcule $4^{3} = 64$, dont le reste vaut $64 - 2 \\times 23 = 18$. Les deux obtiennent la même valeur sans l'avoir jamais transmise.\n"
            },
            {
              "text": "$40$",
              "correct": false,
              "feedback": "Erreur : $40$ est le produit $4 \\times 10$ des deux valeurs publiques, calcul que n'importe quel espion peut faire. La clé s'obtient en élevant la valeur reçue à la puissance de son propre secret.\n"
            },
            {
              "text": "$64$",
              "correct": false,
              "feedback": "Erreur : $64$ est bien $4^{3}$, mais il manque la réduction modulo $23$. Le reste de la division de $64$ par $23$ vaut $18$.\n"
            }
          ],
          "explanation": "Chacun combine la valeur publique reçue avec son propre secret, et les deux calculs mènent au même résultat. L'espion connaît $p$, $g$, $A$ et $B$, mais ni $a$ ni $b$ : avec de très grands nombres, il ne sait pas retrouver la clé commune en un temps raisonnable."
        },
        {
          "statement": "Le protocole de **Diffie-Hellman** permet à deux personnes d'établir une clé secrète commune en n'échangeant que des valeurs publiques. On l'illustre avec les petits nombres publics $p = 11$ et $g = 2$ :\n- Alice choisit en secret $a = 4$ et envoie $A$, reste de la division de $g^a$ par $p$, soit $A = 5$ ;\n- Bob choisit en secret $b = 3$ et envoie $B$, reste de la division de $g^b$ par $p$, soit $B = 8$ ;\n- Alice calcule le reste de la division de $B^a$ par $p$, Bob celui de $A^b$ par $p$.\nQuelle clé commune obtiennent-ils ?",
          "options": [
            {
              "text": "$5$",
              "correct": false,
              "feedback": "Erreur : $5$ est la valeur publique envoyée par Alice, que tout espion voit passer. La clé commune doit au contraire rester inconnue de l'espion.\n"
            },
            {
              "text": "$4$",
              "correct": true,
              "feedback": "Bonne réponse : Alice calcule $8^{4} = 4096$, dont le reste dans la division par $11$ vaut $4096 - 372 \\times 11 = 4$ ; Bob calcule $5^{3} = 125$, dont le reste vaut $125 - 11 \\times 11 = 4$. Les deux obtiennent la même valeur sans l'avoir jamais transmise.\n"
            },
            {
              "text": "$40$",
              "correct": false,
              "feedback": "Erreur : $40$ est le produit $5 \\times 8$ des deux valeurs publiques, calcul que n'importe quel espion peut faire. La clé s'obtient en élevant la valeur reçue à la puissance de son propre secret.\n"
            },
            {
              "text": "$125$",
              "correct": false,
              "feedback": "Erreur : $125$ est bien $5^{3}$, mais il manque la réduction modulo $11$. Le reste de la division de $125$ par $11$ vaut $4$.\n"
            }
          ],
          "explanation": "Chacun combine la valeur publique reçue avec son propre secret, et les deux calculs mènent au même résultat. L'espion connaît $p$, $g$, $A$ et $B$, mais ni $a$ ni $b$ : avec de très grands nombres, il ne sait pas retrouver la clé commune en un temps raisonnable."
        }
      ]
    },
    {
      "id": "q28",
      "difficulty": 2,
      "skills": [
        "chiffrement-vs-encodage"
      ],
      "title": "Chiffrement et encodage",
      "partie": "historiques",
      "statement": "On confond souvent **chiffrement** et **encodage** (par exemple l'écriture hexadécimale). Quelle est la différence fondamentale ?",
      "options": [
        {
          "text": "Le chiffrement a une clé secrète, l'encodage non",
          "correct": true,
          "feedback": "Bonne réponse : l'écriture hexadécimale représente chaque octet par deux caractères, selon une règle connue de tous. N'importe qui peut revenir aux octets d'origine : ce n'est pas un chiffrement. Confondre les deux est une erreur fréquente (et dangereuse) dans la pratique.\n"
        },
        {
          "text": "L'encodage est un chiffrement plus rapide\n",
          "correct": false,
          "feedback": "Erreur : ce n'est pas une question de\nvitesse. Un encodage ne **protège** rien : il\nne suffit pas à rendre des données\nconfidentielles, même si lent.\n"
        },
        {
          "text": "Le chiffrement est gratuit, l'encodage est\npayant\n",
          "correct": false,
          "feedback": "Erreur : aucune notion de coût financier\nn'intervient dans cette distinction. C'est\npurement technique.\n"
        },
        {
          "text": "Le chiffrement transforme en lettres,\nl'encodage en chiffres\n",
          "correct": false,
          "feedback": "Erreur : la nature des caractères de sortie\n(lettres, chiffres, symboles) ne joue aucun\nrôle dans la définition. La distinction est\nla présence ou l'absence d'une clé secrète.\n"
        }
      ],
      "explanation": "Erreur classique en pratique : croire qu'un mot de passe converti en hexadécimal est en sécurité. N'importe qui peut le reconvertir en quelques secondes. Pour la confidentialité, il faut un véritable chiffrement avec une clé secrète. L'encodage est utile pour d'autres raisons : transport, lisibilité, compatibilité de format."
    },
    {
      "id": "q29",
      "difficulty": 3,
      "skills": [
        "rsa",
        "chiffrement",
        "modulo"
      ],
      "title": "Trace de RSA avec petits nombres",
      "partie": "asymetrique",
      "statement": "On choisit deux nombres premiers $p = 5$ et\n$q = 11$, donc $N = p \\cdot q = 55$ et\n$\\varphi(N) = (p-1)(q-1) = 40$. On choisit\n$e = 3$ (premier avec $40$). Alors\n$d = 27$ vérifie $e \\cdot d \\equiv 1\n\\pmod{40}$ (car $3 \\cdot 27 = 81 = 2 \\cdot 40\n+ 1$). Pour chiffrer $m = 4$ avec la clé\npublique $(N, e) = (55, 3)$, on calcule\n$c = m^e \\mod N = 4^3 \\mod 55 = 64 \\mod 55$.\nQuelle est la valeur du chiffré $c$ ?",
      "options": [
        {
          "text": "$9$",
          "correct": true,
          "feedback": "Bonne réponse : $4^{3} = 64$, et $64 \\mod 55 = 64 - 1 \\times 55 = 9$. Le message chiffré est donc $9$. Pour vérifier le déchiffrement avec la clé privée $d = 27$, on calcule $c^d \\mod N = 9^{27} \\mod 55 = 4$ : le message original est bien retrouvé.\n"
        },
        {
          "text": "$12$",
          "correct": false,
          "feedback": "Erreur de calcul : $4^{3} = 64$, et\n$64 - 1 \\times 55 = 9$, pas $12$. Vérifier\nattentivement que $5 \\cdot 11 = 55$,\npas autre chose.\n"
        },
        {
          "text": "$64$",
          "correct": false,
          "feedback": "Erreur : $64$ est la valeur de $m^e$\n**avant** la réduction modulo $N$. Or\nle chiffré doit appartenir à\n$\\{0, 1, \\ldots, N-1\\} = \\{0, 1, \\ldots, 54\\}$.\nIl faut donc appliquer le modulo : $64\n- 1 \\times 55 = 9$.\n"
        },
        {
          "text": "$4$",
          "correct": false,
          "feedback": "Erreur : $4$ est le **message clair**, pas\nle chiffré. Le chiffrement applique\nl'opération $m^e \\mod N$, qui transforme\n$4$ en autre chose. Refaire le calcul :\n$4^{3} = 64$, et $64 \\mod 55$ vaut $9$.\n"
        }
      ],
      "explanation": "Cet exemple illustre concrètement le\nprincipe de RSA. Avec de vrais nombres\npremiers de plusieurs centaines de\nchiffres, le calcul $m^e \\mod N$ devient\ncoûteux pour quelqu'un qui ne connaît pas\n$d$ (sauf à factoriser $N$, problème\nréputé difficile). C'est cette\nasymétrie entre la facilité du\nchiffrement et la difficulté de la\nfactorisation qui fonde la sécurité de\nRSA.",
      "variants": [
        {
          "statement": "On choisit deux nombres premiers $p = 5$ et\n$q = 11$, donc $N = p \\cdot q = 55$ et\n$\\varphi(N) = (p-1)(q-1) = 40$. On choisit\n$e = 3$ (premier avec $40$). Alors\n$d = 27$ vérifie $e \\cdot d \\equiv 1\n\\pmod{40}$ (car $3 \\cdot 27 = 81 = 2 \\cdot 40\n+ 1$). Pour chiffrer $m = 4$ avec la clé\npublique $(N, e) = (55, 3)$, on calcule\n$c = m^e \\mod N = 4^3 \\mod 55 = 64 \\mod 55$.\nQuelle est la valeur du chiffré $c$ ?",
          "options": [
            {
              "text": "$9$",
              "correct": true,
              "feedback": "Bonne réponse : $4^{3} = 64$, et $64 \\mod 55 = 64 - 1 \\times 55 = 9$. Le message chiffré est donc $9$. Pour vérifier le déchiffrement avec la clé privée $d = 27$, on calcule $c^d \\mod N = 9^{27} \\mod 55 = 4$ : le message original est bien retrouvé.\n"
            },
            {
              "text": "$12$",
              "correct": false,
              "feedback": "Erreur de calcul : $4^{3} = 64$, et\n$64 - 1 \\times 55 = 9$, pas $12$. Vérifier\nattentivement que $5 \\cdot 11 = 55$,\npas autre chose.\n"
            },
            {
              "text": "$64$",
              "correct": false,
              "feedback": "Erreur : $64$ est la valeur de $m^e$\n**avant** la réduction modulo $N$. Or\nle chiffré doit appartenir à\n$\\{0, 1, \\ldots, N-1\\} = \\{0, 1, \\ldots, 54\\}$.\nIl faut donc appliquer le modulo : $64\n- 1 \\times 55 = 9$.\n"
            },
            {
              "text": "$4$",
              "correct": false,
              "feedback": "Erreur : $4$ est le **message clair**, pas\nle chiffré. Le chiffrement applique\nl'opération $m^e \\mod N$, qui transforme\n$4$ en autre chose. Refaire le calcul :\n$4^{3} = 64$, et $64 \\mod 55$ vaut $9$.\n"
            }
          ],
          "explanation": "Cet exemple illustre concrètement le\nprincipe de RSA. Avec de vrais nombres\npremiers de plusieurs centaines de\nchiffres, le calcul $m^e \\mod N$ devient\ncoûteux pour quelqu'un qui ne connaît pas\n$d$ (sauf à factoriser $N$, problème\nréputé difficile). C'est cette\nasymétrie entre la facilité du\nchiffrement et la difficulté de la\nfactorisation qui fonde la sécurité de\nRSA."
        },
        {
          "statement": "On choisit deux nombres premiers $p = 3$ et\n$q = 11$, donc $N = p \\cdot q = 33$ et\n$\\varphi(N) = (p-1)(q-1) = 20$. On choisit\n$e = 3$ (premier avec $20$). Alors\n$d = 7$ vérifie $e \\cdot d \\equiv 1\n\\pmod{20}$ (car $3 \\cdot 7 = 21 = 1 \\cdot 20\n+ 1$). Pour chiffrer $m = 4$ avec la clé\npublique $(N, e) = (33, 3)$, on calcule\n$c = m^e \\mod N = 4^3 \\mod 33 = 64 \\mod 33$.\nQuelle est la valeur du chiffré $c$ ?",
          "options": [
            {
              "text": "$31$",
              "correct": true,
              "feedback": "Bonne réponse : $4^{3} = 64$, et $64 \\mod 33 = 64 - 1 \\times 33 = 31$. Le message chiffré est donc $31$. Pour vérifier le déchiffrement avec la clé privée $d = 7$, on calcule $c^d \\mod N = 31^{7} \\mod 33 = 4$ : le message original est bien retrouvé.\n"
            },
            {
              "text": "$34$",
              "correct": false,
              "feedback": "Erreur de calcul : $4^{3} = 64$, et\n$64 - 1 \\times 33 = 31$, pas $34$. Vérifier\nattentivement que $3 \\cdot 11 = 33$,\npas autre chose.\n"
            },
            {
              "text": "$64$",
              "correct": false,
              "feedback": "Erreur : $64$ est la valeur de $m^e$\n**avant** la réduction modulo $N$. Or\nle chiffré doit appartenir à\n$\\{0, 1, \\ldots, N-1\\} = \\{0, 1, \\ldots, 32\\}$.\nIl faut donc appliquer le modulo : $64\n- 1 \\times 33 = 31$.\n"
            },
            {
              "text": "$4$",
              "correct": false,
              "feedback": "Erreur : $4$ est le **message clair**, pas\nle chiffré. Le chiffrement applique\nl'opération $m^e \\mod N$, qui transforme\n$4$ en autre chose. Refaire le calcul :\n$4^{3} = 64$, et $64 \\mod 33$ vaut $31$.\n"
            }
          ],
          "explanation": "Cet exemple illustre concrètement le\nprincipe de RSA. Avec de vrais nombres\npremiers de plusieurs centaines de\nchiffres, le calcul $m^e \\mod N$ devient\ncoûteux pour quelqu'un qui ne connaît pas\n$d$ (sauf à factoriser $N$, problème\nréputé difficile). C'est cette\nasymétrie entre la facilité du\nchiffrement et la difficulté de la\nfactorisation qui fonde la sécurité de\nRSA."
        },
        {
          "statement": "On choisit deux nombres premiers $p = 5$ et\n$q = 7$, donc $N = p \\cdot q = 35$ et\n$\\varphi(N) = (p-1)(q-1) = 24$. On choisit\n$e = 5$ (premier avec $24$). Alors\n$d = 5$ vérifie $e \\cdot d \\equiv 1\n\\pmod{24}$ (car $5 \\cdot 5 = 25 = 1 \\cdot 24\n+ 1$). Pour chiffrer $m = 3$ avec la clé\npublique $(N, e) = (35, 5)$, on calcule\n$c = m^e \\mod N = 3^5 \\mod 35 = 243 \\mod 35$.\nQuelle est la valeur du chiffré $c$ ?",
          "options": [
            {
              "text": "$33$",
              "correct": true,
              "feedback": "Bonne réponse : $3^{5} = 243$, et $243 \\mod 35 = 243 - 6 \\times 35 = 33$. Le message chiffré est donc $33$. Pour vérifier le déchiffrement avec la clé privée $d = 5$, on calcule $c^d \\mod N = 33^{5} \\mod 35 = 3$ : le message original est bien retrouvé.\n"
            },
            {
              "text": "$36$",
              "correct": false,
              "feedback": "Erreur de calcul : $3^{5} = 243$, et\n$243 - 6 \\times 35 = 33$, pas $36$. Vérifier\nattentivement que $5 \\cdot 7 = 35$,\npas autre chose.\n"
            },
            {
              "text": "$243$",
              "correct": false,
              "feedback": "Erreur : $243$ est la valeur de $m^e$\n**avant** la réduction modulo $N$. Or\nle chiffré doit appartenir à\n$\\{0, 1, \\ldots, N-1\\} = \\{0, 1, \\ldots, 34\\}$.\nIl faut donc appliquer le modulo : $243\n- 6 \\times 35 = 33$.\n"
            },
            {
              "text": "$3$",
              "correct": false,
              "feedback": "Erreur : $3$ est le **message clair**, pas\nle chiffré. Le chiffrement applique\nl'opération $m^e \\mod N$, qui transforme\n$3$ en autre chose. Refaire le calcul :\n$3^{5} = 243$, et $243 \\mod 35$ vaut $33$.\n"
            }
          ],
          "explanation": "Cet exemple illustre concrètement le\nprincipe de RSA. Avec de vrais nombres\npremiers de plusieurs centaines de\nchiffres, le calcul $m^e \\mod N$ devient\ncoûteux pour quelqu'un qui ne connaît pas\n$d$ (sauf à factoriser $N$, problème\nréputé difficile). C'est cette\nasymétrie entre la facilité du\nchiffrement et la difficulté de la\nfactorisation qui fonde la sécurité de\nRSA."
        }
      ]
    },
    {
      "id": "q30",
      "difficulty": 3,
      "skills": [
        "vigenere"
      ],
      "title": "Chiffrement de Vigenère",
      "partie": "historiques",
      "statement": "Le **chiffrement de Vigenère** consiste à\nutiliser une **clé** de plusieurs lettres et\nà décaler chaque lettre du message clair selon\nla lettre correspondante de la clé (répétée\ncycliquement). Avec la clé `\"BC\"` et le\nmessage `\"HELLO\"`, quel est le message\nchiffré ?",
      "options": [
        {
          "text": "`\"BCBCB\"` (la clé répétée)\n",
          "correct": false,
          "feedback": "Erreur : la clé répétée n'est qu'un\nintermédiaire de calcul, pas le\nchiffré. On combine cette clé avec le\nmessage clair pour produire le\nchiffré.\n"
        },
        {
          "text": "`\"HELLO\"` (la clé n'a aucun effet)\n",
          "correct": false,
          "feedback": "Erreur : la clé décale bien chaque\nlettre. Avec une clé non triviale, le\nchiffré est obligatoirement différent\ndu clair.\n"
        },
        {
          "text": "`\"IGMNO\"` (un décalage par lettre, mais avec un oubli sur la dernière)\n",
          "correct": false,
          "feedback": "Erreur : le calcul est correct\njusqu'à l'avant-dernière lettre.\n`H+B` (décalage de $1$) donne `I`,\n`E+C` (décalage de $2$) donne `G`,\n`L+B` donne `M`, `L+C` donne `N`.\nMais pour la dernière lettre, `O+B`\n(décalage de $1$) donne `P`, pas\n`O`. Le chiffré est donc `\"IGMNP\"`,\npas `\"IGMNO\"`.\n"
        },
        {
          "text": "`\"IGMNP\"` (chaque lettre décalée selon la clé)",
          "correct": true,
          "feedback": "Bonne réponse : la clé `\"BC\"` est\nrépétée pour donner `\"BCBCB\"` à mettre\nen correspondance avec `\"HELLO\"`.\n`B` correspond à un décalage de $1$\n(car `A` = $0$, `B` = $1$), `C` à un\ndécalage de $2$. Donc :\n`H+1=I`, `E+2=G`, `L+1=M`, `L+2=N`,\n`O+1=P`. Résultat : `\"IGMNP\"`. Vigenère\nest plus solide que César car la même\nlettre du clair peut être chiffrée\ndifféremment selon sa position.\n"
        }
      ],
      "explanation": "Vigenère a longtemps été considéré comme\n« le chiffre indéchiffrable », jusqu'à ce\nque Babbage et Kasiski montrent au $XIX^{e}$\nsiècle qu'il pouvait être cassé en\ncherchant la **longueur de la clé** par\nanalyse des répétitions, puis en\nappliquant l'analyse des fréquences sur\nchaque sous-séquence. Aujourd'hui, c'est\nun chiffre purement pédagogique."
    },
    {
      "id": "q31",
      "difficulty": 3,
      "skills": [
        "cesar",
        "analyse-frequences"
      ],
      "title": "Cryptanalyse de César par fréquences",
      "partie": "historiques",
      "statement": "On intercepte un long texte chiffré par\n**César** (décalage inconnu). Dans le texte\nfrançais, la lettre `'E'` est de loin la\nplus fréquente (environ $17 \\%$ des\noccurrences). Dans le chiffré, la lettre la\nplus fréquente est `'H'`. Quel est, très\nprobablement, le décalage utilisé ?",
      "options": [
        {
          "text": "$3$",
          "correct": true,
          "feedback": "Bonne réponse : si `E` (rang $4$ dans\nl'alphabet, en comptant à partir de $0$)\na été chiffrée en `H` (rang $7$), le\ndécalage est $7 - 4 = 3$. Pour\ndéchiffrer, on applique le décalage\ninverse $-3$ (ou équivalent $+23$) à\nchaque lettre du chiffré.\n"
        },
        {
          "text": "$5$",
          "correct": false,
          "feedback": "Erreur : un décalage de $5$\ntransformerait `E` en `J`, pas en `H`.\nCalculer la différence entre la\nposition de la lettre la plus fréquente\ndu chiffré (`H`) et celle attendue\ndans le clair (`E`).\n"
        },
        {
          "text": "$7$",
          "correct": false,
          "feedback": "Erreur : c'est la position de `H` dans\nl'alphabet (`A`=0, ..., `H`=7), pas le\ndécalage. Le décalage est la\n**différence** entre la position dans\nle chiffré (`H` = $7$) et la position\ndans le clair (`E` = $4$).\n"
        },
        {
          "text": "$13$",
          "correct": false,
          "feedback": "Erreur : $13$ est le décalage de\nROT$13$, qui transformerait `E` en `R`,\npas en `H`. ROT$13$ est cependant une\nvariante célèbre de César, utilisée\njadis sur Usenet pour cacher les\nplaisanteries grivoises ou les\ndivulgations.\n"
        }
      ],
      "explanation": "L'**analyse des fréquences** est une\nattaque puissante contre tous les\nchiffrements par substitution monoalphabétique\n(où chaque lettre est toujours remplacée\npar la même autre lettre). C'est ce qui\nles rend tous obsolètes pour de vrais\nusages cryptographiques. La parade\nhistorique a été le chiffrement\npolyalphabétique (Vigenère), puis les\nchiffrements modernes (AES) qui\ndétruisent toute corrélation entre\nfréquences du clair et du chiffré.",
      "variants": [
        {
          "statement": "On intercepte un long texte chiffré par\n**César** (décalage inconnu). Dans le texte\nfrançais, la lettre `'E'` est de loin la\nplus fréquente (environ $17 \\%$ des\noccurrences). Dans le chiffré, la lettre la\nplus fréquente est `'H'`. Quel est, très\nprobablement, le décalage utilisé ?",
          "options": [
            {
              "text": "$3$",
              "correct": true,
              "feedback": "Bonne réponse : si `E` (rang $4$ dans\nl'alphabet, en comptant à partir de $0$)\na été chiffrée en `H` (rang $7$), le\ndécalage est $7 - 4 = 3$. Pour\ndéchiffrer, on applique le décalage\ninverse $-3$ (ou équivalent $+23$) à\nchaque lettre du chiffré.\n"
            },
            {
              "text": "$5$",
              "correct": false,
              "feedback": "Erreur : un décalage de $5$\ntransformerait `E` en `J`, pas en `H`.\nCalculer la différence entre la\nposition de la lettre la plus fréquente\ndu chiffré (`H`) et celle attendue\ndans le clair (`E`).\n"
            },
            {
              "text": "$7$",
              "correct": false,
              "feedback": "Erreur : c'est la position de `H` dans\nl'alphabet (`A`=0, ..., `H`=7), pas le\ndécalage. Le décalage est la\n**différence** entre la position dans\nle chiffré (`H` = $7$) et la position\ndans le clair (`E` = $4$).\n"
            },
            {
              "text": "$13$",
              "correct": false,
              "feedback": "Erreur : $13$ est le décalage de\nROT$13$, qui transformerait `E` en `R`,\npas en `H`. ROT$13$ est cependant une\nvariante célèbre de César, utilisée\njadis sur Usenet pour cacher les\nplaisanteries grivoises ou les\ndivulgations.\n"
            }
          ],
          "explanation": "L'**analyse des fréquences** est une\nattaque puissante contre tous les\nchiffrements par substitution monoalphabétique\n(où chaque lettre est toujours remplacée\npar la même autre lettre). C'est ce qui\nles rend tous obsolètes pour de vrais\nusages cryptographiques. La parade\nhistorique a été le chiffrement\npolyalphabétique (Vigenère), puis les\nchiffrements modernes (AES) qui\ndétruisent toute corrélation entre\nfréquences du clair et du chiffré."
        },
        {
          "statement": "On intercepte un long texte chiffré par\n**César** (décalage inconnu). Dans le texte\nfrançais, la lettre `'E'` est de loin la\nplus fréquente (environ $17 \\%$ des\noccurrences). Dans le chiffré, la lettre la\nplus fréquente est `'J'`. Quel est, très\nprobablement, le décalage utilisé ?",
          "options": [
            {
              "text": "$5$",
              "correct": true,
              "feedback": "Bonne réponse : si `E` (rang $4$ dans\nl'alphabet, en comptant à partir de $0$)\na été chiffrée en `J` (rang $9$), le\ndécalage est $9 - 4 = 5$. Pour\ndéchiffrer, on applique le décalage\ninverse $-5$ (ou équivalent $+21$) à\nchaque lettre du chiffré.\n"
            },
            {
              "text": "$7$",
              "correct": false,
              "feedback": "Erreur : un décalage de $7$\ntransformerait `E` en `L`, pas en `J`.\nCalculer la différence entre la\nposition de la lettre la plus fréquente\ndu chiffré (`J`) et celle attendue\ndans le clair (`E`).\n"
            },
            {
              "text": "$9$",
              "correct": false,
              "feedback": "Erreur : c'est la position de `J` dans\nl'alphabet (`A`=0, ..., `J`=9), pas le\ndécalage. Le décalage est la\n**différence** entre la position dans\nle chiffré (`J` = $9$) et la position\ndans le clair (`E` = $4$).\n"
            },
            {
              "text": "$13$",
              "correct": false,
              "feedback": "Erreur : $13$ est le décalage de\nROT$13$, qui transformerait `E` en `R`,\npas en `J`. ROT$13$ est cependant une\nvariante célèbre de César, utilisée\njadis sur Usenet pour cacher les\nplaisanteries grivoises ou les\ndivulgations.\n"
            }
          ],
          "explanation": "L'**analyse des fréquences** est une\nattaque puissante contre tous les\nchiffrements par substitution monoalphabétique\n(où chaque lettre est toujours remplacée\npar la même autre lettre). C'est ce qui\nles rend tous obsolètes pour de vrais\nusages cryptographiques. La parade\nhistorique a été le chiffrement\npolyalphabétique (Vigenère), puis les\nchiffrements modernes (AES) qui\ndétruisent toute corrélation entre\nfréquences du clair et du chiffré."
        },
        {
          "statement": "On intercepte un long texte chiffré par\n**César** (décalage inconnu). Dans le texte\nfrançais, la lettre `'E'` est de loin la\nplus fréquente (environ $17 \\%$ des\noccurrences). Dans le chiffré, la lettre la\nplus fréquente est `'L'`. Quel est, très\nprobablement, le décalage utilisé ?",
          "options": [
            {
              "text": "$7$",
              "correct": true,
              "feedback": "Bonne réponse : si `E` (rang $4$ dans\nl'alphabet, en comptant à partir de $0$)\na été chiffrée en `L` (rang $11$), le\ndécalage est $11 - 4 = 7$. Pour\ndéchiffrer, on applique le décalage\ninverse $-7$ (ou équivalent $+19$) à\nchaque lettre du chiffré.\n"
            },
            {
              "text": "$9$",
              "correct": false,
              "feedback": "Erreur : un décalage de $9$\ntransformerait `E` en `N`, pas en `L`.\nCalculer la différence entre la\nposition de la lettre la plus fréquente\ndu chiffré (`L`) et celle attendue\ndans le clair (`E`).\n"
            },
            {
              "text": "$11$",
              "correct": false,
              "feedback": "Erreur : c'est la position de `L` dans\nl'alphabet (`A`=0, ..., `L`=11), pas le\ndécalage. Le décalage est la\n**différence** entre la position dans\nle chiffré (`L` = $11$) et la position\ndans le clair (`E` = $4$).\n"
            },
            {
              "text": "$13$",
              "correct": false,
              "feedback": "Erreur : $13$ est le décalage de\nROT$13$, qui transformerait `E` en `R`,\npas en `L`. ROT$13$ est cependant une\nvariante célèbre de César, utilisée\njadis sur Usenet pour cacher les\nplaisanteries grivoises ou les\ndivulgations.\n"
            }
          ],
          "explanation": "L'**analyse des fréquences** est une\nattaque puissante contre tous les\nchiffrements par substitution monoalphabétique\n(où chaque lettre est toujours remplacée\npar la même autre lettre). C'est ce qui\nles rend tous obsolètes pour de vrais\nusages cryptographiques. La parade\nhistorique a été le chiffrement\npolyalphabétique (Vigenère), puis les\nchiffrements modernes (AES) qui\ndétruisent toute corrélation entre\nfréquences du clair et du chiffré."
        }
      ]
    },
    {
      "id": "q32",
      "difficulty": 3,
      "skills": [
        "rsa",
        "dechiffrement",
        "modulo"
      ],
      "title": "Déchiffrement RSA avec petits nombres",
      "partie": "asymetrique",
      "statement": "Avec RSA, Bob a pour clé publique $(N, e) = (33, 3)$ et pour clé privée $(N, d) = (33, 7)$. Il reçoit le message chiffré $c = 2$. Pour le déchiffrer, il calcule le reste de la division de $c^d$ par $N$. Quel message clair $m$ obtient-il ?",
      "options": [
        {
          "text": "$128$",
          "correct": false,
          "feedback": "Erreur : $128$ est la valeur de $2^{7}$ **avant** la réduction modulo $33$. Le message clair doit être compris entre $0$ et $32$ : il faut retirer $3 \\times 33 = 99$, ce qui donne $29$.\n"
        },
        {
          "text": "$8$",
          "correct": false,
          "feedback": "Erreur : $8 = 2^{3}$ utilise l'exposant public $e = 3$, qui sert à chiffrer. Pour déchiffrer, il faut l'exposant privé $d = 7$.\n"
        },
        {
          "text": "$29$",
          "correct": true,
          "feedback": "Bonne réponse : $2^{7} = 128$ et $128 - 3 \\times 33 = 29$. Vérification : $29^{3} = 24389$, dont le reste dans la division par $33$ vaut bien $2$, le message chiffré reçu.\n"
        },
        {
          "text": "$14$",
          "correct": false,
          "feedback": "Erreur : $14 = 2 \\times 7$ multiplie le chiffré par $d$ au lieu de l'élever à la puissance $d$.\n"
        }
      ],
      "explanation": "Bob est le seul à pouvoir faire ce calcul, car lui seul connaît $d$. N'importe qui peut chiffrer avec $(33, 3)$, mais retrouver $d$ à partir de la clé publique est hors de portée quand $N$ compte des centaines de chiffres.",
      "variants": [
        {
          "statement": "Avec RSA, Bob a pour clé publique $(N, e) = (33, 3)$ et pour clé privée $(N, d) = (33, 7)$. Il reçoit le message chiffré $c = 2$. Pour le déchiffrer, il calcule le reste de la division de $c^d$ par $N$. Quel message clair $m$ obtient-il ?",
          "options": [
            {
              "text": "$128$",
              "correct": false,
              "feedback": "Erreur : $128$ est la valeur de $2^{7}$ **avant** la réduction modulo $33$. Le message clair doit être compris entre $0$ et $32$ : il faut retirer $3 \\times 33 = 99$, ce qui donne $29$.\n"
            },
            {
              "text": "$8$",
              "correct": false,
              "feedback": "Erreur : $8 = 2^{3}$ utilise l'exposant public $e = 3$, qui sert à chiffrer. Pour déchiffrer, il faut l'exposant privé $d = 7$.\n"
            },
            {
              "text": "$29$",
              "correct": true,
              "feedback": "Bonne réponse : $2^{7} = 128$ et $128 - 3 \\times 33 = 29$. Vérification : $29^{3} = 24389$, dont le reste dans la division par $33$ vaut bien $2$, le message chiffré reçu.\n"
            },
            {
              "text": "$14$",
              "correct": false,
              "feedback": "Erreur : $14 = 2 \\times 7$ multiplie le chiffré par $d$ au lieu de l'élever à la puissance $d$.\n"
            }
          ],
          "explanation": "Bob est le seul à pouvoir faire ce calcul, car lui seul connaît $d$. N'importe qui peut chiffrer avec $(33, 3)$, mais retrouver $d$ à partir de la clé publique est hors de portée quand $N$ compte des centaines de chiffres."
        },
        {
          "statement": "Avec RSA, Bob a pour clé publique $(N, e) = (33, 3)$ et pour clé privée $(N, d) = (33, 7)$. Il reçoit le message chiffré $c = 4$. Pour le déchiffrer, il calcule le reste de la division de $c^d$ par $N$. Quel message clair $m$ obtient-il ?",
          "options": [
            {
              "text": "$16384$",
              "correct": false,
              "feedback": "Erreur : $16384$ est la valeur de $4^{7}$ **avant** la réduction modulo $33$. Le message clair doit être compris entre $0$ et $32$ : il faut retirer $496 \\times 33 = 16368$, ce qui donne $16$.\n"
            },
            {
              "text": "$64$",
              "correct": false,
              "feedback": "Erreur : $64 = 4^{3}$ utilise l'exposant public $e = 3$, qui sert à chiffrer. Pour déchiffrer, il faut l'exposant privé $d = 7$.\n"
            },
            {
              "text": "$16$",
              "correct": true,
              "feedback": "Bonne réponse : $4^{7} = 16384$ et $16384 - 496 \\times 33 = 16$. Vérification : $16^{3} = 4096$, dont le reste dans la division par $33$ vaut bien $4$, le message chiffré reçu.\n"
            },
            {
              "text": "$28$",
              "correct": false,
              "feedback": "Erreur : $28 = 4 \\times 7$ multiplie le chiffré par $d$ au lieu de l'élever à la puissance $d$.\n"
            }
          ],
          "explanation": "Bob est le seul à pouvoir faire ce calcul, car lui seul connaît $d$. N'importe qui peut chiffrer avec $(33, 3)$, mais retrouver $d$ à partir de la clé publique est hors de portée quand $N$ compte des centaines de chiffres."
        },
        {
          "statement": "Avec RSA, Bob a pour clé publique $(N, e) = (33, 3)$ et pour clé privée $(N, d) = (33, 7)$. Il reçoit le message chiffré $c = 5$. Pour le déchiffrer, il calcule le reste de la division de $c^d$ par $N$. Quel message clair $m$ obtient-il ?",
          "options": [
            {
              "text": "$78125$",
              "correct": false,
              "feedback": "Erreur : $78125$ est la valeur de $5^{7}$ **avant** la réduction modulo $33$. Le message clair doit être compris entre $0$ et $32$ : il faut retirer $2367 \\times 33 = 78111$, ce qui donne $14$.\n"
            },
            {
              "text": "$125$",
              "correct": false,
              "feedback": "Erreur : $125 = 5^{3}$ utilise l'exposant public $e = 3$, qui sert à chiffrer. Pour déchiffrer, il faut l'exposant privé $d = 7$.\n"
            },
            {
              "text": "$14$",
              "correct": true,
              "feedback": "Bonne réponse : $5^{7} = 78125$ et $78125 - 2367 \\times 33 = 14$. Vérification : $14^{3} = 2744$, dont le reste dans la division par $33$ vaut bien $5$, le message chiffré reçu.\n"
            },
            {
              "text": "$35$",
              "correct": false,
              "feedback": "Erreur : $35 = 5 \\times 7$ multiplie le chiffré par $d$ au lieu de l'élever à la puissance $d$.\n"
            }
          ],
          "explanation": "Bob est le seul à pouvoir faire ce calcul, car lui seul connaît $d$. N'importe qui peut chiffrer avec $(33, 3)$, mais retrouver $d$ à partir de la clé publique est hors de portée quand $N$ compte des centaines de chiffres."
        }
      ]
    },
    {
      "id": "q33",
      "difficulty": 2,
      "skills": [
        "asymetrique",
        "signature",
        "cle-privee"
      ],
      "title": "Signer un message",
      "partie": "asymetrique",
      "statement": "Alice veut que Bob soit certain qu'un message vient d'elle. Avec\nquelle clé le signe-t-elle, et avec quelle clé Bob vérifie-t-il\nla signature ?",
      "options": [
        {
          "text": "Sa clé privée pour signer, sa clé publique pour vérifier",
          "correct": true,
          "feedback": "Bonne réponse : seule Alice détient sa clé privée, donc seule\nAlice a pu produire la signature ; tout le monde peut la\nvérifier avec sa clé publique.\n"
        },
        {
          "text": "Sa clé publique pour signer, sa clé privée pour vérifier",
          "correct": false,
          "feedback": "Erreur : n'importe qui connaît la clé publique d'Alice et\npourrait alors signer à sa place.\n"
        },
        {
          "text": "La clé publique de Bob pour signer, la clé privée de Bob pour vérifier",
          "correct": false,
          "feedback": "Erreur : c'est le schéma du chiffrement, qui protège la\nconfidentialité, pas l'origine.\n"
        },
        {
          "text": "La clé privée de Bob pour signer, la clé publique d'Alice pour vérifier",
          "correct": false,
          "feedback": "Erreur : Alice ne possède pas la clé privée de Bob, et les deux\nclés doivent venir de la même paire.\n"
        }
      ],
      "explanation": "Chiffrer et signer utilisent la même paire de clés dans deux sens\nopposés : clé publique pour chiffrer, clé privée pour signer."
    },
    {
      "id": "q34",
      "difficulty": 2,
      "skills": [
        "asymetrique",
        "plusieurs-destinataires",
        "cle-publique"
      ],
      "title": "Un message pour deux destinataires",
      "partie": "asymetrique",
      "statement": "Alice envoie le même message confidentiel à Bob et à Carole, qui\npossèdent chacun leur paire de clés. Comment procède-t-elle ?",
      "options": [
        {
          "text": "Elle chiffre une copie avec la clé publique de chacun",
          "correct": true,
          "feedback": "Bonne réponse : la copie chiffrée avec la clé publique de Bob\nn'est lisible que par Bob, celle de Carole que par Carole.\n"
        },
        {
          "text": "Elle chiffre une seule fois avec sa propre clé privée",
          "correct": false,
          "feedback": "Erreur : ce que chiffre la clé privée d'Alice se déchiffre avec\nsa clé publique, connue de tous.\n"
        },
        {
          "text": "Elle chiffre avec la clé publique de Bob, Carole la connaissant aussi",
          "correct": false,
          "feedback": "Erreur : connaître la clé publique de Bob ne permet pas de\ndéchiffrer, il faut sa clé privée.\n"
        },
        {
          "text": "Elle chiffre avec les deux clés publiques l'une après l'autre",
          "correct": false,
          "feedback": "Erreur : il faudrait alors les deux clés privées pour lire, et\nni Bob ni Carole ne lirait seul.\n"
        }
      ],
      "explanation": "Une clé publique ne sert qu'à chiffrer pour son propriétaire : un\ndestinataire, un chiffrement."
    },
    {
      "id": "q35",
      "difficulty": 3,
      "skills": [
        "asymetrique",
        "taille-de-cle",
        "factorisation"
      ],
      "title": "Des clés RSA bien plus longues",
      "partie": "asymetrique",
      "statement": "Une clé symétrique de $128$ bits est jugée sûre, alors qu'une clé\nRSA doit compter au moins $2048$ bits. Pourquoi cette différence ?",
      "options": [
        {
          "text": "L'attaque de RSA est une factorisation, pas un essai de toutes les clés",
          "correct": true,
          "feedback": "Bonne réponse : casser RSA revient à factoriser le nombre $n$ de\nla clé publique, et les algorithmes de factorisation sont bien\nplus efficaces que l'essai exhaustif. Il faut donc un $n$\nbeaucoup plus grand pour résister.\n"
        },
        {
          "text": "Les clés RSA contiennent deux nombres, il faut donc deux fois plus de bits",
          "correct": false,
          "feedback": "Erreur : la taille indiquée est celle de $n$ seul, et le\nrapport dépasse largement deux.\n"
        },
        {
          "text": "Le chiffrement symétrique est plus récent et donc mieux conçu que RSA",
          "correct": false,
          "feedback": "Erreur : l'ancienneté n'explique rien ; les deux reposent sur\ndes problèmes différents.\n"
        },
        {
          "text": "Une clé RSA doit être au moins aussi longue que les messages chiffrés",
          "correct": false,
          "feedback": "Erreur : RSA chiffre de petits blocs, souvent une clé de\nsession, pas des messages entiers.\n"
        }
      ],
      "explanation": "La longueur d'une clé se juge à la meilleure attaque connue : force\nbrute pour le symétrique, factorisation pour RSA."
    },
    {
      "id": "q36",
      "difficulty": 2,
      "skills": [
        "usages",
        "certificat",
        "autorite"
      ],
      "title": "Le rôle de l'autorité de certification",
      "partie": "usages",
      "statement": "Lors d'une connexion HTTPS, le navigateur reçoit la clé publique\ndu site dans un certificat signé par une autorité de\ncertification. À quoi sert cette signature ?",
      "options": [
        {
          "text": "À garantir que cette clé publique appartient bien au site visité",
          "correct": true,
          "feedback": "Bonne réponse : l'autorité a vérifié l'identité du site avant\nde signer. Le navigateur, qui connaît les clés publiques des\nautorités, vérifie la signature et peut alors faire confiance à\nla clé reçue.\n"
        },
        {
          "text": "À chiffrer les données échangées entre le navigateur et le site",
          "correct": false,
          "feedback": "Erreur : le chiffrement des données utilise une clé de session,\npas la signature du certificat.\n"
        },
        {
          "text": "À prouver que le site ne contient aucun logiciel malveillant",
          "correct": false,
          "feedback": "Erreur : le certificat atteste une identité, pas le contenu\ndes pages.\n"
        },
        {
          "text": "À transmettre au navigateur la clé privée du site, en sécurité",
          "correct": false,
          "feedback": "Erreur : la clé privée ne quitte jamais le serveur.\n"
        }
      ],
      "explanation": "Le chiffrement protège contre l'écoute ; le certificat protège\ncontre l'usurpation, en liant une clé publique à une identité."
    },
    {
      "id": "q37",
      "difficulty": 3,
      "skills": [
        "usages",
        "homme-du-milieu",
        "authentification"
      ],
      "title": "L'attaque de l'homme du milieu",
      "partie": "usages",
      "statement": "Sans certificat, un attaquant placé entre le navigateur et le site\nintercepte l'échange de clés. Que fait-il pour lire les échanges\nchiffrés ?",
      "options": [
        {
          "text": "Il remplace la clé publique du site par la sienne et relaie tout",
          "correct": true,
          "feedback": "Bonne réponse : le navigateur chiffre pour l'attaquant en\ncroyant chiffrer pour le site ; l'attaquant déchiffre, lit,\nrechiffre pour le vrai site et relaie. Rien ne le trahit sans\ncertificat.\n"
        },
        {
          "text": "Il casse le chiffrement par force brute pendant la connexion",
          "correct": false,
          "feedback": "Erreur : les clés actuelles rendent la force brute hors de\nportée.\n"
        },
        {
          "text": "Il devine la clé privée du site à partir de sa clé publique",
          "correct": false,
          "feedback": "Erreur : retrouver la clé privée est précisément ce que la\ntaille des clés rend impossible.\n"
        },
        {
          "text": "Il bloque la connexion pour forcer un échange sans chiffrement",
          "correct": false,
          "feedback": "Erreur : bloquer empêche la communication, cela ne la révèle\npas.\n"
        }
      ],
      "explanation": "Un échange de clés sur un canal public n'est sûr que si chacun peut\nvérifier à qui appartient la clé reçue : c'est le rôle des\ncertificats."
    },
    {
      "id": "q38",
      "difficulty": 2,
      "skills": [
        "historiques",
        "symetrique",
        "distribution-des-cles"
      ],
      "title": "Le nombre de clés secrètes dans un groupe",
      "partie": "historiques",
      "statement": "Dans un groupe de $5$ personnes, chaque paire veut communiquer\navec sa propre clé symétrique secrète. Combien de clés faut-il en\ntout ?",
      "options": [
        {
          "text": "$10$, une par paire de personnes",
          "correct": true,
          "feedback": "Bonne réponse : chaque personne partage une clé avec chacune des\n$4$ autres, et chaque clé est comptée deux fois, d'où\n$5 \\times 4 / 2 = 10$ clés.\n"
        },
        {
          "text": "$5$, une par personne",
          "correct": false,
          "feedback": "Erreur : une clé par personne serait connue de tous ses\ncorrespondants, qui pourraient lire les messages des autres.\n"
        },
        {
          "text": "$4$, une par correspondant",
          "correct": false,
          "feedback": "Erreur : c'est le nombre de clés d'une seule personne, pas du\ngroupe.\n"
        },
        {
          "text": "$25$, une par couple ordonné",
          "correct": false,
          "feedback": "Erreur : la clé d'Alice vers Bob sert aussi de Bob vers Alice.\n"
        }
      ],
      "explanation": "Le nombre de clés symétriques croît comme le carré du nombre de\nparticipants : c'est ce problème de distribution que le\nchiffrement asymétrique résout.",
      "variants": [
        {
          "statement": "Dans un groupe de $5$ personnes, chaque paire veut communiquer\navec sa propre clé symétrique secrète. Combien de clés faut-il en\ntout ?",
          "options": [
            {
              "text": "$10$, une par paire de personnes",
              "correct": true,
              "feedback": "Bonne réponse : chaque personne partage une clé avec chacune des\n$4$ autres, et chaque clé est comptée deux fois, d'où\n$5 \\times 4 / 2 = 10$ clés.\n"
            },
            {
              "text": "$5$, une par personne",
              "correct": false,
              "feedback": "Erreur : une clé par personne serait connue de tous ses\ncorrespondants, qui pourraient lire les messages des autres.\n"
            },
            {
              "text": "$4$, une par correspondant",
              "correct": false,
              "feedback": "Erreur : c'est le nombre de clés d'une seule personne, pas du\ngroupe.\n"
            },
            {
              "text": "$25$, une par couple ordonné",
              "correct": false,
              "feedback": "Erreur : la clé d'Alice vers Bob sert aussi de Bob vers Alice.\n"
            }
          ],
          "explanation": "Le nombre de clés symétriques croît comme le carré du nombre de\nparticipants : c'est ce problème de distribution que le\nchiffrement asymétrique résout."
        },
        {
          "statement": "Dans un groupe de $10$ personnes, chaque paire veut communiquer\navec sa propre clé symétrique secrète. Combien de clés faut-il en\ntout ?",
          "options": [
            {
              "text": "$45$, une par paire de personnes",
              "correct": true,
              "feedback": "Bonne réponse : chaque personne partage une clé avec chacune des\n$9$ autres, et chaque clé est comptée deux fois, d'où\n$10 \\times 9 / 2 = 45$ clés.\n"
            },
            {
              "text": "$10$, une par personne",
              "correct": false,
              "feedback": "Erreur : une clé par personne serait connue de tous ses\ncorrespondants, qui pourraient lire les messages des autres.\n"
            },
            {
              "text": "$9$, une par correspondant",
              "correct": false,
              "feedback": "Erreur : c'est le nombre de clés d'une seule personne, pas du\ngroupe.\n"
            },
            {
              "text": "$100$, une par couple ordonné",
              "correct": false,
              "feedback": "Erreur : la clé d'Alice vers Bob sert aussi de Bob vers Alice.\n"
            }
          ],
          "explanation": "Le nombre de clés symétriques croît comme le carré du nombre de\nparticipants : c'est ce problème de distribution que le\nchiffrement asymétrique résout."
        },
        {
          "statement": "Dans un groupe de $6$ personnes, chaque paire veut communiquer\navec sa propre clé symétrique secrète. Combien de clés faut-il en\ntout ?",
          "options": [
            {
              "text": "$15$, une par paire de personnes",
              "correct": true,
              "feedback": "Bonne réponse : chaque personne partage une clé avec chacune des\n$5$ autres, et chaque clé est comptée deux fois, d'où\n$6 \\times 5 / 2 = 15$ clés.\n"
            },
            {
              "text": "$6$, une par personne",
              "correct": false,
              "feedback": "Erreur : une clé par personne serait connue de tous ses\ncorrespondants, qui pourraient lire les messages des autres.\n"
            },
            {
              "text": "$5$, une par correspondant",
              "correct": false,
              "feedback": "Erreur : c'est le nombre de clés d'une seule personne, pas du\ngroupe.\n"
            },
            {
              "text": "$36$, une par couple ordonné",
              "correct": false,
              "feedback": "Erreur : la clé d'Alice vers Bob sert aussi de Bob vers Alice.\n"
            }
          ],
          "explanation": "Le nombre de clés symétriques croît comme le carré du nombre de\nparticipants : c'est ce problème de distribution que le\nchiffrement asymétrique résout."
        }
      ]
    }
  ]
}