Cryptographie appliquée
Empreintes, chiffrement, signatures — quelle primitive pour quel besoin.
Trois besoins distincts, trois familles d'outils. Les confondre est l'erreur la plus coûteuse du domaine, parce qu'elle donne l'illusion d'être protégé.
| Besoin | Primitive | Réversible ? |
|---|---|---|
| Vérifier qu'une donnée n'a pas changé | empreinte (hash) | non, par conception |
| Rendre une donnée illisible pour autrui | chiffrement | oui, avec la clé |
| Prouver l'origine d'une donnée | signature | vérification seule |
L'empreinte ne protège pas un secret
Une fonction de hachage produit une empreinte de taille fixe, sans retour possible vers l'entrée. Elle sert à détecter un changement : intégrité d'un téléchargement, identifiant de commit Git, comparaison de fichiers.
$ sha256sum image.iso
9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 image.isoUne empreinte n'est pas un chiffrement : il n'y a rien à déchiffrer. Et elle
ne suffit pas à stocker un mot de passe — un attaquant qui obtient la base essaie
des milliards de candidats par seconde. Il faut une fonction lente et salée,
conçue pour ça : argon2, scrypt, bcrypt. MD5 et SHA-1 sont cassés pour
tout usage de sécurité : on sait fabriquer deux contenus différents de même
empreinte.
Symétrique et asymétrique
Le chiffrement symétrique utilise la même clé pour chiffrer et déchiffrer : rapide, adapté au volume, mais il faut transmettre la clé — et c'est là tout le problème. L'asymétrique emploie une paire : ce que chiffre la clé publique, seule la clé privée le déchiffre. Il résout la transmission, au prix d'une lenteur qui l'exclut du volume.
D'où le fonctionnement réel de TLS : l'asymétrique sert à négocier une clé de session, le symétrique chiffre ensuite la conversation.
Ne pas écrire sa propre cryptographie
Ce n'est pas un conseil de prudence excessive : les primitives sont solides, les implémentations sont fragiles. Un mode d'opération mal choisi, un vecteur d'initialisation réutilisé, une comparaison de signature qui s'arrête au premier octet différent — et l'algorithme le mieux prouvé ne protège plus rien. On utilise une bibliothèque éprouvée, et on la tient à jour.
La signature inverse l'usage des clés
Signer, c'est chiffrer l'empreinte d'un message avec sa clé privée ; n'importe qui peut vérifier avec la clé publique. Cela prouve deux choses à la fois : le message vient bien du détenteur de la clé, et il n'a pas été modifié.
C'est exactement ce dont parle la leçon sur la chaîne d'approvisionnement : signer un artefact permet à qui le récupère de vérifier qui l'a produit, sans avoir à faire confiance au canal qui l'a transporté.
Le piège classique
Encoder n'est pas chiffrer. base64 transforme des octets en caractères
imprimables pour les faire transiter — l'opération est publique et sans clé.
Voir une chaîne en base64 dans un jeton ou une configuration ne dit rien de
sa confidentialité : la décoder est immédiat, et sans le moindre secret.
Réponse unique
Comment stocker correctement un mot de passe utilisateur ?
Indice · Que peut faire un attaquant qui obtient toute la base ?
[ METTRE EN PRATIQUE ]
Choisir la bonne primitive
3 étapes · 25 min · 120 XP
[ CETTE LEÇON DANS LES PARCOURS ]
- Fondamentauxétape 18 / 18dernière étape ✓