Middle+
51
questionbank

Что такое HMAC?

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

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

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

  1. Берется сообщение.
  2. Секретный ключ дополняется или усекается, чтобы соответствовать размеру блока хеш-функции.
  3. Результат XOR'ится с константой ipad (inner pad).
  4. Сообщение объединяется с этим результатом и обрабатывается хеш-функцией.
  5. Секретный ключ XOR'ится с константой opat (outer pad).
  6. Результат предыдущего хеширования объединяется с этим результатом и снова обрабатывается хеш-функцией.
  7. Результат второй хеш-функции является HMAC.

На стороне отправителя вычисляется HMAC для сообщения с использованием секретного ключа и отправляется вместе с сообщением получателю.

На стороне получателя вычисляется HMAC для полученного сообщения с использованием того же секретного ключа. Полученный HMAC сравнивается с тем, что был отправлен. Если они совпадают, сообщение считается подлинным и не измененным.

HMAC устойчив к атакам расширения длины сообщения (length-extension attacks), от которых могут страдать простые схемы hash(key + message) или hash(message + key).

Примеры использования:

  • Аутентификация сообщений в сетевых протоколах (например, IPsec, TLS/SSL).
  • Проверка целостности данных.
  • Создание JSON Web Tokens (JWT).
javascript