Context separation and security limits
06info binds derived material to its use, but the consuming protocol still needs sound input entropy and a clear key-derivation design.
A predictable password does not gain new entropy or a guessing slowdown merely by passing through HKDF. Choose an appropriate password-based KDF design rather than assuming a longer output fixes the input.
Source for this drawing: RFC 5869 · Read RFC section 3.2 ↗
New to this? Start hereA quick picture + helpful background
A message needs an address.
Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.
Helpful first, if these ideas are unfamiliar
These pictures are analogies to help you learn. The linked RFC explains the actual rules.
Terms in this drawing
- Context separation
- Binding key derivation to distinguishable intended uses.
- Entropy
- Uncertainty in the input source; length alone is not uncertainty.
Related RFCs and changes
“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.
info is optional and may be empty, but often matters greatly for separating application contexts. It should be independent of the IKM value.
- info is optional and may be empty, but often matters greatly for separating application contexts. It should be independent of the IKM value.
- With the same PRK and info, different output lengths share a common prefix. If a design needs length bound into the context, encode L in info explicitly; HKDF does not do that automatically.
- Using PRK directly as OKM is NOT RECOMMENDED because it omits info. A Diffie-Hellman IKM should go through extract (SHOULD NOT skip), while a suitable strong pseudorandom IKM can support expand-only use.
- Extract can concentrate existing entropy, not amplify it. HKDF includes no password-guessing slowdown mechanism; it is not by itself a replacement for a password-based KDF.
Fictional labels send and receive are distinct UTF-8 info byte strings chosen by this example application; RFC 5869 does not prescribe their encoding or these labels. Distinct contexts support domain separation, not a mathematical guarantee that every output can never collide. Security depends on appropriate independent inputs, hash assumptions and the protocol using the derived keys.
Read the RFC section ↗