Перейти к содержимому
ecdsa.com

HKDF

Функция формирования ключа на основе HMAC по схеме «извлечение и расширение» (extract-and-expand) из RFC 5869, которая превращает общий секрет, например результат ECDH, в один или несколько равномерно случайных ключей, привязанных к строке контекста.
Другие написанияHMAC-based Key Derivation FunctionHKDF-ExpandHKDF-ExtractRFC 5869

Шаг извлечения (Extract) сжимает входной ключевой материал с солью в псевдослучайный ключ PRK = HMAC(salt, IKM); шаг расширения (Expand) растягивает его в выходной ключевой материал OKM = T(1) ‖ T(2) ‖ …, где T(i) = HMAC(PRK, T(i−1) ‖ info ‖ i), длиной до 255 длин хеша (8 160 байт с SHA-256). Строка info разделяет ключи для разных целей, чтобы один секрет никогда не давал один и тот же ключ дважды.

Всё расписание ключей TLS 1.3 — это HKDF с метками (HKDF-Expand-Label, RFC 9846, § 7.1); HKDF также используют HPKE, Signal, Noise, MLS и QUIC, а NIST одобряет ту же двухэтапную конструкцию в SP 800-56C Rev. 2.

HKDF — не функция хеширования паролей: она намеренно сделана быстрой, поэтому пароль с низкой энтропией на её входе не даёт никакой защиты от подбора. Для паролей используйте Argon2id, scrypt или PBKDF2, а HKDF — для секретов с высокой энтропией.

Стандарты и ссылки

Все термины