Re: [Discussion] Changing PASSWORD_DEFAULT to Argon2
| From: | Andrey Andreev | Date: | Sun, 20 Sep 2026 13:46:08 +0000 |
| Subject: | Re: [Discussion] Changing PASSWORD_DEFAULT to Argon2 | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-132563@lists.php.net to get a copy of this message | ||
On Sat, Sep 19, 2026 at 11:00 PM Anton Smirnov <sandfox@sandfox.me> wrote:
>
> My point is mostly about this part:
>
> > Argon2 for settings that are reasonable for interactive
> > authentication is worse than BCrypt
>
> Like, if there were any successful attacks on bcrypt that negate that part
>
Yes and no.
That part was based on a tweet from 2019, based on many unknowns
(parameters, hardware, worse by how much, etc.) very broadly saying
sub-1000ms.
By 2023, we have slightly more clarity and comparable strenghts at just
over 500ms: https://infosec.exchange/@epixoip/110912922574721750
(note that
it looks somewhat scary because of the large memory cost, but time cost is
always 1; very different from PHP's defaults)
At that same time the bar is described as anywhere between sub40-100ms for
bcrypt and above 400-1000ms argon2, I guess with no clear winner in
between? https://infosec.exchange/@sc00bz/110228557196895869
In the meantime, all of this benchmark-centric talk is missing the forest
for a tree, as cracking either algorithm is practically infeasible but
vanilla bcrypt has more serious issues relevant to the average developer:
https://soatok.blog/2024/11/27/beyond-bcrypt/
All of the "bcrypt is stronger for auth" people have their own versions of
how to solve its non-computational weaknesses too, they do recognize the
problem, but people who care mostly about benchmarks and maths will only
talk about the benchmarks and maths. :)
This can be a very contentious subject, and I don't want to go down the
rabbit hole if the much simpler matter of dependencies would kill the
argument anyway, hence my original question. If for a moment we assume
Argon2id is better, can we rely on OpenSSL for default?
Cheers,
Andrey.