HKDF

HKDF (HMAC-based Key Derivation Function, RFC 5869) — стандартная KDF для вывода нескольких ключей из одного секретного материала. Основа современной криптографии.

Две фазы

Extract

PRK = HMAC(salt, IKM)

Из "сырого" ключевого материала (IKM — например, результат Diffie-Hellman) получаем равномерно распределённый ключ PRK.

Expand

OKM = HKDF-Expand(PRK, info, L)

Из PRK разворачиваем ключ нужной длины L, привязывая к контексту через info.

Info: разделение контекстов

Параметр info критичен: разные info → разные ключи из одного PRK. Обычно: имя протокола + версия + назначение ключа.

info = "TLS 1.3, client handshake traffic"
info = "TLS 1.3, server application traffic"
info = "Noise_XX_25519_ChaChaPoly_SHA256"

Где используется

HKDF vs PBKDF2 vs Argon2

HKDFPBKDF2/Argon2
Входуже секретный ключслабый пароль
Цельрасширить ключусилить пароль
Скоростьбыстронамеренно медленно

HKDF не для паролей. Для паролей — Argon2.

См. также