On 19 Oct 2018, at 16:46, Sammy Kaye Powers wrote:

I'd like to start a discussion on the "Improve
openssl_random_pseudo_bytes()" RFC:
https://wiki.php.net/rfc/improve-openssl-random-pseudo-bytes

TL;DR:

CSPRNG implementations should always fail closed so this change would
make `openssl_random_pseudo_bytes()` fail closed.

The second `$crypto_strong` parameter doesn't do anything despite the
docs stating otherwise. This unnecessarily confusing parameter would
be deprecated.

At first glance I believed you were proposing that `openssl_random_pseudo_bytes()` should fail with an exception and that this would be an improvement. I would agree with that. With a little more concentration I see you're proposing something less ambitious that I'm less enthusiastic about.

The function has been obsolete since 7.0 and A Bad Choiceâ„¢ in all versions of PHP except when OS==Windows AND 5.4.0 <= PHP < 7.0.

The only reason to keep this function is BC but removing the second param breaks BC for ALL conscientious and safe uses, i.e. seeking unpredictable (i.e. crypto strong) randoms from 5.4.0 <= PHP < 7.0 on Windows. There's no valid reason to ask for predictable randoms from OpenSSL and, afaik, its not unpredictable (i.e. it's unsafe) on other OSs.

I'd love to see an RFC along the lines of: "Improve PHP's OpenSSL API by depreciating and eventually removing openssl_random_pseudo_bytes()". Idk the right schedule for removing it but how could deprecating it in 7.4 do more harm than good?

Tom

Reply via email to