I just read through the blog post and honestly I think his arguments are all pretty weak.
His first "flaw" he even admits that it's not a very good argument against it. I would also argue that peppers aren't all that common especially when compared to the usage of salts.
His second "flaw" doesn't really make sense because you wouldn't be modifying any hashing algorithms. He mentions about combining the salt and pepper but in reality you would combine the (original) password and pepper, and send that value to the algorithm. You could also use this technique to invalidate all passwords by changing the pepper and force users to change passwords. Breached websites have to do this all the time. Without access to the source code an attacker would have no idea that a random/complicated string was being appended (or prepended, or whatever) to the users' passwords.
His third "flaw" isn't even a flaw. He's basically saying there is something else you could use that (he) believes is better. That's not a flaw. That's like saying Windows is flawed because there's Linux.
His fourth "flaw" that he believes is the biggest one is just flat out wrong. Majority of password/database breaches results in a database dump and no source code. It's pretty rare for the source code to be dumped as well. Remember all those high profile dumps with LinkedIn, eHarmony, Last.fm, Yahoo, etc. in 2012? None of them involved source code. Just passwords (and emails/user names). The only one I can think of off the top of my head was Sony, but that went waaaay beyond just source code. At that point users' passwords were the least of their concerns. Also I think maybe Gawker had source code dumped along with passwords many years ago but I don't remember for sure. In any case it's also possible that the database doesn't even reside on the same server as the application/website's source code, so...
But really just because there's the possibility that the source code could be dumped isn't a very good argument against it. It's possible someone could lift your house key off you and copy it. I don't think anyone is going to stop using those, though.
There's really not much involved in adding a pepper. It's a few lines of code and very little effort when in reality it adds an additional layer of security. It wouldn't cripple your application if you decided not to use one, either.
Also, being secure isn't always about being completely impenetrable; many times it's about being more of a hassle than the guy next to you.
Weedpacket;11049053 wrote:Note that PHP has a [man]password_hash[/man] function, which should probably be used instead of trying to make your own.
This is still probably the best option, but you could still use a pepper with it.