Skip to content

Glossary

Pepper (poivre)

Un pepper est une valeur secrète ajoutée à chaque mot de passe avant le hachage, conservée hors de la base de données pour qu'une simple fuite de la base ne l'expose pas, contrairement à un sel.

Un pepper est une valeur secrète mélangée à chaque mot de passe avant son hachage, semblable à un sel mais avec une différence cruciale : il est identique pour tous les utilisateurs, et il n'est jamais stocké à côté du hash. Là où un sel se trouve dans la base de données juste à côté de son hash, en clair, un pepper vit ailleurs — une variable d'environnement, un fichier de configuration, ou un module matériel de sécurité — de sorte que voler la base de mots de passe ne livre pas le pepper du même coup.

C'est tout l'intérêt de cette séparation. Si un attaquant exfiltre la base, il récupère les hashes et les sels mais pas le pepper, et ne peut donc même pas commencer à tester correctement des hypothèses sans compromettre en plus le serveur applicatif ou le gestionnaire de secrets. Un sel seul ne peut pas offrir cela, car il n'est conçu que pour déjouer les rainbow tables et empêcher que des mots de passe identiques produisent le même hash — il suppose que l'attaquant le possède déjà.

Un pepper est une mesure de défense en profondeur, pas un substitut à un algorithme lent. Il est généralement mis en œuvre comme une clé HMAC appliquée avant (ou en complément) d'une véritable fonction de hachage de mot de passe comme bcrypt ou Argon2 ; voir Argon2 vs bcrypt vs scrypt pour choisir le KDF sur lequel superposer un pepper.