Re:Using pepper to increase the security of stored passwords
by MattPalmer1086 on Monday March 04, 2019 @05:53AM
(#19300284)
I wouldn't say don't do this, although you do have to spend your security resources carefully.
While it only provides additional security against password database exfiltration attacks, it is also a very, very low cost mitigation.
It could equally be used in a separate authentication service as one of the many ways to harden it.
Of course, it's good to make it harder to exfiltrate the authenticator! And that's really what things like "peppers" are trying to do. But if you're going to build up that defense, be serious about it: move the password hashes entirely out of the application and its accessible storage (don't just spread it across two different kinds of storage the application already has access to!).
So, rather than pretending like you're improving security by keying the password hash, just stand up an authentication service. Give it "verify(user, password) bool" and "enroll(user, password)" and nothing else. Write it in a managed language with a minimal runtime (Rust, Go, or Java, no framework). Then, before you ever think about monkeying with the hash constructions themselves, get to work on segregating it out so that it's in its own AWS or GCP account, enforces rate limits, &c. You will never run out of better ways to secure the authentication services than this "pepper" nonsense.