MAC — код аутентификации сообщения

Простыми словами

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

Как применяется

MAC применяют для защиты команд, записей протокола и обмена между доверенными компонентами. Алгоритм выбирают вместе с правилами распределения ключей, разделением назначений, защитой от повторной передачи и безопасным сравнением значений.

Пример применения

Сервис отправляет во внутреннюю очередь команду и HMAC от её содержимого, идентификатора и счётчика. Получатель проверяет HMAC и свежесть счётчика; скопированная старая команда отклоняется даже при корректном коде.

Не путать с

  • Цифровая подписьцифровая подпись создаётся закрытым ключом и проверяется открытым.

Как это работает

  1. Согласовать ключОтправитель и получатель безопасно получают общий секрет, предназначенный только для конкретной задачи.
  2. Вычислить кодОтправитель передаёт сообщение в MAC-алгоритм вместе с ключом и получает тег фиксированной длины.
  3. Передать контекстСообщение отправляют с тегом и данными свежести — номером, временем или уникальным идентификатором.
  4. Проверить тегПолучатель пересчитывает MAC, сравнивает значения без утечки по времени и отдельно проверяет повтор сообщения.

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

Частые вопросы

MAC шифрует сообщение?

Нет. Он защищает целостность и подтверждает знание общего секрета, но конфиденциальность требует отдельного шифрования или режима AEAD.

MAC-адрес связан с Message Authentication Code?

Нет. Одинаковая аббревиатура используется для разных понятий: адресации сетевого интерфейса и криптографического кода.

Почему нельзя использовать обычный хеш с секретом произвольным способом?

Самодельная конструкция может быть уязвима; применяют стандартный HMAC или утверждённый MAC-режим с корректным управлением ключами.

MAC — значение, подтверждающее целостность и подлинность сообщения при наличии общего секретного ключа.