Chiffrement symétrique
Jules César écrivait ses lettres à ses généraux en écriture secrète :
chaque lettre décalée de quelques places dans l'alphabet. A
devient D, B devient E. Qui savait
de combien de places, pouvait lire. Qui ne le savait pas, voyait du
charabia. Ce « combien de places », c'est la clé — et
deux mille ans plus tard, cette idée est toujours la base de la sécurité
de tes messages.
Les mots dont tu as besoin
- Clé
- Le secret dont tu as besoin pour chiffrer et déchiffrer. Chez César, un nombre de 1 à 25. Dans les systèmes modernes, une suite de 256 bits aléatoires. Qui a la clé peut lire. Qui ne l'a pas, non.
- Symétrique
- La même clé ferme et ouvre. Comme la clé de ton antivol de vélo : une seule clé, et il faut la partager avec tous ceux qui peuvent ouvrir le cadenas.
- Texte clair et texte chiffré
- Le texte clair est ton message normal. Le texte chiffré est ce qui en sort après chiffrement : pour quiconque n'a pas la clé, du bruit pur.
- AES
- L'écriture secrète qu'utilise aujourd'hui presque tout : ton wifi, tes messages, ton appli bancaire. Norme mondiale depuis 2001, et en toutes ces années, personne n'y a trouvé de faille. Il en existe trois tailles — AES128, AES192 et AES256 — et ce nombre, c'est la longueur de la clé en bits. La démo ci-dessous utilise AES256.
La même clé, dans les deux sens
C'est le cœur de ce chapitre. Chiffrer et déchiffrer utilisent la même clé. En formules :
texte chiffré = AES(clé, texte clair)
texte clair = AES−1(clé, texte chiffré)
Ligne du haut : le message entre, le texte chiffré sort. Ligne du bas : exactement l'inverse — AES−1 est le chemin du retour, comme ÷ 3 est le chemin du retour de × 3. Mais regarde ce qui figure dans les deux lignes : clé. Le même mot, la même valeur. Une seule clé qui ferme et ouvre, comme la clé de ton antivol de vélo.
Tu vas retrouver ça tout à l'heure dans la démo : un seul champ de mot de passe, que tu utilises aussi bien pour Chiffrer que pour Déchiffrer. Il en découle une conséquence :
| Qui | Ce qu'il lui faut |
|---|---|
| Toi, pour chiffrer | la clé |
| Ton ami, pour déchiffrer | exactement la même clé |
| L'espion | tout sauf la clé — et là, il n'arrive à rien |
Avant de pouvoir échanger un seul message, vous devez tous les deux déjà connaître le même secret. Ça paraît évident quand ton ami est assis à côté de toi sur le canapé. Ça ne l'est pas, et tu verras pourquoi au bas de ce chapitre.
Ce qui a changé en 2000 ans
César avait 25 clés possibles. Tu les essaies toutes à la main en un quart d'heure. AES256 a 2256 clés possibles. Mets tous les ordinateurs de la Terre à travailler ensemble, ils y seront encore quand le soleil s'éteindra. Le principe est le même ; seules les maths sous le capot sont incomparablement plus astucieuses.
Cette seule idée ci-dessus — une clé, deux sens — n'a donc pas bougé depuis deux mille ans. Ce qu'il faut y ajouter en pratique pour la rendre étanche, tu le verras après la démo.
Essaie toi-même
Tout se passe dans ton navigateur. Rien n'est envoyé au serveur.
- Clique sur Chiffrer. Le paquet chiffré apparaît dans le champ du bas — illisible.
- Clique sur Déchiffrer. Ton message revient.
- Change maintenant une lettre dans le mot de passe et clique à nouveau sur Déchiffrer. Pas de message, juste un refus.
- Remets le mot de passe comme avant. Clique sur Fais basculer un bit — la démo change un seul 0 en 1 dans le paquet. Clique sur Déchiffrer. Le sceau est brisé.
- Chiffre le même message deux fois. Compare les deux paquets.
Deux améliorations qui sont venues s'ajouter
Tout ce qui précède vaut depuis César. Mais avec seulement « une clé, deux sens », tu n'y es pas encore : deux fois le même message donnerait deux fois la même chose à l'arrivée, et tu ne remarquerais pas que quelqu'un a touché à ton texte chiffré en chemin. Deux choses sont venues s'y ajouter, et tu les retrouves toutes les deux dans le paquet que la démo vient de te donner.
Deux mots de plus
- IV (vecteur d'initialisation)
- Un nombre aléatoire différent à chaque message, pour que deux fois le même message avec la même clé donne quand même deux textes chiffrés différents. Sinon, un espion verrait : « tiens, ce message-là, il l'a déjà envoyé hier ».
- Sceau (GCM)
- Un nombre de contrôle de 16 octets accroché derrière le texte chiffré, calculé avec la clé. Si un seul bit change en chemin, le sceau ne correspond plus et le déchiffrement est refusé. GCM est le nom du mode d'AES qui fabrique un tel sceau.
Ce qu'il y a dans ce paquet
Le paquet dans le champ du bas n'est pas seulement ton message chiffré. Ce sont quatre morceaux à la suite, et la démo te montre les deux premiers séparément :
| Morceau | Secret ? | À quoi ça sert |
|---|---|---|
| Salt | non | À fabriquer une clé à partir de ton mot de passe. Tu connais ça du chapitre 3 — même astuce, même raison. |
| IV | non | Fait que le même message a l'air différent à chaque fois. |
| Texte chiffré | oui | Ton message, chiffré. Le seul morceau qui cache quelque chose. |
| Sceau | non, mais infalsifiable | Se brise dès qu'un seul bit du texte chiffré change. |
En formules. Attention à la deuxième ligne : c'est la formule de chiffrement de plus haut, maintenant avec l'IV en plus.
clé = PBKDF2(mot de passe, salt)
texte chiffré = AES(clé, IV, texte clair)
sceau = GCM(clé, IV, texte chiffré)
L'IV : le même message, différent à chaque fois
Regarde la deuxième formule. AES ne reçoit pas seulement la clé et ton message, mais aussi l'IV. Si tu utilises chaque fois le même IV, le même message avec la même clé donne toujours exactement le même texte chiffré. C'est le problème du salt du chapitre 3, sous une autre forme :
| Message | IV | Texte chiffré |
|---|---|---|
| Je suis derrière le hall des sports… | 0a1b2c3d… | 5d4c29d39a38… |
| Je suis derrière le hall des sports… | 0a1b2c3d… (le même) | 5d4c29d39a38… (le même !) |
| Je suis derrière le hall des sports… | 9d8e7f6a… (nouveau) | 276598dfaf7f… |
Lignes un et deux : celui qui écoute voit passer deux fois le même paquet. Il ne sait pas ce que tu as envoyé, mais il sait bien que tu as envoyé la même chose qu'hier — et parfois, ça suffit déjà. Ligne trois : nouvel IV, et il n'y a plus rien à reconnaître. C'est pour ça que la démo tire un IV tout frais à chaque clic sur Chiffrer, et c'est pour ça qu'à l'étape 5 tu as vu deux paquets complètement différents. L'IV n'a pas besoin d'être secret. Il doit seulement être nouveau.
Le sceau : un bit de travers et la porte reste fermée
La troisième formule fabrique le sceau : un calcul sur tout le texte chiffré, avec la clé intégrée dedans. Le destinataire refait ce calcul et compare. Si le sceau correspond, le déchiffrement a lieu. S'il ne correspond pas, il ne sort rien du tout — pas de « presque juste », pas de charabia, juste un refus. C'est ce que tu as vu à l'étape 4.
Pourquoi un tricheur ne peut-il pas simplement recalculer le sceau lui-même après avoir changé un bit ? Parce que la clé est dans la formule. Sans la clé, il peut bien faire basculer des bits, mais pas fabriquer un sceau qui correspond. Tu obtiens ainsi deux choses à la fois : personne ne peut lire ce qu'il y a dedans, et personne ne peut y toucher sans que ça se voie. Ce deuxième point, César ne l'a jamais eu.
Le problème que César avait déjà
César pouvait chuchoter la clé à son général avant son départ. Toi aussi tu peux : chuchote le mot de passe, ou écris-le sur un bout de papier que tu fais passer. Mais comment fais-tu ça avec un site web en Amérique que tu n'as jamais vu, et à qui il faut donner une connexion sécurisée en moins d'une seconde ?
Tu ne peux pas simplement envoyer la clé avec — l'espion la lira aussi et tout aura été pour rien. Et tu ne peux pas non plus l'envoyer chiffrée, car chiffrée avec quoi ? Il te faudrait pour ça encore une clé que vous connaissez déjà tous les deux. Tu tournes en rond.
Ça s'appelle le problème de l'échange de clés, et ça a semblé insoluble pendant des siècles. Jusqu'à ce qu'en 1976, deux mathématiciens inventent quelque chose qui ressemble à un tour de magie. C'est le chapitre suivant.
Voici les maths : une opération qui s'annule elle-même
Pourquoi une seule clé peut-elle aller dans les deux sens ? Grâce à une opération que tu n'as besoin d'apprendre qu'une seule fois : le XOR, écrit ⊕. Elle travaille sur des bits isolés et toute la table tient ici :
| a | b | a ⊕ b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Différents donne 1, identiques donne 0. Prends maintenant un bit et applique-lui deux fois le XOR avec la même chose : 1 ⊕ 1 = 0, puis 0 ⊕ 1 = 1 — retour au point de départ. Essaie avec les quatre lignes et ça marche toujours :
(a ⊕ b) ⊕ b = a
C'est là qu'est ta réponse. À partir de la clé et de l'IV, AES fabrique une longue traînée de bits qui a l'air complètement aléatoire, et ton texte chiffré, c'est ton message XOR cette traînée. Déchiffrer, c'est appliquer encore une fois le XOR avec la même traînée. Pas une opération inverse — la même. D'où : une clé, deux sens.
C'est de l'algèbre booléenne : calculer avec vrai et faux au lieu de calculer avec des nombres, inventée par George Boole vers 1850, bien avant qu'il n'existe le moindre ordinateur. Chaque puce au monde en est construite.