Криптографический код аутентичности сообщения¶
Криптографический код аутентичности сообщения (MAC, от англ. Message Authentication Code) — это фиксированный набор данных, вычисляемый на основе сообщения и секретного ключа, который используется для проверки подлинности сообщения и его целостности. MAC позволяет получателю убедиться, что сообщение не было изменено в процессе передачи (целостность) и что оно исходит от отправителя, владеющего тем же секретным ключом (аутентичность). В отличие от электронной подписи, MAC не обеспечивает неотказуемости, так как ключ известен обеим сторонам.
¶История и происхождение
Понятие кода аутентичности сообщения было формализовано в 1970-х годах в рамках развития криптографии с симметричным ключом. Первые практические реализации MAC основывались на блочных шифрах, таких как DES (Data Encryption Standard). В 1981 году Национальный институт стандартов и технологий США (NIST) опубликовал стандарт DES MAC (FIPS 113), который использовал алгоритм DES в режиме сцепления блоков шифротекста (CBC) для генерации аутентификационного кода.
В 1990-х годах, с появлением хеш-функций (например, MD5, SHA-1), были разработаны конструкции на их основе, такие как HMAC (Hash-based Message Authentication Code). HMAC был стандартизирован в 1997 году (RFC 2104) и стал широко применяться в протоколах IPsec, SSL/TLS и SSH. Позднее, в 2000-х годах, появились алгоритмы MAC на основе блочных шифров с режимами, устойчивыми к атакам, например, CMAC (Cipher-based MAC) и OMAC.
¶Принцип работы
MAC-алгоритм принимает на вход два параметра: сообщение произвольной длины и секретный ключ. На выходе формируется строка фиксированной длины (обычно 64, 128 или 256 бит). Процесс вычисления включает следующие этапы:
- Инициализация — задаётся секретный ключ, который известен только отправителю и получателю.
- Обработка сообщения — сообщение разбивается на блоки (если используется блочный шифр) или обрабатывается целиком (если используется хеш-функция).
- Генерация MAC — с помощью выбранного алгоритма (например, HMAC или CMAC) вычисляется код.
- Передача — отправитель передаёт получателю сообщение и вычисленный MAC.
- Верификация — получатель повторно вычисляет MAC на основе полученного сообщения и своего секретного ключа. Если вычисленный MAC совпадает с переданным, то сообщение считается аутентичным и целостным.
Если злоумышленник изменит сообщение или MAC, то при верификации будет получен несовпадающий код, и получатель отклонит сообщение.
¶Виды и классификация
Существует несколько основных типов MAC-алгоритмов, различающихся по используемому криптографическому примитиву:
¶На основе блочных шифров
- CBC-MAC — использует режим сцепления блоков шифротекста (CBC). Последний блок шифротекста или его часть берётся в качестве MAC. Уязвим для атак на сообщения переменной длины, поэтому применяется с фиксированной длиной сообщений или с дополнительными мерами (например, CMAC).
- CMAC (OMAC) — улучшенная версия CBC-MAC, устойчивая к атакам на сообщения произвольной длины. Стандартизирован NIST (SP 800-38B).
- PMAC — параллельный MAC, позволяющий вычислять код быстрее за счёт параллельной обработки блоков.
¶На основе хеш-функций
- HMAC — наиболее распространённый тип MAC. Использует криптографическую хеш-функцию (например, SHA-256) и секретный ключ, смешиваемый с сообщением через два раунда хеширования. Формула:
HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)), гдеK'— ключ, дополненный до размера блока хеша,ipadиopad— внутренняя и внешняя константы. HMAC устойчив к атакам на хеш-функции (например, к коллизиям). - NMAC — предшественник HMAC, использует два независимых ключа для внутреннего и внешнего хеширования.
¶На основе универсальных хеш-функций
- Poly1305-AES — использует полиномиальное хеширование с секретным ключом и шифрование AES. Высокая скорость работы на современных процессорах.
- UMAC — основан на универсальном хешировании, обеспечивает высокую производительность.
¶Другие типы
- CW-MAC — использует шифрование с ключом и контрольную сумму.
- MAC с использованием потоковых шифров — например, на основе алгоритма ChaCha20-Poly1305, где MAC вычисляется с помощью Poly1305.
¶Свойства и требования
Для обеспечения безопасности MAC должен удовлетворять следующим требованиям:
- Стойкость к подделке — злоумышленник, не зная ключа, не должен иметь возможности вычислить корректный MAC для нового сообщения с вероятностью, существенно превышающей случайное угадывание (2⁻ⁿ, где n — длина MAC в битах).
- Стойкость к коллизиям — практически невозможно найти два разных сообщения с одинаковым MAC при неизвестном ключе.
- Стойкость к атакам на основе известных пар — даже имея множество пар (сообщение, MAC), злоумышленник не должен восстановить ключ или подделать MAC для нового сообщения.
¶Применение
MAC широко используется в различных областях информационной безопасности:
- Протоколы сетевой безопасности — IPsec (для аутентификации пакетов), SSL/TLS (для защиты целостности данных), SSH (для аутентификации сеансов).
- Аутентификация сообщений — в системах электронной почты (например, S/MIME), в банковских протоколах (EMV, 3D Secure).
- Защита целостности данных — в системах хранения (например, в файловых системах с шифрованием, таких как BitLocker), в протоколах передачи данных (например, в беспроводных сетях Wi-Fi с WPA2/WPA3).
- Криптовалюты и блокчейн — для аутентификации транзакций и проверки целостности блоков (например, в протоколах на основе HMAC).
- Встраиваемые системы и IoT — для аутентификации команд и данных в устройствах с ограниченными ресурсами (например, на основе CMAC).
¶Примеры алгоритмов
- HMAC-SHA256 — стандартный алгоритм, используемый в протоколах TLS 1.2 и 1.3, IPsec, SSH. Обеспечивает стойкость 128 бит при длине ключа 256 бит.
- AES-CMAC — используется в IEEE 802.11 (Wi-Fi) для защиты кадров управления, а также в протоколах аутентификации в сетях 5G.
- Poly1305-AES — часть набора ChaCha20-Poly1305, применяется в протоколе TLS 1.3 и в системе шифрования OpenSSH.
- UMAC — используется в протоколах быстрой аутентификации, например, в некоторых реализациях SSH.
¶Критика и ограничения
Основное ограничение MAC — отсутствие неотказуемости. Поскольку секретный ключ известен обеим сторонам, отправитель может отрицать факт отправки сообщения, утверждая, что MAC был сгенерирован получателем. Для решения этой проблемы применяются электронные подписи, основанные на асимметричной криптографии.
Другой недостаток — необходимость безопасного обмена ключами между сторонами. Если ключ скомпрометирован, злоумышленник может подделывать любые сообщения. Кроме того, некоторые реализации MAC (например, CBC-MAC для сообщений переменной длины) могут быть уязвимы к атакам, если не используются дополнительные меры защиты.
¶Сравнение с другими методами
| Характеристика | MAC | Электронная подпись | Хеш-функция |
|---|---|---|---|
| Используемый ключ | Симметричный (один) | Асимметричный (пара) | Не требуется |
| Обеспечение аутентичности | Да | Да | Нет |
| Обеспечение целостности | Да | Да | Да (без аутентификации) |
| Неотказуемость | Нет | Да | Нет |
| Скорость | Высокая | Низкая | Высокая |
| Вычислительная сложность | Низкая | Высокая | Низкая |
¶Интересные факты
- Алгоритм HMAC был разработан американскими криптографами Михаилом Белларе и Раном Канедой в 1996 году.
- В 2011 году NIST выпустил стандарт SP 800-38B, описывающий CMAC, который заменил устаревший DES MAC.
- В протоколе TLS 1.3 используется только HMAC-SHA256, а более старые версии (TLS 1.0–1.2) поддерживали HMAC-MD5 и HMAC-SHA1, которые ныне считаются небезопасными.
- MAC-коды могут быть использованы в системах аутентификации с временными метками (например, в протоколе HOTP — HMAC-based One-Time Password).
¶Источники
- RFC 2104 — HMAC: Keyed-Hashing for Message Authentication
- NIST Special Publication 800-38B — Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication
- NIST Special Publication 800-107 — Recommendation for Applications Using Approved Hash Algorithms
- M. Bellare, R. Canetti, H. Krawczyk — Keying Hash Functions for Message Authentication (1996)
- A. Menezes, P. van Oorschot, S. Vanstone — Handbook of Applied Cryptography (1996)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


