Peppering
Peppering is a technique used when storing passwords in which a secret value is added to a password before it is scrambled (hashed) into a stored form. Because this secret value is kept separate from the stored passwords, it makes it harder for an attacker to reverse the stored data back into usable passwords even if they steal the password database.
Peppering is the practice of incorporating a secret value (the pepper) into a password prior to hashing with a cryptographic hash function. Unlike a salt, which is typically stored alongside the hashed password and is intended to be unique per credential to defeat precomputed-table and cross-account attacks, a pepper is a secret that is not stored with the password hash; in most deployments it is held separately, for example in application configuration or a hardware/key management module. Its security benefit depends on the pepper remaining confidential, so its effectiveness is contingent on that secret not being compromised together with the credential store. Specifics such as pepper length, how it is combined with the password, and where the secret is managed vary by implementation and are out of scope for this definition. Note that the surrounding evidence includes unrelated non-cryptographic senses of the term (labor organizing, volleyball), which do not apply here.
Why it matters
Password database breaches remain one of the most common and damaging events in identity systems, and the strength of stored credentials often determines how much damage a breach causes. Salting is standard practice to defeat precomputed-table (rainbow table) attacks and to ensure that identical passwords do not produce identical hashes across accounts, but salts are typically stored alongside the hashes and are therefore compromised together with the credential store. Peppering adds a secret value that, by design, is not stored with the hashes, so an attacker who exfiltrates only the credential database does not necessarily obtain everything needed to mount efficient offline cracking.
The value of peppering is entirely contingent on the pepper remaining confidential. If the secret is held separately, for example in application configuration or a hardware or key management module, then a database-only breach leaves the attacker missing a component required to validate guesses at scale. This is why peppering is best understood as a defense-in-depth measure layered on top of salting and a strong, deliberately slow password hashing function, rather than a replacement for either.
The corresponding limitation matters just as much for architects to understand: if the pepper is compromised together with the credential store, for instance because it lives in the same repository or is exposed through the same application vulnerability, its protective benefit is lost. Peppering therefore shifts a meaningful part of the threat model onto secret management, and decisions about where and how the pepper is stored are as security-relevant as the choice to pepper at all.
Who it's relevant to
Inside Peppering
Common questions
Answers to the questions practitioners most commonly ask about Peppering.
