Skip to content

Commit 1b3ee94

Browse files
doug445claude
andcommitted
README: pbkdf2 is not broken, it is obsolete — which is worse
A broken function gets a CVE and a deadline and is gone within a year. An obsolete one does exactly what it promised in 2000, passes its tests, files no bug, and ships for another twenty-five years while the hardware built to eat it multiplies. Said in the pbkdf2 section, and tied to why a keyslot still on it is treated as a defect to convert, not a configuration to keep. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
1 parent 9d55671 commit 1b3ee94

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

‎README.md‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,19 @@ ten times longer, and makes you wait ten times longer, and the attacker has
420420
ten thousand times more cores than you do. That is the entire negotiating
421421
position of a memory-free KDF, and it was lost before it started.
422422

423+
**Be precise about the charge: pbkdf2 is not broken. It is obsolete, which
424+
is worse.** A broken function gets a CVE, a headline, a patch and a
425+
deadline; it is gone from production within a year because something forced
426+
it out. An obsolete function does exactly what it promised in 2000, passes
427+
every test written for it, throws no error and files no bug — and so it
428+
stays. Nothing forces it out. It is simply outrun: the hardware it was
429+
designed against no longer exists, the hardware that exists was built to eat
430+
it, and the function keeps reporting success while the wall it was supposed
431+
to be sinks below the attacker's knees. Broken gets fixed. Obsolete gets
432+
shipped, for another twenty-five years, by people who can point to the
433+
standard. That is why LinuxLocker treats a keyslot still on pbkdf2 as a
434+
defect to be converted, not a working configuration to be respected.
435+
423436
Password hashing moved on. The Password Hashing Competition ran from 2013
424437
to 2015 precisely because the field had understood that the only cost a GPU
425438
cannot parallelize away is **memory**: argon2 won, argon2id became RFC 9106,

0 commit comments

Comments
 (0)