Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 750

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

ПроверилCybersecurity entrepreneur & security researcher

Что такое Код аутентификации сообщения (MAC)?

Код аутентификации сообщения (MAC)Короткий тег на симметричном ключе, аутентифицирующий сообщение и обнаруживающий искажения; вычисляется и проверяется одним и тем же общим секретом.


Код аутентификации сообщения (Message Authentication Code, MAC) — это тег фиксированной длины, вычисляемый по сообщению с использованием симметричного секретного ключа так, что для проверки требуется тот же ключ. Он обеспечивает целостность и подлинность, но не невозможность отказа, поскольку ключ имеется у обеих сторон. Распространённые конструкции — HMAC (на основе хеша, RFC 2104), CMAC (CBC-MAC, NIST SP 800-38B), GMAC (используется в GCM), Poly1305 (в паре с ChaCha20 в ChaCha20-Poly1305, RFC 8439) и KMAC (построен на Keccak/SHA-3, NIST SP 800-185).

Причина, по которой существует HMAC, а не наивный MAC = H(key ‖ message), в том, что хеши на основе конструкции Меркла–Дамгора, такие как MD5, SHA-1 и SHA-256, уязвимы к атакам расширения длины (length-extension): атакующий, знающий корректный тег, может дописать данные и вычислить корректный тег для удлинённого сообщения без ключа. Вложенная структура HMAC H(key ⊕ opad ‖ H(key ⊕ ipad ‖ msg)) устраняет это и имеет формальное доказательство стойкости.

MAC должны проверяться за постоянное время — побайтовое сравнение тегов с ранним возвратом раскрывает их длину через тайминг, что сделало возможной атаку подделки против Keyczar в 2009 году. MAC лежат в основе аутентификации записей TLS, IPsec AH, JWT HS256, подписания API-запросов и каждого AEAD-режима. MAC поверх шифртекста (encrypt-then-MAC) предпочтительнее MAC-then-encrypt, который способствовал атакам padding-oracle, таким как Lucky Thirteen.

flowchart LR
  subgraph Отправитель
    M1[Сообщение] --> T1["MAC(key, message)"]
    K1[Общий секретный ключ] --> T1
    T1 --> S[Отправить сообщение + тег]
  end
  subgraph Получатель
    S --> R["Пересчитать MAC(key, message)"]
    K2[Общий секретный ключ] --> R
    R --> C{"Сравнение с присланным тегом<br/>за постоянное время"}
    C -->|Совпадает| OK[Принять: подлинно и не искажено]
    C -->|Различается| NO[Отклонить: подделано или изменено]
  end

Примеры

  1. 01

    HMAC-SHA-256 используется для аутентификации запросов AWS Signature Version 4.

  2. 02

    В TLS 1.3 в AEAD-режиме ChaCha20-Poly1305 целостность шифртекста обеспечивается Poly1305.

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

Что такое Код аутентификации сообщения (MAC)?

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

Что означает Код аутентификации сообщения (MAC)?

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

Как защититься от Код аутентификации сообщения (MAC)?

Защита от Код аутентификации сообщения (MAC) обычно сочетает технические меры и операционные практики, как описано в определении выше.

Какие есть другие названия Код аутентификации сообщения (MAC)?

Распространённые альтернативные названия: MAC, Криптографическая контрольная сумма.

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