Re: Adding a simple API for secure password hashing?
| From: | Anthony Ferrara | Date: | Wed, 27 Jun 2012 13:16:47 +0000 |
| Subject: | Re: Adding a simple API for secure password hashing? | ||
| References: | 1 2 3 4 5 6 7 8 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-60998@lists.php.net to get a copy of this message | ||
Alexander,
> BTW, what version of PHP introduced the === comparison operator?
> I guess this should become the minimum version for phpass since this is
> highly desirable to use.
>
> http://www.php.net/manual/en/language.operators.comparison.php
> does not
> say anything about that.
>
That's been in there for quite some time... I know at least php 5.0
had it (and I'm pretty sure it was 4)...
> Thank you for not including other crypt() hashes. I fully support
> starting with bcrypt only, and only adding to it if there's something
> actually better, not just for the sake of giving more options to a user
> who can't make an educated decision.
I originally included them, but then it was pointed out that they are
weaker, and I was asked *why include them*. when I couldn't answer, I
pulled them...
> In the same spirit, while I support your proposal to add PBKDF2 to PHP
> proper, let's not add a crypt()-like hash encoding based on PBKDF2.
> I'd rather not see additional weaker-than-bcrypt hash types in use.
> In other words, I oppose your $pbkdf$ thing from PHP-PasswordLib. ;-)
I had no plan on adding that to the core... So we're in perfect
agreement there... (although in a side-lib, I don't see the harm as
long as it's not default).
> For that, we'd need to decide on a proper crypt() hash encoding syntax
> for scrypt - something Colin chose not to do so far. At the very least,
> we'd need to know and consider his current opinion on the matter. IIRC,
> when I asked in 2010 (in March or April), his reply was that he did not
> feel scrypt was mature enough for that (it was about 1 year old at the
> time, since 2009).
Agree. If I was to add it (I've been thinking about it), I would add
it along side hash_pbkdf2 as hash_scrypt(). I would prefer waiting for
the standard encoding syntax (so that we're not creating a new one) to
include it in crypt().
> It might happen that we come up with another memory-hard function to use
> for password hashing before there's an agreed upon hash encoding syntax
> for scrypt in particular. To me, this possibility is a reason not to
> hurry with introducing such syntax for scrypt. We also need to decide
> on an approach to this:
> http://www.openwall.com/lists/crypt-dev/2011/05/12/4
> (dealing with the memory requirements with concurrent authentication
> requests). Well, maybe just require relatively little memory - way more
> than bcrypt, but less than what scrypt was originally designed for.
Sure...
> Meanwhile, I suggest that we treat scrypt just like we do PBKDF2 -
> provide a native function for it as a KDF, but no crypt() hash encoding
> syntax for its use for password authentication yet (even though this
> might be a more relevant use of it in PHP in the long run).
Again, agreed.
> Maybe, but if we add scrypt proper then I see little use for Salsa20/8
> on its own.
Very true. Was just a thought.
> What was the reason why Salsa20 was dropped in 5.4 (it was in 5.3, but
> probably not usable for scrypt because of different round count)?
I don't know. I was trying to find that out but everywhere I looked
turned into a dead end.
Thanks,
Anthony