Du chiffre manuel au chiffrement moderne
- Accueil
- Cryptographie
- Du chiffre manuel au chiffrement moderne
Du chiffre manuel au chiffrement moderne
Section intitulée « Du chiffre manuel au chiffrement moderne »Les chiffres historiques ont un mérite rare : ils échouent de façon visible. Un chiffre de César se casse sur un coin de table, un chiffre de Vigenère résiste une soirée, et chacun de ces échecs enseigne une règle que la cryptographie moderne a fini par écrire noir sur blanc. Ce chapitre se sert de ces systèmes comme d’un laboratoire, puis passe au XOR (ou exclusif) et au masque à usage unique, aux deux grandes familles de chiffrement, et enfin à la première formalisation sérieuse de ce que « chiffrer » veut dire. Le fil conducteur tient en une phrase : rendre un texte illisible ne suffit ni à le protéger, ni à garantir qu’on ne l’a pas modifié.
Les messages codés des carnets d’enfance, où chaque lettre en remplace une autre, amusent beaucoup mais ne résistent pas longtemps à un esprit patient. Ce chapitre part de ces jeux anciens pour montrer pourquoi les protections d’aujourd’hui demandent bien davantage : de vraies clés, des règles d’emploi précises et un moyen de s’assurer que personne n’a touché au message.
→ Lire l’explication complète de la marmotte
Les chiffres historiques comme laboratoire
Section intitulée « Les chiffres historiques comme laboratoire »Substitution monoalphabétique
Section intitulée « Substitution monoalphabétique »Une substitution monoalphabétique remplace chaque lettre du clair par une lettre fixe du chiffré. Le chiffre de César en est la version minimale : un décalage de trois positions, A devient D, B devient E, et ainsi de suite. Avec vingt-six décalages possibles, dont un qui ne chiffre rien, l’essai exhaustif tient en quelques secondes à la main. La substitution quelconque, où l’alphabet chiffré est une permutation arbitraire, semble bien plus robuste : il existe 26! permutations, soit environ 4 × 10²⁶, l’équivalent d’une clé de 88 bits. Sur le papier, c’est plus que le DES (Data Encryption Standard) et ses 56 bits.
Sur le papier seulement. La substitution conserve la structure de la langue : la lettre la plus fréquente du clair devient la lettre la plus fréquente du chiffré, les doublets restent des doublets, un mot de trois lettres répété reste un mot de trois lettres répété. En français, le E dépasse couramment 14 % des lettres d’un texte, suivi de A, S, I, N, T, R. L’analyse des fréquences, décrite dès le IXᵉ siècle par le savant arabe al-Kindi, consiste à aligner ces deux classements, puis à corriger à l’aide des mots probables. Le nombre de clés n’a aucune importance si l’attaque n’a jamais besoin de les parcourir : c’est la première leçon, et elle reviendra dans chaque chapitre de cryptanalyse.
Polyalphabétique
Section intitulée « Polyalphabétique »Le chiffre de Vigenère, décrit au XVIᵉ siècle, répond à ce défaut en utilisant plusieurs alphabets décalés, choisis tour à tour par les lettres d’un mot-clé. Avec la clé LUNE, la première lettre est décalée de 11, la deuxième de 20, la troisième de 13, la quatrième de 4, puis le cycle recommence. Un même E du clair produit ainsi des lettres différentes selon sa position, et l’histogramme du chiffré s’aplatit.
L’aplatissement n’est qu’apparent. La clé étant périodique, toutes les lettres situées à une même position modulo la longueur de clé subissent le même décalage : le chiffré est en réalité l’entrelacement de quatre César. Il reste à trouver la période. La méthode de Kasiski, publiée en 1863, repère les séquences répétées dans le chiffré et calcule le plus grand diviseur commun de leurs écarts. L’indice de coïncidence, introduit par William Friedman en 1922, mesure la probabilité que deux lettres tirées au hasard dans un texte soient identiques : environ 0,078 pour un texte français, 0,038 pour un texte uniformément aléatoire sur 26 lettres. En découpant le chiffré selon chaque période candidate, la bonne période est celle qui fait remonter l’indice vers 0,078 dans chaque colonne. Chaque colonne se casse ensuite comme un César.
Transposition
Section intitulée « Transposition »La transposition ne remplace aucune lettre : elle les déplace. La scytale spartiate enroulait une bande autour d’un bâton ; la transposition par colonnes écrit le message en lignes sous un mot-clé et le relit colonne par colonne dans l’ordre alphabétique des lettres du mot-clé. Le chiffré est une anagramme du clair, ce qui se détecte immédiatement : ses fréquences sont exactement celles de la langue. L’attaque consiste à reconstituer les colonnes en cherchant les paires de lettres plausibles (QU, ES, NT). Combiner substitution et transposition, comme le faisait le chiffre allemand ADFGVX en 1918, complique nettement le travail, et cette combinaison de confusion et de diffusion annonce la structure des chiffrements par blocs modernes, présentés dans Chiffrer par blocs.
Ce que les fréquences révèlent
Section intitulée « Ce que les fréquences révèlent »Toutes ces attaques partagent un ressort : le chiffré conserve une régularité du clair. Un bon chiffrement doit produire une sortie dont aucune statistique ne dépend du message, sinon l’adversaire n’a qu’à compter. Cette exigence, formalisée plus loin, interdit d’emblée de juger un procédé au seul nombre de ses clés.
XOR et masque unique
Section intitulée « XOR et masque unique »Opération bit à bit
Section intitulée « Opération bit à bit »Le XOR combine deux bits : le résultat vaut 1 si les bits diffèrent, 0 s’ils sont égaux. Il possède trois propriétés qui en font l’outil de base du chiffrement : il est sa propre inverse (a ⊕ b ⊕ b = a), il est commutatif et associatif, et le XOR d’un bit quelconque avec un bit uniformément aléatoire donne un bit uniformément aléatoire. Sur des octets, 0x48 ⊕ 0x5A = 0x12, et 0x12 ⊕ 0x5A redonne 0x48, soit le H de l’ASCII.
Clé aussi longue que le message
Section intitulée « Clé aussi longue que le message »Le masque à usage unique, ou chiffre de Vernam, applique cette opération entre le message et une clé aléatoire de même longueur, utilisée une seule fois. Gilbert Vernam a breveté le principe à la fin des années 1910 pour les téléimprimeurs ; Claude Shannon a démontré en 1949 que le système atteint la sécurité parfaite : le chiffré n’apporte strictement aucune information sur le clair, quelle que soit la puissance de calcul de l’adversaire. Le même chiffré de 5 octets peut correspondre à OUI!!, à NON!! ou à PEUT? selon la clé, et toutes ces clés sont équiprobables.
Shannon a aussi montré le prix de cette perfection : toute sécurité parfaite exige une clé au moins aussi longue que l’ensemble des messages à protéger. Il faut donc produire, transporter et détruire autant de matériel secret que de données, ce qui déplace le problème plutôt que de le résoudre. Le masque unique a servi aux liaisons diplomatiques où un courrier pouvait transporter des carnets de clés ; il ne sert pas à chiffrer un disque.
Risque de réutilisation
Section intitulée « Risque de réutilisation »Si la même clé K chiffre deux messages, C1 = M1 ⊕ K et C2 = M2 ⊕ K, alors C1 ⊕ C2 = M1 ⊕ M2. La clé disparaît et il reste le XOR de deux textes en langue naturelle, que l’on démêle en essayant des mots probables à chaque position, technique dite du crib dragging. Le programme américain Venona a ainsi déchiffré, à partir des années 1940, une partie des communications soviétiques dont les carnets de masque avaient été réimprimés et réutilisés. Le mot « unique » n’est pas décoratif.
Intuition de la sécurité informationnelle
Section intitulée « Intuition de la sécurité informationnelle »La sécurité du masque unique est dite informationnelle, ou inconditionnelle : elle ne repose sur aucune hypothèse de difficulté calculatoire. Les chiffrements modernes renoncent à cette perfection et visent une sécurité calculatoire : casser le système est possible en théorie, mais coûte plus de calcul que l’adversaire n’en dispose, par exemple 2¹²⁸ opérations. C’est ce compromis qui autorise une clé de 32 octets à chiffrer des téraoctets. Le chiffrement par flot moderne imite le masque unique en produisant un flux pseudo-aléatoire à partir d’une clé courte ; il en hérite exactement la même interdiction de réutilisation, détaillée dans Chiffrement par flot.
Symétrique et asymétrique
Section intitulée « Symétrique et asymétrique »Secret partagé
Section intitulée « Secret partagé »Le chiffrement symétrique utilise la même clé pour chiffrer et déchiffrer. Les deux interlocuteurs doivent donc la partager à l’avance, par un canal sûr. Les algorithmes modernes de cette famille, comme l’AES (Advanced Encryption Standard) ou ChaCha20, sont rapides : plusieurs gigaoctets par seconde sur un processeur courant équipé d’instructions dédiées. Leur difficulté n’est pas le calcul, c’est la distribution des clés : avec n participants qui veulent chacun un canal privé, il faut n(n−1)/2 clés, soit 4 950 pour cent personnes.
Paire publique et privée
Section intitulée « Paire publique et privée »Le chiffrement asymétrique, ouvert par Diffie et Hellman en 1976 puis par RSA en 1977, sépare les deux rôles : une clé publique chiffre, seule la clé privée correspondante déchiffre. La clé publique peut se diffuser sans précaution de confidentialité, ce qui supprime le canal secret préalable, mais pas le besoin d’authentifier la clé publique : chiffrer pour la mauvaise clé, c’est chiffrer pour l’attaquant. Les mécanismes qui rattachent une clé à une identité sont traités dans Relier une clé à une identité.
Une confusion tenace consiste à présenter la signature comme un « chiffrement avec la clé privée ». La formule vient d’une coïncidence algébrique de RSA dans sa version manuelle ; elle est fausse en général, fausse pour RSA avec un remplissage moderne, et dangereuse dans les esprits, car elle mélange un objectif de confidentialité et un objectif de preuve d’origine. Les signatures ont leur chapitre, Signer numériquement.
Raison d’être des schémas hybrides et coûts différents
Section intitulée « Raison d’être des schémas hybrides et coûts différents »Les opérations asymétriques coûtent cher : un déchiffrement RSA 2048 bits demande de l’ordre d’une milliseconde, quand AES traite dans le même temps plusieurs mégaoctets. Elles ne chiffrent en outre que de petits blocs. D’où le schéma hybride, universel : l’asymétrique sert à établir ou à transporter une clé symétrique aléatoire, et le symétrique chiffre les données. TLS (Transport Layer Security), OpenPGP, S/MIME et les messageries chiffrées suivent tous ce modèle, décrit dans Établir une clé.
Première formalisation
Section intitulée « Première formalisation »Confidentialité face à un adversaire choisi
Section intitulée « Confidentialité face à un adversaire choisi »La cryptographie moderne définit la sécurité par un jeu. Dans le jeu IND-CPA (indistinguabilité sous attaque à clairs choisis), l’adversaire peut faire chiffrer les messages de son choix, puis propose deux messages de même longueur ; on lui rend le chiffré de l’un des deux, tiré au hasard. Le schéma est sûr si l’adversaire ne devine pas lequel avec une probabilité sensiblement meilleure qu’une pièce de monnaie. Deux conséquences immédiates : un chiffrement déterministe, qui donne toujours le même chiffré pour le même clair, échoue au jeu, puisque l’adversaire n’a qu’à faire chiffrer les deux candidats et comparer ; et tout schéma sûr doit donc injecter de l’aléa ou un nonce à chaque chiffrement. Le jeu IND-CCA2 ajoute un oracle de déchiffrement pour tout chiffré autre que celui du défi, ce qui modélise un serveur qui déchiffre ce qu’on lui envoie et laisse transparaître le résultat.
Malléabilité
Section intitulée « Malléabilité »Un chiffrement est malléable quand une modification contrôlée du chiffré produit une modification prévisible du clair. Le masque unique et tout chiffrement par flot le sont totalement : inverser le bit i du chiffré inverse le bit i du clair. Si un virement de 0100 euros est chiffré ainsi et que l’attaquant connaît le format, il XORe la position concernée avec 0100 ⊕ 9100 et le destinataire déchiffre 9100, sans erreur et sans soupçon. La sécurité parfaite au sens de Shannon ne dit rien là-dessus : elle concerne ce que l’on apprend, pas ce que l’on peut altérer.
Authentification du chiffré et pourquoi le chiffrement seul est incomplet
Section intitulée « Authentification du chiffré et pourquoi le chiffrement seul est incomplet »La réponse est l’AEAD (Authenticated Encryption with Associated Data), qui chiffre et calcule une étiquette d’authentification sur le chiffré et sur des données associées laissées en clair, comme un en-tête. Toute modification fait échouer le déchiffrement, qui ne rend alors aucun clair. AES-GCM et ChaCha20-Poly1305 (RFC 8439) sont les deux constructions courantes. Un AEAD correctement employé atteint la sécurité IND-CCA2, précisément parce que l’oracle de déchiffrement ne répond plus qu’« invalide » aux chiffrés fabriqués. Le détail des constructions figure dans Chiffrer et authentifier en une seule construction.
Exemples et ateliers
Section intitulée « Exemples et ateliers »Casser une substitution par les fréquences
Section intitulée « Casser une substitution par les fréquences »Sur un chiffré de quelques centaines de lettres, un comptage suffit à lancer l’attaque :
# Fréquences des lettres d'un chiffré, triées par ordre décroissanttr -cd 'A-Z' < chiffre.txt | fold -w1 | sort | uniq -c | sort -rn | headSi K arrive en tête avec 15 % et W en deuxième, l’hypothèse de départ est K pour E et W pour A ou S. On remplace, on cherche les mots courts (LE, DE, LES, QUE), on corrige. Un texte de 300 lettres tombe en général en moins d’une heure, un texte de 30 lettres résiste bien plus longtemps : la cryptanalyse statistique se nourrit de volume, ce qui explique pourquoi une clé qui chiffre beaucoup s’use.
Deux messages XORés avec la même clé
Section intitulée « Deux messages XORés avec la même clé »import osk = os.urandom(16)c1 = bytes(a ^ b for a, b in zip(b"RENDEZ-VOUS A 9H", k))c2 = bytes(a ^ b for a, b in zip(b"CODE PORTE: 4471", k))x = bytes(a ^ b for a, b in zip(c1, c2)) # = M1 xor M2, la clé a disparu# Hypothèse : M1 commence par "RENDEZ"print(bytes(a ^ b for a, b in zip(x, b"RENDEZ"))) # b'CODE P'Une seule hypothèse juste sur six octets du premier message livre six octets du second. On prolonge ensuite les deux textes en alternance, et la clé elle-même se reconstitue au passage.
Chiffrement jouet contre API AEAD
Section intitulée « Chiffrement jouet contre API AEAD »Le chiffrement jouet XOR avec une clé répétée ne prend ni nonce ni étiquette, rend le même chiffré pour le même clair et accepte n’importe quelle altération. Une API AEAD, par exemple celle de la bibliothèque Python cryptography, impose au contraire tous les éléments manquants :
from cryptography.hazmat.primitives.ciphers.aead import AESGCMimport oscle = AESGCM.generate_key(bit_length=256)nonce = os.urandom(12) # unique pour chaque chiffrementct = AESGCM(cle).encrypt(nonce, b"virement 0100", b"en-tete v1")# Un seul bit modifié dans ct : decrypt lève InvalidTag au lieu de rendre un clairLa comparaison montre ce que la modernité a ajouté : de l’aléa par message, une étiquette d’intégrité, des données associées liées au chiffré, et un refus net en cas de doute.
Pièges classiques
Section intitulée « Pièges classiques »Inventer un algorithme et compter sur le secret de sa conception viole le principe énoncé par Auguste Kerckhoffs en 1883 : un système doit rester sûr même si tout, sauf la clé, tombe aux mains de l’ennemi. Un algorithme se rétro-conçoit à partir d’un binaire, une clé se change en une minute. Réutiliser un masque unique, même « juste pour un test », détruit sa seule propriété. Confondre chiffrement asymétrique et signature conduit à des protocoles qui croient prouver l’origine d’un message alors qu’ils ne font que le cacher, ou l’inverse. Enfin, présenter un chiffre historique comme utilisable en production relève de la reconstitution historique, pas de la sécurité : un Vigenère dans un fichier de configuration protège exactement autant qu’un post-it retourné.
À ne pas confondre
Section intitulée « À ne pas confondre »Le masque à usage unique et le chiffrement par flot moderne partagent l’opération XOR et l’interdiction de réutilisation, mais le premier exige une clé aussi longue que les données et offre une sécurité parfaite, quand le second étire une clé courte et n’offre qu’une sécurité calculatoire. Une permutation de bloc comme AES transforme 16 octets et rien de plus ; le mode opératoire, traité dans Transformer un bloc en chiffrement de message, décide comment chiffrer un message entier, et c’est souvent là que les erreurs se logent. La confidentialité empêche de lire, l’intégrité empêche de modifier sans être détecté : un schéma peut avoir l’une sans l’autre. Le hachage, enfin, n’est pas un chiffrement : il n’a pas de clé et ne se déchiffre pas, il produit une empreinte, comme l’explique Condensés cryptographiques.
🐝 Ce qui arrive si on s’en passe
Section intitulée « 🐝 Ce qui arrive si on s’en passe »Un chiffrement maison dont toute la force repose sur le secret de sa méthode cesse de protéger le jour où quelqu’un lit le programme qui l’applique, et ce jour-là tous les messages passés tombent ensemble : une méthode ne se remplace pas en un après-midi comme une clé compromise. Les chiffres historiques conservés « pour l’archive » ont un défaut voisin : l’analyse des régularités n’a besoin que du texte chiffré, si bien que chaque copie gardée, sauvegardée ou transmise reste lisible par quiconque la récupère, dix ans plus tard comme le jour même. La ruche croit avoir fermé sa porte ; elle l’a seulement peinte en noir.
🦫 Explication de la marmotte 🍫
Section intitulée « 🦫 Explication de la marmotte 🍫 »Les chiffres anciens transforment un message en remplaçant chaque lettre par une autre, c’est la substitution, ou en changeant l’ordre des lettres, c’est la transposition. Leur faiblesse vient de la langue elle-même : certaines lettres reviennent plus souvent que d’autres, et ces fréquences se retrouvent dans le texte chiffré. En comptant les symboles, on retrouve peu à peu le message sans connaître la clé. Le masque à usage unique corrige ce défaut : on combine chaque bit du message (un chiffre 0 ou 1) avec un bit d’une clé aléatoire aussi longue que lui, par une opération appelée « ou exclusif ». Tant que la clé ne sert qu’une fois, le résultat ne révèle rien. Si elle sert deux fois, combiner les deux textes chiffrés fait disparaître la clé et laisse apparaître un mélange des deux messages. Les méthodes modernes forment deux familles : le chiffrement symétrique, où les deux personnes partagent le même secret, et le chiffrement asymétrique, qui utilise une clé publique et une clé privée ; on les combine souvent, parce qu’ils n’ont pas le même coût. Enfin, rendre un message illisible ne suffit pas : un texte chiffré peut être modifié sans être lu, et le destinataire ne s’en apercevrait pas. Il faut donc ajouter une vérification qui refuse tout message altéré, ce que font les procédés de chiffrement authentifié.
À lire aussi
- Parler le langage des clés, des messages et des attaquantsDonner un vocabulaire stable pour lire tout le reste du site et éviter les confusions récurrentes entre clé, nonce, sel, tag, certificat et secret.
- Évaluer la force d’une protectionExpliquer comment raisonner en bits de sécurité, en durée de confidentialité et en coût réel d’attaque, sans réduire la décision à la longueur d’une clé.
- Protéger une information en environnement hostilePoser les quatre garanties cryptographiques de base, distinguer primitive et système, et délimiter ce que la cryptographie ne répare jamais.
- Choisir, combiner et migrer les algorithmes symétriquesRegrouper les décisions pratiques: choix d’algorithme, combinaison, surchiffrement, compatibilité matérielle et retrait des options faibles.
Pages voisines
La citent
Du chiffre manuel au chiffrement moderne
Elle cite
- Lien dans les deux sens :Chiffrement par flot : état, compteurs et réutilisation interdite
- Lien dans les deux sens :Comprendre la cryptanalyse sans perdre le fil pratique
- Chiffrer et authentifier en une seule construction
- Chiffrer par blocs : de l’héritage DES à AES
- Condensés cryptographiques : propriétés, constructions et familles
- Établir une clé : Diffie-Hellman, KEM et HPKE
- Relier une clé à une identité: certificats et PKI
- Signer numériquement : preuve publique, politiques de vérification
- Transformer un bloc en chiffrement de message
: les deux pages se citent l’une l’autre.
