Fonctions de hachage
Comment un site web sait-il que ton mot de passe est correct, sans connaître ton mot de passe ? Comment ton téléphone remarque-t-il qu'un fichier téléchargé a été abîmé en route ? Les deux fois avec la même astuce : une empreinte digitale des données. Petite, toujours de la même taille, et unique pour ce qu'on y a mis.
Les mots dont tu as besoin
- Hash (ou fonction de hachage)
- Une machine à calculer à qui tu donnes quelque chose — un mot, une photo, tout un livre — et qui en fait toujours une suite de caractères de la même longueur. La même entrée donne toujours la même sortie. Changer quelque chose, ne serait-ce qu'une seule lettre, donne une sortie complètement différente.
- Bit
- Le plus petit morceau d'information : un 0 ou un 1. Huit bits font un octet. Si quelque chose fait « 256 bits », ce sont 256 zéros et uns à la suite.
- SHA-256
- Le nom de la fonction de hachage la plus utilisée aujourd'hui. Le 256 est le nombre de bits dans la sortie : toujours exactement 256, que tu entres une seule lettre ou un film entier. En hexadécimal, cela fait 64 caractères.
- Algorithme
- Une recette fixe d'étapes de calcul. SHA-256, SHA-1 et MD5 sont trois recettes différentes avec le même but.
Trois règles auxquelles un hash se tient
| Règle | Ce que ça signifie |
|---|---|
| Sens unique | À partir du hash, tu ne peux pas recalculer l'entrée. Pas « difficile », pas « avec un ordinateur rapide, oui » — il n'existe aucun chemin retour. Comme tu ne récupères plus la vache à partir d'un steak haché. |
| Pas de collisions | Deux entrées différentes ne doivent pas obtenir le même hash. En théorie, c'est possible (il existe une infinité de textes et seulement 2256 hashes), mais personne ne réussit à en trouver. |
| Effet d'avalanche | Une lettre de différence, et environ la moitié de tous les bits de la sortie basculent. Il ne reste rien qui ressemble au hash précédent. |
Essaie toi-même
Tout se passe dans ton navigateur. Rien n'est envoyé au serveur.
- Clique sur Crée l'empreinte. Tu vois quatre hashes de la même phrase, avec quatre recettes différentes. Remarque la longueur de chacun.
- Change une lettre dans la phrase et clique à nouveau. Compare. Reconnais-tu encore quelque chose ?
- Clique sur Montrer l'effet d'avalanche : la démo change elle-même un caractère et compte combien de bits basculent.
- Colle un texte très long — les paroles d'une chanson, une dissertation. Le hash garde la même longueur.
Pourquoi cette longueur compte
256 bits, ça veut dire 2256 résultats possibles. C'est un nombre à 78 chiffres. À titre de comparaison : le nombre d'atomes dans l'univers est un nombre à environ 80 chiffres. Chaque texte possible obtient une place dans un espace aussi grand que l'univers — la probabilité que deux textes différents atterrissent par hasard au même endroit est pratiquement nulle.
La leçon que tu ne peux pas voir
Regarde dans la démo la ligne avec SHA-1. Elle a l'air exactement aussi aléatoire que SHA-256, seulement plus courte. Pourtant, SHA-1 est cassé : en 2017, des chercheurs de Google et du CWI à Amsterdam ont montré deux fichiers PDF différents avec exactement le même hash SHA-1. La règle « pas de collisions » était brisée. MD5 avait disparu bien avant.
À la sortie, tu ne remarques rien de tout ça. Qu'une fonction de hachage soit bonne ou non ne dépend pas de son apparence aléatoire, mais du fait que des mathématiciens y aient trouvé un point faible ou non. C'est pourquoi tu utilises aujourd'hui SHA-256 et pas quelque chose qui « a l'air tout aussi bien ».
Peut-on « décrypter » un hash ? Non. Rien n'est chiffré, il n'y a rien à déchiffrer. Pourtant, il existe des sites qui prétendent pouvoir le faire — et parfois ils y arrivent vraiment. Comment c'est possible, et pourquoi c'est important pour tes mots de passe, c'est le chapitre suivant.
Voici les maths : le paradoxe des anniversaires
Dans une classe de 23 élèves, la probabilité que deux aient le même anniversaire dépasse 50 %. Ça semble faux — il y a bien 365 jours ? — mais c'est correct, car tu ne compares pas 23 élèves à une seule date, mais les 253 paires d'élèves entre elles. Ce même petit calcul détermine la longueur nécessaire d'un hash : avec 2256 possibilités, tu peux t'attendre à la première collision après environ 2128 essais. C'est du calcul des probabilités, et c'est la raison pour laquelle 256 et non 128 est la norme.