Middle+
65
questionbank

Что такое HMAC и в каких случаях его используют?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

HMAC (Hash-based Message Authentication Code) — это механизм для проверки целостности и аутентификации сообщения с использованием криптографической хэш-функции и секретного ключа.

Принцип работы:

  1. Ключ расширяется до размера блока хэш-функции.
  2. Ключ XORится с внутренней фиксированной константой (inner padding) и конкатенируется с сообщением.
  3. Вычисляется хэш от результата.
  4. Ключ XORится с внешней фиксированной константой (outer padding) и конкатенируется с хэшем из шага 3.
  5. Окончательный HMAC вычисляется как хэш от результата шага 4.

Используется для:

  • Проверки целостности данных (удостовериться, что сообщение не было изменено).
  • Аутентификации сообщения (удостовериться, что сообщение отправлено известным источником, обладающим секретным ключом).
  • В протоколах безопасности, таких как TLS/SSL, IPsec, JWT.

Пример генерации HMAC (псевдокод):

plaintext

где:

  • H — хэш-функция (например, SHA-256).
  • key — секретный ключ.
  • message — сообщение.
  • || — операция конкатенации.
  • ipad — внутренняя фиксированная константа.
  • opad — внешняя фиксированная константа.
  • XOR — побитовая операция исключающее ИЛИ.

HMAC устойчив к атакам удлинением, в отличие от простого использования Hash(key || message) или Hash(message || key).