Pepper
Un pepper est un secret côté serveur ajouté lors du hachage de mots de passe (contrairement au sel, il est partagé globalement et gardé secret), augmentant la difficulté des attaques hors ligne.
Objectif
Ajouter un secret du serveur par-dessus le sel, pour qu'une fuite de la base de données seule ne suffise pas à craquer les mots de passe hors ligne.
Mécanisme
H(password || salt || pepper). Le pepper est partagé globalement mais secret (stocké en config/HSM, pas dans la base). En cas de fuite de la base, des attaquants sans le pepper ne peuvent pas hacher hors ligne. Le sel reste unique par utilisateur. Si le pepper fuit, la protection se dégrade au sel seul.
Cas d’usage
- Hachage de mots de passe renforcé
- Protection supplémentaire après une fuite de base de données
- Stockage du pepper dans un HSM
- Exigences de conformité
Exemples
- entrée
H(pass + salt + pepper)OutputThe pepper is required for verificationPepper kept secret
Erreurs courantes
- Storing the pepper in the database (the same one as the hashes)
- Keep the pepper in config/HSM, separate from the database
Termes associés
Salt
Un sel est une valeur aléatoire ajoutée lors du hachage de mots de passe afin que des mots de passe identiques produisent des hachés différents, ce qui neutralise les tables arc-en-ciel et la détection de mots de passe identiques. GLOSSAIRE
Hash Salting
Le salage de hachage consiste à ajouter un sel aléatoire à l'entrée du hachage afin que des entrées identiques produisent des hachés différents, vainquant les tables arc-en-ciel et la détection de collisions. GLOSSAIRE
PBKDF2
PBKDF2 (Password-Based Key Derivation Function 2) est le KDF normalisé dans PKCS#5 qui dérive des clés de mots de passe via un HMAC itéré, largement utilisé pour le hachage de mots de passe et la dérivation de clés. GLOSSAIRE