w3c / w3c/webcrypto

Proposal: better key derivation functions

Open
#265 5 comments 6 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

needs implementor interest proposal
Dominant language
HTML
Stars
294
Forks
78
PR merge metrics
No merged PRs in 30d

Description

pbkdf2 is getting rather old. While it's still acceptable, society as a whole has put quite a lot of work into fast hardware for computing SHA-256 in the past decade. For this reason it is no longer the default recommendation. Specifically, as I understand it, bcrypt and scrypt are the standard boring choices these days (with argon2 sometimes showing up).

Cite: the "password handling" section of this essay gives the right answers for password handling as

Percival, 2009: scrypt or PBKDF2.
Ptacek, 2015: In order of preference, use scrypt, bcrypt, and then if nothing else is available PBKDF2.
Latacora, 2018: In order of preference, use scrypt, argon2, bcrypt, and then if nothing else is available PBKDF2.

It would be nice if the web platform exposed something other than the "if nothing else is available" option.

[Edit a few years later: this conflates "password hashing" and "key derivation", which are different. bcrypt is a reasonable password hashing algorithm but not a reasonable KDF, per this. Fortunately both scrypt and argon2 can serve either role.]

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files or tests are named. Start by reading issue #265 and its linked password-handling essay, then inspect the existing Web Cryptography API treatment of PBKDF2; done would require a decided proposal for exposing an additional key-derivation option.

Written by the indexing model from the issue text.

Assessment

Domain
api, cryptography, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.