[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Cfrg] soliciting feedback on HKDF



I believe this is a useful document, nice work!

There is one part which appears (intentionally) underspecified that I
fear may lead to a sub-optimal deployment scenario.  The document says:

4. Applications of HKDF
...
   One significant example is the derivation of cryptographic
   keys from a source of low entropy such as a user's password.
   ...
   Therefore, PBKDF
   applications interested in adapting HKDF to their setting can either
   replace the extract step with an intentional slow-down mechanism
   (e.g., applying repeated hashing) or can use both the extract and
   expand mechanism of HKDF with a slowing-down mechanism applied after
   the extract step and before expansion.

If implementers take this suggestion literally, there is a risk that we
will end up with more than one HKDF-derived password-based KDF with
slightly different properties.

We already have one standardized PBKDF: PKCS#5 PBKDF2 from RFC 2898.  It
is close in spirit to the HKDF.

Q: Does the PBKDF2 have some sub-optimal property that suggests we need
to consider replacements?

If there is not (I am not aware of any reason), I suggest the HKDF
document should recommend applications that are interested in a PBKDF to
look at RFC 2898 PBKDF2 rather than suggesting to invent something based
on HKDF.

The alternative would be to specify a "standard" password-based HKDF
function in the the HKDF document that also takes an iteration count to
burn some cycles.

Given that PKCS#5 PBKDF is already deployed in several protocols, I
believe we need a good rationale for introducing another PBKDF at this
point.

FWIW, understanding if there is any problem with the PBKDF2 would be
useful in the context of the upcoming SCRAM-SHA-1 SASL mechanism too.

Thanks,
/Simon