CaenHackYouAcademy
Fondamentaux

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é.

BesoinPrimitiveRéversible ?
Vérifier qu'une donnée n'a pas changéempreinte (hash)non, par conception
Rendre une donnée illisible pour autruichiffrementoui, avec la clé
Prouver l'origine d'une donnéesignaturevé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.iso

Une 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.

VérificationQuestion 1 / 3

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 ]

On this page