Fonctions de hachage

Des objets de toutes tailles tombent dans un entonnoir et en ressortent en bas sous forme de carreaux identiques et de même taille.

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ègleCe 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.

  1. 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.
  2. Change une lettre dans la phrase et clique à nouveau. Compare. Reconnais-tu encore quelque chose ?
  3. Clique sur Montrer l'effet d'avalanche : la démo change elle-même un caractère et compte combien de bits basculent.
  4. 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.