usnistgov/800-63-3

Improved description of Memorized Secret Verifiers

Opened this issue · 1 comments

In 800-63b section "5.1.1.2 Memorized Secret Verifiers", BALLOON and PBKDF2 are provided as "examples" of suitable key derivation functions, without mentioning whether they are memory-hard functions or not. The use of the word "example" in this context means one can expect there would be other suitable functions.

The next sentence states that a "memory-hard function SHOULD be used", without providing a list of suitable key derivation functions that are memory-hard. Isn’t it a contradiction to state that 1) PBKDF2 is suitable and 2) a “memory-hard function SHOULD be used”? Sure, the spec does not state "memory-hard function SHALL be used", so technically one can argue this is not a contradiction, but still, it is perplexing.

The next sentence ("The key derivation function SHALL use an approved one-way function...") gives an explicit list of approved hash algorithms. Was it intentional to provide an explicit list of approved hash algorithms, and an open-ended recommendation for the key derivation function? This leaves the spec open to interpretation.