Une fonction de hachage rapide comme SHA-256 permet aux attaquants de tester des milliards de candidats par seconde sur des GPU. Le hachage des mots de passe ajoute un sel aléatoire unique par mot de passe (ce qui neutralise les tables précalculées) et un coût paramétrable. Le Password Storage Cheat Sheet de l’OWASP recommande, dans l’ordre : Argon2id (RFC 9106) avec au moins 19 Mio de mémoire, 2 itérations et un parallélisme de 1 ; scrypt avec N = 2¹⁷, r = 8, p = 1 ; bcrypt avec un facteur de coût de 10 ou plus (il tronque l’entrée à 72 octets) ; et, lorsque FIPS 140 est exigé, PBKDF2-HMAC-SHA256 avec au moins 600 000 itérations.
Stockez l’algorithme et les paramètres avec le condensat (le format de chaîne PHC $argon2id$v=19$m=19456,t=2,p=1$…, le $2b$10$… de bcrypt) afin de pouvoir augmenter les coûts plus tard et mettre à niveau les anciens condensats à la connexion suivante. Un poivre (pepper) facultatif, secret conservé hors de la base de données, ajoute une protection si seule la base de données fuit.
La NIST SP 800-63B-4 exige un stockage salé et renforcé par un coût de calcul et, pour les mots de passe utilisés comme facteur d’authentification unique, une longueur minimale de 15 caractères. Les clés d’accès suppriment totalement le secret stocké : le serveur ne conserve qu’une clé publique.