Pourquoi les hachages de mots de passe cèdent

Un mur plein de tiroirs d'archives avec un tiroir ouvert, dans lequel se trouvent deux fiches qui vont ensemble.

Tu le lis régulièrement : « base de données du site X volée, des millions de mots de passe divulgués ». Mais un bon site ne garde pas ton mot de passe — seulement son hash. Et à partir d'un hash, tu ne peux pas recalculer le mot de passe, tu le sais depuis le chapitre précédent. Alors… y a-t-il un problème ? Oui. Et dans ce chapitre, c'est toi qui joues le hacker pour voir pourquoi.

Les mots dont tu as besoin

Base de données
La grande table dans laquelle un site web garde tous ses utilisateurs : nom, adresse e-mail, et (si tout va bien) le hash du mot de passe.
Table de correspondance (ou « table arc-en-ciel »)
Une liste que quelqu'un a préparée à l'avance : à gauche des milliards de mots de passe courants, à droite leur hash. Qui tombe sur un hash le cherche à droite et lit le mot de passe à gauche. Pas de calcul, juste une recherche.
Salt (sel)
Littéralement « sel » : un petit bout de texte aléatoire que le site colle à ton mot de passe avant de le hasher. Différent pour chaque utilisateur. Ce n'est pas secret — il est simplement à côté du hash — mais ça rend toute table de correspondance inutile.
PBKDF2
Une fonction de hachage volontairement lente : elle répète le calcul des centaines de milliers de fois. Pour toi, une demi-seconde à la connexion. Pour un hacker qui veut essayer des milliards de mots de passe, un mur.

Comment un hash « incassable » se fait quand même casser

Le hacker ne calcule pas à l'envers. Il calcule en avant. Il prend une liste du milliard de mots de passe les plus utilisés — 123456, azerty, bienvenue, les noms de tous les clubs de foot — et calcule le hash de chacun. Ça prend du temps, mais il ne doit le faire qu'une seule fois. Ensuite, il compare les hashs volés à sa liste. Chaque hash qui correspond est un mot de passe cassé. Pas de maths, juste de la patience et un gros disque dur.

Joue le hacker

Tout se passe dans ton navigateur. Rien n'est envoyé au serveur. Ne tape quand même jamais ici un mot de passe que tu utilises vraiment — c'est une bonne habitude.

  1. Clique sur Hasher et chercher. La démo hashe ton mot de passe et cherche le hash dans un petit tableau de quelques douzaines de mots de passe courants. Trouvé ? Alors tu es « cassé ».
  2. Essaie azerty, football, docteur. Essaie ensuite quelque chose que tu inventes toi-même.
  3. Clique sur Même mot de passe, avec salt. Même mot de passe, hashé deux fois — et pourtant deux hashs complètement différents. Cherche-les : rien.
  4. Clique sur Avec PBKDF2 (lent) et regarde le temps. Calcule ce que ça signifie pour quelqu'un qui doit essayer dix millions de fois.

Le salt : à chacun son propre problème

Sans salt, tous les utilisateurs avec le mot de passe bienvenue ont exactement le même hash. Le hacker en casse un, et il les a tous. Avec le salt, chaque utilisateur obtient un hash différent pour le même mot de passe. Le hacker doit maintenant re-hasher toute sa liste séparément pour chaque utilisateur. Une fuite de dix millions de comptes devient dix millions de tâches séparées.

La lenteur : la seule arme qui compte vraiment

SHA-256 est ultra-rapide — une bonne carte graphique calcule des milliards de hashs par seconde. C'est pratique pour les fichiers et catastrophique pour les mots de passe. C'est pourquoi les bons sites utilisent une fonction volontairement lente. Clique sur PBKDF2 dans la démo et observe le temps. Quelques centaines de millisecondes, tu les sens à peine en te connectant. Mais pour le hacker, chaque tentative est multipliée par ce nombre — et il en a des milliards.

Ce que ça signifie pour toi

Pour quand tu construiras toi-même un site plus tard : n'écris jamais ça toi-même. Chaque langage de programmation a une fonction intégrée qui gère bien le salt et la lenteur (en PHP, elle s'appelle password_hash()). Bricoler soi-même un hash et un salt est l'erreur classique du débutant — et la cause de la moitié des fuites dans l'actualité.

Voici les maths : à quel point « grand » est grand ?

Un mot de passe de 8 lettres minuscules a 268 ≈ 200 milliards de possibilités. Ça semble beaucoup — une carte graphique en vient à bout en une minute. Quatre mots aléatoires tirés d'un dictionnaire de 5000 mots : 50004 = 625 billions, et ça, c'est encore sans majuscules ni chiffres. C'est la différence entre élever à la puissance avec une grande base et un grand exposant. Qui a le sens des grands nombres conçoit de meilleurs cadenas que qui ne l'a pas.