Middle
80
questionbank

Что такое HMAC и как он используется?

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

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

Алгоритм работы:

  1. Формирование внутреннего и внешнего ключей из секретного ключа и констант (ipad, opad).
  2. Вычисление внутреннего хеша: hash(секретный ключ XOR ipad + сообщение).
  3. Вычисление внешнего хеша: hash(секретный ключ XOR opad + внутренний хеш). Это и есть HMAC.

Использование:

  • Аутентификация API запросов: Сервер и клиент имеют общий секретный ключ. Клиент вычисляет HMAC для данных запроса и отправляет его в заголовке. Сервер вычисляет HMAC по тем же данным и ключу, сравнивая с присланным значением. Если совпадает, запрос считается аутентичным.
  • Проверка целостности данных: Если HMAC сообщения совпадает с повторно вычисленным HMAC, можно быть уверенным, что данные не были изменены во время передачи.
  • Использование в JSON Web Tokens (JWT): HMAC часто применяется как алгоритм цифровой подписи (HS256, HS384, HS512) для обеспечения целостности данных токена.

Пример реализации (псевдокод):

javascript

Ключевое отличие от простого хеширования с добавлением ключа (hash(ключ + сообщение) или hash(сообщение + ключ)) в том, что HMAC устойчив к атакам удлинения сообщений, так как используется две фазы хеширования с разными константами padding.