{
  "chapter": {
    "id": "securisation",
    "level": "terminale",
    "theme": "Architectures matérielles, systèmes d'exploitation et réseaux",
    "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.",
    "prerequisites": [],
    "references": []
  },
  "questions": [
    {
      "id": "q01",
      "difficulty": 1,
      "skills": [
        "definition",
        "chiffrement"
      ],
      "title": "Définition du chiffrement",
      "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": "La transformation du message clair en un message illisible sans la clé de déchiffrement",
          "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",
      "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 : par exemple, AES, ChaCha20. La clé\ndoit être partagée entre l'expéditeur et le\ndestinataire avant l'échange. C'est rapide mais pose\nle 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 (Advanced Encryption Standard) est aujourd'hui le\nchiffrement symétrique le plus utilisé. Il chiffre par\nblocs de $128$ bits avec des clés de $128$, $192$ ou\n$256$ bits."
    },
    {
      "id": "q03",
      "difficulty": 1,
      "skills": [
        "asymetrique"
      ],
      "title": "Chiffrement asymétrique",
      "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, les deux sont mathématiquement liées",
          "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",
      "statement": "Sur quelle difficulté mathématique repose la sécurité de\nl'algorithme **RSA** ?",
      "options": [
        {
          "text": "La difficulté de factoriser un grand nombre en ses 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": [
        "hachage"
      ],
      "title": "Fonction de hachage",
      "statement": "Qu'est-ce qu'une **fonction de hachage cryptographique** ?",
      "options": [
        {
          "text": "Une fonction qui produit une empreinte de taille fixe à partir d'une entrée de taille quelconque, et qui est très difficile à inverser",
          "correct": true,
          "feedback": "Bonne réponse : par exemple, SHA-$256$ produit toujours\nune empreinte de $256$ bits. Deux entrées différentes\ndonnent (presque toujours) des empreintes différentes,\net il est computationnellement infaisable de\nretrouver l'entrée à partir de l'empreinte.\n"
        },
        {
          "text": "Une fonction réversible qui transforme tout texte en un texte de même taille",
          "correct": false,
          "feedback": "Erreur : une fonction de hachage est précisément\n**non réversible**, et la sortie a une taille fixe\nquelle que soit l'entrée.\n"
        },
        {
          "text": "Une fonction qui compresse un fichier sans perte",
          "correct": false,
          "feedback": "Erreur : le hachage produit une **empreinte**, on ne\npeut pas reconstituer le fichier d'origine. Ce n'est\ndonc pas une compression.\n"
        },
        {
          "text": "Un type de chiffrement particulier",
          "correct": false,
          "feedback": "Erreur : le hachage n'est pas un chiffrement (pas de\nclé, pas de réversibilité). Ce sont deux primitives\ndifférentes.\n"
        }
      ],
      "explanation": "Trois propriétés clés d'une fonction de hachage\ncryptographique : (1) **résistance à la pré-image**\n(inversion difficile), (2) **résistance à la seconde\npré-image** (trouver une autre entrée avec même\nempreinte est dur), (3) **résistance aux collisions**\n(trouver deux entrées avec même empreinte est dur)."
    },
    {
      "id": "q06",
      "difficulty": 1,
      "skills": [
        "signature"
      ],
      "title": "Signature numérique",
      "statement": "Quel rôle joue la **signature numérique** d'un document ?",
      "options": [
        {
          "text": "Elle remplace le mot de passe",
          "correct": false,
          "feedback": "Erreur : aucun rapport avec l'authentification par\nmot de passe.\n"
        },
        {
          "text": "Elle chiffre le document",
          "correct": false,
          "feedback": "Erreur : la signature ne cache pas le contenu, elle\natteste de son origine et de son intégrité. Le\ndocument peut être en clair tout en étant signé.\n"
        },
        {
          "text": "Elle compresse le document",
          "correct": false,
          "feedback": "Erreur : la signature ajoute des données (la\nsignature elle-même), elle n'en réduit pas.\n"
        },
        {
          "text": "Elle prouve l'authenticité (qui a signé) et l'intégrité (le document n'a pas été modifié) du document",
          "correct": true,
          "feedback": "Bonne réponse : la signature numérique fonctionne\navec la cryptographie asymétrique : on signe avec\nsa clé **privée**, et n'importe qui peut vérifier\navec la clé publique correspondante. Toute\nmodification du document invalide la signature.\n"
        }
      ],
      "explanation": "La signature numérique = empreinte du document chiffrée\navec la clé privée du signataire. Pour vérifier : on\ndéchiffre la signature avec la clé publique, on calcule\nl'empreinte du document, et on compare. Si les deux\ncoïncident, signature valide."
    },
    {
      "id": "q07",
      "difficulty": 1,
      "skills": [
        "tls"
      ],
      "title": "Rôle du TLS",
      "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 un navigateur et un serveur web (chiffrement, authenticité)",
          "correct": true,
          "feedback": "Bonne réponse : TLS (Transport Layer Security)\nchiffre les données échangées en HTTPS et\nauthentifie le serveur via son certificat. Il\nsuccède à SSL.\n"
        }
      ],
      "explanation": "TLS combine chiffrement symétrique (rapide pour le\ngros des données), asymétrique (pour échanger la clé\nsymétrique), hachage et signatures. Versions modernes :\nTLS $1.2$ et TLS $1.3$ ; les anciennes (SSL, TLS $1.0$,\nTLS $1.1$) sont obsolètes et déconseillées."
    },
    {
      "id": "q08",
      "difficulty": 1,
      "skills": [
        "certificat"
      ],
      "title": "Certificat numérique",
      "statement": "Qu'est-ce qu'un **certificat** numérique (au sens de\nX.$509$) ?",
      "options": [
        {
          "text": "Un système de paiement en ligne",
          "correct": false,
          "feedback": "Erreur : aucun rapport avec le paiement.\n"
        },
        {
          "text": "Un mot de passe long et compliqué",
          "correct": false,
          "feedback": "Erreur : aucun rapport avec un mot de passe.\n"
        },
        {
          "text": "Un fichier qui contient les empreintes de tous les utilisateurs",
          "correct": false,
          "feedback": "Erreur : les certificats sont individuels, ils ne\ncontiennent pas de listes d'utilisateurs.\n"
        },
        {
          "text": "Un document signé par une autorité de confiance qui associe une clé publique à une identité",
          "correct": true,
          "feedback": "Bonne réponse : un certificat lie de manière vérifiable\nune clé publique (par exemple celle d'un site web) à\nune identité (`example.com`). La signature de\nl'autorité de certification (CA) garantit l'authenticité\ndu lien.\n"
        }
      ],
      "explanation": "Sans certificats, on aurait du mal à savoir si la clé\npublique reçue appartient bien au site qu'on croit\nvisiter. Le système des autorités de certification (CA)\ncrée une chaîne de confiance : votre navigateur fait\nconfiance à quelques racines, qui signent les\ncertificats des sites."
    },
    {
      "id": "q09",
      "difficulty": 1,
      "skills": [
        "exemple-symetrique"
      ],
      "title": "Exemple historique de chiffrement symétrique",
      "statement": "Lequel des chiffrements suivants est un chiffrement\n**symétrique** ?",
      "options": [
        {
          "text": "RSA",
          "correct": false,
          "feedback": "Erreur : RSA est asymétrique (clé publique/clé\nprivée).\n"
        },
        {
          "text": "ECDSA",
          "correct": false,
          "feedback": "Erreur : ECDSA est un algorithme de **signature**\n(asymétrique, à courbes elliptiques), pas de\nchiffrement symétrique.\n"
        },
        {
          "text": "Diffie-Hellman",
          "correct": false,
          "feedback": "Erreur : Diffie-Hellman est un protocole **d'échange\nde clés**, pas un chiffrement symétrique en lui-même.\n"
        },
        {
          "text": "AES (Advanced Encryption Standard)",
          "correct": true,
          "feedback": "Bonne réponse : AES est le standard moderne du\nchiffrement symétrique. Il a remplacé DES et 3DES\nen $2001$. Toujours largement utilisé en $2026$.\n"
        }
      ],
      "explanation": "Autres chiffrements symétriques : ChaCha$20$, Twofish,\nSerpent. Tous ont en commun l'utilisation d'une seule\nclé secrète partagée entre les parties."
    },
    {
      "id": "q10",
      "difficulty": 1,
      "skills": [
        "exemple-asymetrique"
      ],
      "title": "Exemple de chiffrement asymétrique",
      "statement": "Lequel des éléments suivants est un algorithme\n**asymétrique** ?",
      "options": [
        {
          "text": "SHA-$256$",
          "correct": false,
          "feedback": "Erreur : SHA-$256$ est une fonction de **hachage**,\npas un algorithme de chiffrement (et donc pas\nasymétrique).\n"
        },
        {
          "text": "AES",
          "correct": false,
          "feedback": "Erreur : AES est un chiffrement symétrique (clé\nunique partagée).\n"
        },
        {
          "text": "RSA",
          "correct": true,
          "feedback": "Bonne réponse : RSA est l'archétype des algorithmes\nasymétriques. Sa clé publique chiffre, sa clé privée\ndéchiffre. Il sert aussi pour les signatures\nnumériques.\n"
        },
        {
          "text": "ChaCha$20$",
          "correct": false,
          "feedback": "Erreur : ChaCha$20$ est un chiffrement symétrique\nmoderne.\n"
        }
      ],
      "explanation": "Autres asymétriques : ECC (cryptographie sur courbes\nelliptiques), DSA, ElGamal. Le chiffrement asymétrique\nest plus lent que le symétrique : on l'utilise donc\nsouvent uniquement pour échanger une clé symétrique,\nqui sert ensuite au gros du chiffrement."
    },
    {
      "id": "q11",
      "difficulty": 2,
      "skills": [
        "hybride"
      ],
      "title": "Chiffrement hybride",
      "statement": "Pourquoi TLS combine-t-il un chiffrement asymétrique et\nun chiffrement symétrique (chiffrement « hybride ») ?",
      "options": [
        {
          "text": "Le chiffrement asymétrique est lent ; on l'utilise donc juste pour échanger une clé symétrique, puis on chiffre les vraies données en 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 est 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 $3000$ 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": [
        "signature",
        "hachage"
      ],
      "title": "Signature et hachage",
      "statement": "Pour signer un long document, on ne signe généralement\npas le document lui-même. Que signe-t-on à sa place ?",
      "options": [
        {
          "text": "L'empreinte (hash) du document, calculée par une fonction de hachage cryptographique",
          "correct": true,
          "feedback": "Bonne réponse : on hache le document (par exemple\navec SHA-$256$) pour obtenir une empreinte de taille\nfixe, puis on signe cette empreinte. C'est plus\nrapide et tout aussi sûr (toute modification du\ndocument change l'empreinte).\n"
        },
        {
          "text": "Le mot de passe du signataire",
          "correct": false,
          "feedback": "Erreur : aucun rapport avec un mot de passe. La\nsignature utilise la clé **privée** du signataire.\n"
        },
        {
          "text": "Une partie aléatoire du document",
          "correct": false,
          "feedback": "Erreur : on ne signe pas une partie aléatoire, ce\nqui ne couvrirait pas tout le document.\n"
        },
        {
          "text": "Le titre du document uniquement",
          "correct": false,
          "feedback": "Erreur : signer le titre ne couvrirait pas le\ncontenu, donc ne protégerait pas l'intégrité.\n"
        }
      ],
      "explanation": "Cette technique permet de signer rapidement même un\ngros fichier (vidéo, ISO système). Les fonctions de\nhachage modernes (SHA-$256$, SHA-$3$) calculent\nl'empreinte d'un fichier de plusieurs gigaoctets en\nquelques secondes."
    },
    {
      "id": "q13",
      "difficulty": 2,
      "skills": [
        "stockage-mot-de-passe"
      ],
      "title": "Stockage des mots de passe",
      "statement": "Comment un site web bien conçu stocke-t-il les mots de\npasse de ses utilisateurs ?",
      "options": [
        {
          "text": "Sous forme d'empreinte (hash) calculée par une fonction de hachage adaptée (bcrypt, scrypt, Argon$2$), avec un sel unique",
          "correct": true,
          "feedback": "Bonne réponse : on stocke seulement l'empreinte. À\nla connexion, on hache le mot de passe saisi et on\ncompare. Le sel empêche les attaques par tables\nprécalculées (rainbow tables). Les fonctions\ncoûteuses (bcrypt) ralentissent les attaques par\nforce brute.\n"
        },
        {
          "text": "Effacés après chaque connexion",
          "correct": false,
          "feedback": "Erreur : il faudrait alors les redemander à chaque\nfois, ce qui n'est pas pratique. Et le problème de\nstockage subsisterait pour le mot de passe en\ncours d'utilisation.\n"
        },
        {
          "text": "Chiffrés avec une clé symétrique commune à tous les utilisateurs",
          "correct": false,
          "feedback": "Erreur : si la clé est compromise, tous les mots\nde passe le sont. De plus, on n'a pas besoin de\npouvoir déchiffrer les mots de passe.\n"
        },
        {
          "text": "En clair dans la base de données",
          "correct": false,
          "feedback": "Erreur : c'est une **mauvaise pratique** majeure. En\ncas de fuite de la base, tous les mots de passe\nseraient exposés.\n"
        }
      ],
      "explanation": "Les fonctions de hachage classiques (SHA-$256$) sont\ntrop rapides pour les mots de passe : un attaquant peut\nen tester des milliards par seconde sur GPU. Les\nfonctions « lentes » comme bcrypt sont conçues pour\nrésister à ces attaques massives."
    },
    {
      "id": "q14",
      "difficulty": 2,
      "skills": [
        "collision-hash"
      ],
      "title": "Collisions",
      "statement": "Pourquoi est-il important qu'une fonction de hachage\ncryptographique soit **résistante aux collisions** ?",
      "options": [
        {
          "text": "Pour gagner de la place en mémoire",
          "correct": false,
          "feedback": "Erreur : aucun rapport avec la mémoire. C'est une\npropriété de **sécurité**.\n"
        },
        {
          "text": "Pour éviter que deux documents différents puissent avoir la même empreinte, ce qui invaliderait les signatures numériques",
          "correct": true,
          "feedback": "Bonne réponse : si on peut trouver deux documents\n$A$ et $B$ ayant le même hash, on peut faire signer\n$A$ par quelqu'un puis prétendre qu'il a signé $B$.\nC'est une attaque par collision.\n"
        },
        {
          "text": "Pour accélérer le calcul",
          "correct": false,
          "feedback": "Erreur : la résistance aux collisions et la rapidité\nsont des propriétés indépendantes (parfois en\ntension : on veut « assez lent » pour les mots de\npasse).\n"
        },
        {
          "text": "Pour rendre le hash réversible",
          "correct": false,
          "feedback": "Erreur : un hash cryptographique ne doit\n**précisément pas** être réversible. La résistance\naux collisions est une autre propriété.\n"
        }
      ],
      "explanation": "MD$5$ et SHA-$1$, autrefois standards, ne sont plus\nconsidérés sûrs car des collisions ont été calculées\nexplicitement (Google, $2017$ pour SHA-$1$). Les\nfonctions modernes recommandées sont SHA-$256$ et la\nfamille SHA-$3$."
    },
    {
      "id": "q15",
      "difficulty": 2,
      "skills": [
        "authentification"
      ],
      "title": "Authentification mutuelle",
      "statement": "En TLS, le **serveur** prouve son identité au client via\nson certificat. Comment le **client** s'authentifie-t-il\nauprès du serveur (cas usuel sur le web) ?",
      "options": [
        {
          "text": "Par mot de passe (ou autre secret) saisi sur la page sécurisée par TLS, après l'établissement du canal chiffré",
          "correct": true,
          "feedback": "Bonne réponse : TLS ne fait par défaut\nqu'authentifier le **serveur**. Le client est ensuite\nidentifié au niveau **applicatif**, généralement par\nun mot de passe transmis dans le canal chiffré déjà\nétabli.\n"
        },
        {
          "text": "Le client envoie aussi un certificat, automatiquement géré par le navigateur",
          "correct": false,
          "feedback": "Erreur : la grande majorité des sites web n'exigent\npas de certificat client. C'est rare, réservé à des\ncontextes professionnels (banque, intranet\nd'entreprise).\n"
        },
        {
          "text": "Le client envoie son adresse email",
          "correct": false,
          "feedback": "Erreur : l'email seul n'est pas une preuve\nd'identité. Il sert d'identifiant, pas\nd'authentificateur.\n"
        },
        {
          "text": "Le client n'est jamais authentifié sur le web",
          "correct": false,
          "feedback": "Erreur : il l'est, mais à un niveau supérieur (par\nmot de passe, par exemple), pas par TLS.\n"
        }
      ],
      "explanation": "TLS établit donc un « tunnel sécurisé » côté serveur ;\nl'identification du client est ensuite la responsabilité\nde l'application web. La double authentification (mot\nde passe + code SMS ou TOTP) renforce cette étape."
    },
    {
      "id": "q16",
      "difficulty": 2,
      "skills": [
        "chiffrement-bout-en-bout"
      ],
      "title": "Chiffrement de bout en bout",
      "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": "Le message est chiffré par l'expéditeur et ne peut être déchiffré que par le destinataire, le serveur lui-même ne peut pas le lire",
          "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",
      "statement": "Quel principe permet à deux personnes qui n'ont\njamais communiqué auparavant d'établir une **clé\nsecrète commune** sur un canal pourtant **public** ?",
      "options": [
        {
          "text": "Utiliser un protocole asymétrique : chacun publie une clé publique, garde sa clé privée, et combine sa clé privée avec la clé publique de l'autre pour obtenir un secret partagé",
          "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 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é",
      "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 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 du site visité (via DNS et SNI), l'adresse IP, et le volume des échanges",
          "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": "Pour aller plus loin (cacher même le site visité), il\nfaut utiliser un VPN ou Tor. DNS-over-HTTPS (DoH) ou\nDNS-over-TLS (DoT) chiffrent la résolution DNS, mais\nl'IP et le SNI restent visibles dans la plupart des\ncas."
    },
    {
      "id": "q19",
      "difficulty": 2,
      "skills": [
        "csar"
      ],
      "title": "Chiffrement de César",
      "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, il existe seulement $26$ clés possibles, donc on peut toutes les essayer en quelques secondes",
          "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)",
      "statement": "Le chiffrement de **Vernam** (ou *one-time pad*) est :",
      "options": [
        {
          "text": "Un chiffrement faible facilement cassable",
          "correct": false,
          "feedback": "Erreur : c'est en réalité le seul chiffrement\n**prouvé incassable** mathématiquement. Mais il a\ndes contraintes pratiques.\n"
        },
        {
          "text": "Le seul chiffrement prouvé incassable, à condition que la clé soit aléatoire, aussi longue que le message, et utilisée une seule fois",
          "correct": true,
          "feedback": "Bonne réponse : Shannon a prouvé que ces conditions\nsont nécessaires et suffisantes pour la sécurité\nparfaite. Il a été utilisé pour le téléphone rouge\n(ligne directe Washington-Moscou).\n"
        },
        {
          "text": "Un type de signature numérique",
          "correct": false,
          "feedback": "Erreur : c'est un chiffrement, pas une signature.\n"
        },
        {
          "text": "Un chiffrement utilisé pour les SMS",
          "correct": false,
          "feedback": "Erreur : aucun rapport avec les SMS.\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": "q21",
      "difficulty": 3,
      "skills": [
        "vulnerabilite"
      ],
      "title": "Attaque par rejeu",
      "statement": "Dans une **attaque par rejeu** (*replay attack*) :",
      "options": [
        {
          "text": "L'attaquant change le contenu du message",
          "correct": false,
          "feedback": "Erreur : c'est plutôt une attaque par modification\n(interceptée par les codes d'authentification de\nmessage, MAC).\n"
        },
        {
          "text": "L'attaquant capture un message valide chiffré et le renvoie plus tard pour faire effectuer une action déjà autorisée",
          "correct": true,
          "feedback": "Bonne réponse : sans mécanisme anti-rejeu (numéro\nde séquence, horodatage, nonce), un attaquant peut\nrejouer une transaction passée (par exemple, un\nvirement bancaire) sans même connaître la clé. Le\nchiffrement seul ne protège pas contre cela.\n"
        },
        {
          "text": "Le serveur tombe en panne",
          "correct": false,
          "feedback": "Erreur : aucun rapport avec une panne.\n"
        },
        {
          "text": "L'attaquant déchiffre tous les messages",
          "correct": false,
          "feedback": "Erreur : le rejeu n'implique pas le déchiffrement.\nC'est même son intérêt, l'attaquant n'a pas besoin\nde connaître la clé.\n"
        }
      ],
      "explanation": "Les protocoles modernes (TLS, SSH, etc.) intègrent des\nprotections anti-rejeu : numéros de séquence,\ntimestamps, nonces uniques. C'est crucial pour la\nsécurité réelle."
    },
    {
      "id": "q22",
      "difficulty": 2,
      "skills": [
        "cle-publique",
        "usage"
      ],
      "title": "Que faire avec une clé publique ?",
      "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 son message avec la clé publique de Bob ; seul Bob, qui possède la clé privée correspondante, pourra le déchiffrer",
          "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 ?",
      "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 tous les messages chiffrés à destination de Bob avec sa clé publique",
          "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": [
        "comparaison"
      ],
      "title": "Symétrique vs asymétrique",
      "statement": "Pour un même niveau de sécurité, quelle est la différence\nde taille de clé entre un chiffrement symétrique (AES)\net un chiffrement asymétrique (RSA) ?",
      "options": [
        {
          "text": "Les clés asymétriques sont beaucoup plus longues : AES $128$ bits ≈ RSA $3072$ bits",
          "correct": true,
          "feedback": "Bonne réponse : la sécurité d'un chiffrement\nsymétrique de $n$ bits demande $2^n$ opérations à\nl'attaquant (force brute). Pour un chiffrement\nasymétrique, des algorithmes plus malins existent\n(factorisation, log discret), donc il faut des clés\nplus longues pour atteindre le même niveau.\n"
        },
        {
          "text": "Les deux utilisent des clés de même taille",
          "correct": false,
          "feedback": "Erreur : pour des raisons mathématiques, les clés\nasymétriques doivent être beaucoup plus longues\npour offrir une sécurité équivalente.\n"
        },
        {
          "text": "Aucun rapport entre les deux tailles",
          "correct": false,
          "feedback": "Erreur : il y a un rapport établi par les meilleurs\nalgorithmes connus pour casser chaque type.\n"
        },
        {
          "text": "Les clés symétriques sont plus longues",
          "correct": false,
          "feedback": "Erreur : c'est l'inverse.\n"
        }
      ],
      "explanation": "Équivalences approximatives recommandées par le NIST :\nAES $128$ ≈ RSA $3072$, AES $256$ ≈ RSA $15360$. Cela\nexplique en partie pourquoi le chiffrement asymétrique\nest plus lent."
    },
    {
      "id": "q25",
      "difficulty": 3,
      "skills": [
        "synthese"
      ],
      "title": "Sécurité et facteur humain",
      "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é",
          "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 : ingénierie sociale, mots de passe faibles, hameçonnage, mauvaises configurations",
          "correct": true,
          "feedback": "Bonne réponse : les meilleurs systèmes\ncryptographiques sont contournés par des erreurs\nhumaines : mots de passe réutilisés, clic sur un\nmail de hameçonnage, mots de passe collés sur un\npost-it, mauvaise configuration de serveur. La\nformation des utilisateurs est aussi importante que\nla technique.\n"
        },
        {
          "text": "Le langage de programmation",
          "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 utilisé",
          "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": "Maxime de Bruce Schneier : « La sécurité est un\nprocessus, pas un produit. » L'aspect humain\n(formation, hygiène numérique, processus\norganisationnels) est aussi crucial que les\nalgorithmes."
    },
    {
      "id": "q26",
      "difficulty": 3,
      "skills": [
        "diffie-hellman"
      ],
      "title": "Échange de clés Diffie-Hellman",
      "statement": "Le protocole de **Diffie-Hellman** ($1976$) résout\nle problème suivant : deux personnes qui n'ont\njamais communiqué auparavant peuvent établir une\nclé secrète commune sur un canal **public**, sans\nqu'aucun observateur ne puisse la deviner. Sur\nquelle propriété mathématique repose-t-il ?",
      "options": [
        {
          "text": "La difficulté du problème du logarithme discret :\nétant donné $g$, $p$ et $g^a \\mod p$, il est\ndifficile de retrouver $a$\n",
          "correct": true,
          "feedback": "Bonne réponse : Alice choisit $a$ secret et\nenvoie $g^a \\mod p$ ; Bob choisit $b$ secret\net envoie $g^b \\mod p$. Chacun calcule\nensuite $(g^b)^a = (g^a)^b = g^{ab} \\mod p$,\nqui est la clé commune. Un attaquant qui voit\n$g^a$ et $g^b$ ne peut pas calculer $g^{ab}$\nsans résoudre le logarithme discret, qui\nn'a pas d'algorithme efficace connu.\n"
        },
        {
          "text": "La difficulté de calculer une racine carrée\n",
          "correct": false,
          "feedback": "Erreur : la racine carrée se calcule en temps\npolynomial. La sécurité de Diffie-Hellman ne\npeut donc pas reposer dessus.\n"
        },
        {
          "text": "La difficulté de factoriser un grand nombre\n",
          "correct": false,
          "feedback": "Erreur : c'est la base de RSA, pas de Diffie-\nHellman. Diffie-Hellman repose sur le\nlogarithme discret, qui est un autre problème\ndifficile (mais lié).\n"
        },
        {
          "text": "Le simple secret du nombre $p$\n",
          "correct": false,
          "feedback": "Erreur : $p$ est public dans Diffie-Hellman.\nLa sécurité repose sur le secret de $a$ et\n$b$ (les exposants privés), pas sur celui de\n$p$.\n"
        }
      ],
      "explanation": "Diffie-Hellman est un jalon historique : il a\nintroduit l'idée d'**échange de clé** sans secret\npartagé préalable, brisant un dogme millénaire de\nla cryptographie. C'est encore aujourd'hui la\nbase de l'établissement des sessions TLS (en\nversion « éphémère » ECDHE pour la confidentialité\npersistante)."
    },
    {
      "id": "q27",
      "difficulty": 2,
      "skills": [
        "authentification-multi-facteur"
      ],
      "title": "Authentification multi-facteur",
      "statement": "L'authentification multi-facteur (souvent appelée\n« 2FA ») renforce la sécurité d'une connexion en\ncombinant plusieurs preuves d'identité. Sur quel\nprincipe repose-t-elle ?",
      "options": [
        {
          "text": "Demander à l'utilisateur deux mots de passe\ndifférents\n",
          "correct": false,
          "feedback": "Erreur : deux mots de passe restent dans la\nmême catégorie (ce que l'on connaît).\nL'attaquant qui hameçonne la victime obtient\nles deux. La sécurité réelle vient de la\n**diversité** des catégories.\n"
        },
        {
          "text": "Chiffrer le mot de passe avant l'envoi\n",
          "correct": false,
          "feedback": "Erreur : le chiffrement est déjà assuré par\nHTTPS. L'authentification multi-facteur\najoute une **deuxième barrière**, pas une\nvariante du mot de passe.\n"
        },
        {
          "text": "Augmenter la longueur du mot de passe\n",
          "correct": false,
          "feedback": "Erreur : augmenter la longueur (ou la\ncomplexité) renforce la résistance à la\nforce brute, mais ne protège pas contre le\nhameçonnage ou les fuites. Le multi-facteur\nrépond à un autre type de menace.\n"
        },
        {
          "text": "Combiner deux facteurs de catégories\ndifférentes : ce que l'on connaît (mot\nde passe), ce que l'on possède (téléphone,\nclé physique), ce que l'on est (empreinte,\nvisage). Compromettre un seul facteur ne\nsuffit alors plus à se faire passer pour\nl'utilisateur\n",
          "correct": true,
          "feedback": "Bonne réponse : la force vient du fait que\nles facteurs sont indépendants. Un attaquant\nqui obtient le mot de passe par hameçonnage\nne peut pas pour autant valider la\nconnexion, car il manque l'autre facteur\n(téléphone, clé). Les modes courants : code\nenvoyé par SMS, code généré par application\n(TOTP), clé physique (FIDO2), reconnaissance\nbiométrique.\n"
        }
      ],
      "explanation": "L'authentification multi-facteur est l'une des\nmesures les plus efficaces pour réduire les\nattaques sur les comptes. Recommandée pour\ntous les comptes sensibles (banque, mail, GAFAM).\nPrivilégier TOTP ou clé FIDO2 plutôt que SMS,\nqui peut être intercepté."
    },
    {
      "id": "q28",
      "difficulty": 2,
      "skills": [
        "chiffrement-vs-encodage"
      ],
      "title": "Chiffrement et encodage",
      "statement": "On confond souvent **chiffrement** et **encodage**\n(par exemple Base$64$). Quelle est la différence\nfondamentale ?",
      "options": [
        {
          "text": "Le chiffrement utilise une clé secrète pour\nrendre les données illisibles sans elle ;\nl'encodage est une transformation\nréversible publique (sans clé), qui ne\nprotège pas la confidentialité mais facilite\nla transmission ou la représentation\n",
          "correct": true,
          "feedback": "Bonne réponse : Base$64$ encode des octets en\ncaractères ASCII pour traverser des protocoles\ntexte (mail, URL). N'importe qui peut décoder\ndu Base$64$ : ce n'est pas un chiffrement.\nConfondre les deux est une erreur fréquente\n(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 : « j'ai mis le mot\nde passe en Base$64$, il est en sécurité ». Faux !\nBase$64$ se décode en une commande\n(`base64 -d` sous Linux). Pour la confidentialité,\nil faut un véritable chiffrement (AES, par exemple)\navec une clé secrète. L'encodage est utile pour\nd'autres raisons : transport, lisibilité,\ncompatibilité de format."
    },
    {
      "id": "q29",
      "difficulty": 3,
      "skills": [
        "rsa-petits-nombres"
      ],
      "title": "Trace de RSA avec petits nombres",
      "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\n$64 \\mod 55 = 64 - 55 = 9$. Le message\nchiffré est donc $9$. Pour vérifier le\ndéchiffrement avec la clé privée\n$d = 27$, on calcule\n$c^d \\mod N = 9^{27} \\mod 55 = 4$ (le\nmessage original est bien retrouvé).\nC'est l'identité d'Euler qui garantit\nce mécanisme : $m^{e \\cdot d} \\equiv m\n\\pmod{N}$ pour tout $m$ premier avec $N$.\n"
        },
        {
          "text": "$12$",
          "correct": false,
          "feedback": "Erreur de calcul : $4^3 = 64$, et\n$64 - 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- 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."
    },
    {
      "id": "q30",
      "difficulty": 3,
      "skills": [
        "vigenere"
      ],
      "title": "Chiffrement de Vigenère",
      "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 du clair\ndécalée selon la lettre correspondante\nde la clé répétée)\n",
          "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": [
        "cryptanalyse-cesar"
      ],
      "title": "Cryptanalyse de César par fréquences",
      "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$ (vers la droite)",
          "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$. C'est\nd'ailleurs le décalage historiquement\nattribué à Jules César. 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é."
    },
    {
      "id": "q32",
      "difficulty": 3,
      "skills": [
        "signature-trace"
      ],
      "title": "Signature numérique étape par étape",
      "statement": "Alice veut envoyer un document signé à Bob.\nQuelle est la séquence correcte des\nopérations effectuées par Alice (côté\németteur) ?",
      "options": [
        {
          "text": "Alice n'a rien à faire, sa signature est\najoutée automatiquement par le système\nd'exploitation\n",
          "correct": false,
          "feedback": "Erreur : la signature numérique est un\nprocessus actif qui demande la clé\nprivée d'Alice. Aucun système ne peut\nsigner à sa place sans accéder à cette\nclé.\n"
        },
        {
          "text": "Alice chiffre le document avec la clé\npublique de Bob\n",
          "correct": false,
          "feedback": "Erreur : c'est la procédure pour\nassurer la **confidentialité** (Bob\nseul pourra lire), pas pour signer.\nPour signer, il faut au contraire\nutiliser la clé **privée d'Alice**, ce\nqui prouve que c'est bien elle qui a\nsigné.\n"
        },
        {
          "text": "Alice (1) calcule l'empreinte $h$ du\ndocument avec une fonction de hachage\ncomme SHA-$256$, puis (2) chiffre cette\nempreinte avec sa clé privée pour\nobtenir la signature $s$, puis (3)\nenvoie le document accompagné de la\nsignature $s$\n",
          "correct": true,
          "feedback": "Bonne réponse : signer = chiffrer\nl'empreinte avec **sa propre clé\nprivée**. À la réception, Bob déchiffre\n$s$ avec la **clé publique d'Alice**\n(pour obtenir $h$), recalcule\nl'empreinte du document reçu, et\ncompare. Si les deux empreintes\ncoïncident, la signature est valide.\nLa sécurité repose sur le fait que\nseule Alice possède sa clé privée.\n"
        },
        {
          "text": "Alice chiffre le document complet avec\nsa clé privée\n",
          "correct": false,
          "feedback": "Faux pour deux raisons. Première :\nchiffrer avec sa **clé privée** ne sert\npas à protéger le document (n'importe\nqui peut le lire avec la clé publique\nd'Alice), mais à le **signer**. Deuxième :\non ne signe pas le document complet\nmais seulement son empreinte, pour des\nraisons de performance. Hacher un\nfichier de plusieurs gigaoctets et\nsigner le hash est très rapide ;\nchiffrer le fichier complet en\nasymétrique serait extrêmement lent.\n"
        }
      ],
      "explanation": "Pour la vérification, Bob applique\nl'opération inverse : (1) il applique la\nmême fonction de hachage au document reçu\npour obtenir $h'$, (2) il déchiffre la\nsignature $s$ avec la clé publique\nd'Alice pour obtenir $h$, (3) il compare\n$h$ et $h'$. Si égaux : signature valide\n(le document n'a pas été altéré et\nl'expéditeur dispose bien de la clé\nprivée d'Alice). C'est sur ce principe\nque reposent les certificats TLS, les\ntransactions bancaires sécurisées, et\nles pièces d'identité électroniques."
    }
  ]
}