Concerns about the RFC after talking with someone (Alok) on our security team at work.
"There is no requirement for them to be cryptographically secure. " What stops the salt from being cryptographically secure? I think it should be a goal or we should state what parts aren't cryptographically secure, is it the random data source? "The salt parameter, if provided, will be used in place of an auto-generated salt." This is setting someone up for failure by letting them put in something weak, you should be forced to get an auto-generated salt. If this is for unit testing then it should be explicitly stated. The documentation also needs improved around password_needs_rehash. Tell the developer that at login time (or any other password validation time), if the options have changed, the password can be rehashed. E_WARNING in a crypto function is also bad. Throw an exception or fatal. There's no reason to just raise a warning and continue execution, if something went wrong in crypto then its a bad time for everyone. - S On 12 Sep 2012, at 09:02, Anthony Ferrara <ircmax...@gmail.com> wrote: > All, > > I have added the tests and ensured that everything seems pretty clean. I > have opened a Pull Request for this item as I would like to get more eyes > on it (especially since it touches crypt()). Please review the PR and > comment away. > > https://github.com/php/php-src/pull/191/files > > Once it looks good, I'll merge it in. I just wanted to get more eyes on the > diff first... > > Thanks > > Anthony > > On Wed, Sep 12, 2012 at 10:02 AM, Anthony Ferrara <ircmax...@gmail.com>wrote: > >> Hello all, >> >> I've closed the vote and it's been accepted with a vote total of 19:0, >> unanimous. I've moved the RFC into Accepted. >> >> I'm going to add the remaining tests, and then move it into master later. >> >> As for the PECL extension route, I'll work on splitting it into a PECl >> extension for 5.3/5.4 at the same time. >> >> Thanks all, >> >> Anthony >> >> On Tue, Sep 11, 2012 at 7:58 AM, Anthony Ferrara <ircmax...@gmail.com>wrote: >> >>> Hannes, >>> >>>> First off, this has been discussed on the list for literally months. >>>> Why >>>>> wait until the day before voting can end before bringing this up? >>>> >>>> So commenting is strictly forbidden during votes? >>> >>> >>> Not in the least. Just pointing out that this discussion could have been >>> better if it was started much earlier (prior to the time and effort being >>> put into it). Just pointing it out. There's nothing "wrong" (procedurally) >>> about bringing it up now, just that it would have been nice to hear this >>> point earlier in the discussion... >>> >>> >>>>> Secondly, the main reason for not developing this as an extension is >>>> that >>>>> there's really no benefit to it. There are little to no performance >>>> gains to >>>>> be had by the C implementation. It can live quite as easily as a PHP >>>>> library. >>>> >>>> The benefit is that it can be tested properly and bugs discovered and >>>> ironed out first. >>>> >>> >>> I'm not so sure about that. If it was widely adopted as an extension, >>> sure. But I would predict a very limited adoption. Almost purely academic. >>> The reason is that there's no advantage to doing it in C other than to >>> provide a working API for those who don't understand how to build it (or >>> realize the benefits thereto). Those are the same people who wouldn't be >>> able to install a PECL extension (know-how or access). And projects who >>> realize this is needed are likely already using one of the many libraries >>> available. >>> >>> So I'm not sure the install rate would be anywhere high enough to work >>> any significant issues out. Additionally, there are testing phases for the >>> release that would hopefully catch any major issues prior to 5.5 going >>> gold... >>> >>> >>>> This is not the sort of thing you want to get security bug reports the >>>> day after its released in core. >>>> >>> >>> Sure. Which is why I've been going around looking for security reviews >>> (posted to the crypt-dev list on openwall, and to >>> security.stackexchange.com). >>> >>> >>>> If your ego is big enough you can guarantee you have tested this >>>> thoroughly and want it to become the recommended way.. You have to be >>>> damn sure you don't fuck it up. >>>> >>> >>> I want to say that this is really unfair. By saying it this way you've >>> pushed me into a corner. I disagree that your suggestion would have a >>> result of any significant gain in security. Yet I cannot disagree with you >>> without coming across as an egotist now that you said it that way. Please >>> try to keep things civil without setting up traps to try to prove your >>> point. I don't appreciate this remark at all... >>> >>> >>>> This is exactly the sort of thing that doesn't need to be developed in >>>> the core tree, but can later be merged in once proven successful. >>>> >>> >>> As indicated before, if that's the case, then it would never be merged. >>> Because this would never be successful as a stand alone PECL module. The >>> primary reason for adding it is so that people who don't know any better >>> would be able to use a secure API. That is the antithesis of a PECL >>> extension. >>> >>> >>>>>> Especially considering the patch is unfinished. >>>>> >>>>> >>>>> Aside from adding a few more tests, what's unfinished? If you're >>>> referring >>>>> to the line in the RFC, I just haven't updated it. The patch has been >>>> worked >>>>> on and is in a place where I'd be comfortable submitting it... >>>> >>>> The test suite seems very limited, and the code seems to be waiting >>>> for more algorithms to be implemented. >>>> >>> >>> Yes, the test suite needs to be expanded. I tested it additionally with >>> the PHPUnit tests that I wrote for the PHP fallback, so it's been tested >>> fairly well... I just need to expand the phpt test suite included in core... >>> >>> As far as more algorithms, right now there's no reason to add more >>> algorithms. The whole point was to never add anything but the strongest >>> algorithm available. Which today is bcrypt. But as time goes on, and better >>> algorithms become available, the API is designed so that they can be >>> implemented. But today, there's no other algorithm that should be >>> implemented. (SCrypt is a candidate, but since it lacks crypt(3) bindings, >>> and is still very young, it's inclusion isn't prudent at this point). >>> >>> There's a section to the RFC for adding new algorithms as time goes on: >>> https://wiki.php.net/rfc/password_hash#updating_password_default >>> >>> Anthony >>> >> >> -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php