CoderTools

Получение ключей HKDF

RFC 5869 Extract-and-Expand получение ключей на основе HMAC

🔒 100% Локальная обработкаВведенные вами данные обрабатываются полностью в браузере и не отправляются на сервер.
Формат вывода

Документация HKDF

HKDF (функция получения ключей Extract-and-Expand на основе HMAC) определена в RFC 5869. Она обеспечивает надёжный метод получения криптографических ключей из входного ключевого материала с использованием двухэтапного процесса: Извлечение и Расширение.

HKDF широко используется в современных протоколах безопасности, включая TLS 1.3, Signal Protocol, Noise Protocol Framework и SSH. Чёткое разделение фаз извлечения и расширения делает его особенно подходящим для получения иерархий ключей.

Фаза извлечения: HKDF-Extract(salt, IKM) → PRK

Фаза извлечения концентрирует потенциально рассеянную энтропию из входного ключевого материала (IKM) в псевдослучайный ключ (PRK) фиксированной длины:

  • Принимает соль (необязательно, по умолчанию HashLen нулей) и IKM как входные данные
  • Вычисляет PRK = HMAC-Hash(salt, IKM)
  • Длина PRK равна длине вывода хеша (32 байта для SHA-256)
  • Соль действует как ключ для HMAC, усиливая извлечение

Фаза расширения: HKDF-Expand(PRK, info, L) → OKM

Фаза расширения растягивает PRK в выходной ключевой материал (OKM) нужной длины:

  • Принимает PRK, info (контекст/метка) и желаемую длину вывода L
  • Итеративно вычисляет T(i) = HMAC-Hash(PRK, T(i-1) | info | счётчик)
  • Объединяет результаты: OKM = T(1) | T(2) | ... | T(N)
  • Максимальная длина вывода составляет 255 × HashLen байт

Типичные случаи использования

  • Расписание ключей TLS 1.3: получение traffic secrets, ключей handshake и ключей приложения
  • Signal Protocol: получение chain keys и message keys из общих секретов
  • Обмен ключами SSH: получение ключей шифрования и целостности после ECDH
  • Иерархия ключей: получение нескольких ключей специального назначения из master secret

HKDF vs PBKDF2

Характеристика HKDF PBKDF2
Стандарт RFC 5869 RFC 8018
Тип входных данных Общие секреты, выводы DH Пользовательские пароли
Итерации Один проход Много (10K-1M)
Скорость Быстро Намеренно медленно
Параметр Info Да (привязка контекста) Нет
Основной случай использования Высокоэнтропийный ввод Низкоэнтропийные пароли

Соображения безопасности

  • HKDF предполагает, что IKM уже содержит достаточную энтропию; не использовать со слабыми паролями
  • Параметр info должен однозначно идентифицировать предполагаемое использование ключа (разделение контекста)
  • Соль необязательна, но рекомендуется при извлечении нескольких ключей из одного IKM
  • PRK никогда не должен использоваться напрямую; всегда используйте фазу расширения для получения финальных ключей

Технические ссылки

Связанные инструменты

Быстрое меню

Нет недавних инструментов