Hash, bcrypt et stockage des mots de passe

Un mot de passe ne doit jamais être stocké tel quel, ni même chiffré - car ce qui est chiffré peut être déchiffré. On stocke une empreinte à sens unique : le hash. Voici les idées à retenir avant d'implémenter une authentification.

Un hash, c'est à sens unique

Une fonction de hachage transforme une entrée en une empreinte de taille fixe, sans chemin retour. Vérifier un mot de passe consiste à re-hacher la saisie et à comparer les empreintes. Mais les hash rapides comme MD5 ou SHA-256 sont conçus pour la vitesse - exactement ce qu'un attaquant veut pour tester des milliards de combinaisons.

💡 Anecdote - Piège méconnu : bcrypt ignore tout ce qui dépasse 72 octets. Un mot de passe très long est donc tronqué en silence.

Sel et coût

Le sel est une valeur aléatoire ajoutée à chaque mot de passe avant hachage. Il garantit que deux utilisateurs avec le même mot de passe obtiennent des empreintes différentes, et rend inutiles les tables précalculées. Le coût (ou facteur de travail) rend volontairement le calcul lent : c'est négligeable pour une connexion, mais ruineux pour une attaque par force brute.

Le bon outil pour le bon usage

Pour les mots de passe, utilisez un algorithme lent et salé conçu pour ça : bcrypt, scrypt ou argon2. Réservez SHA-256 aux empreintes de fichiers et aux signatures, là où la vitesse est un atout. Pour expérimenter et comparer les algorithmes sur un exemple, notre générateur de hash calcule tout localement, sans jamais transmettre votre texte

🤓 Le saviez-vous ? bcrypt repose sur le chiffre Blowfish conçu par Bruce Schneier, et son « facteur de coût » a été pensé dès 1999 pour vieillir : on l'augmente à mesure que le matériel accélère, gardant le hachage lent face à la loi de Moore.