Открыть сервис

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

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

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

Процесс аутентификации с помощью MAC состоит из двух этапов: генерация кода и его верификация. На стороне отправителя алгоритм MAC принимает на вход сообщение произвольной длины M и секретный ключ K, известный обеим сторонам. На выходе получается код аутентификации C = MAC(K, M). Этот код, как правило, имеет фиксированную длину, например, 128 или 256 бит. Отправитель передаёт получателю пару (M, C). Получатель, используя тот же ключ K и тот же алгоритм, вычисляет ожидаемый код C' = MAC(K, M). Если C' совпадает с полученным C, сообщение считается аутентичным. Любое расхождение свидетельствует либо о модификации сообщения, либо о том, что оно было отправлено не тем лицом, которому известен ключ.

Классификация

Коды аутентификации сообщения делятся на несколько типов в зависимости от способа построения и используемых криптографических примитивов.

MAC на основе блочных шифров

Наиболее распространённые методы построения MAC основаны на блочных шифрах, таких как AES (Advanced Encryption Standard). Алгоритм CBC-MAC (Cipher Block Chaining MAC) является классическим примером. Сообщение разбивается на блоки, каждый блок шифруется в режиме сцепления (CBC), и последний зашифрованный блок или его часть используется в качестве MAC. Однако простой CBC-MAC уязвим для атак на сообщения переменной длины, поэтому на практике применяются его модификации, такие как CMAC (Cipher-based MAC), который использует три ключа, полученные из основного ключа, для защиты от таких атак. Другой стандарт, OMAC (One-key CBC-MAC), является упрощённой версией CMAC, требующей только одного ключа.

MAC на основе хеш-функций

Конструкция HMAC (Hash-based Message Authentication Code) является стандартом де-факто для аутентификации сообщений в интернет-протоколах, таких как TLS, IPsec и SSH. HMAC использует криптографическую хеш-функцию (например, SHA-256) и секретный ключ. Алгоритм HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)), где H — хеш-функция, K' — ключ, дополненный до длины блока хеш-функции, opad и ipad — фиксированные константы (внешняя и внутренняя подкладки). Такая конструкция устойчива к атакам на хеш-функции, включая атаки на коллизии, и обеспечивает безопасность при условии, что хеш-функция является криптостойкой.

MAC на основе универсального хеширования

Этот подход использует семейство хеш-функций, называемых универсальными, которые обеспечивают низкую вероятность коллизий при случайном выборе функции из семейства. Примером является UMAC (Universal MAC) и его вариант VMAC (Very fast MAC). Эти алгоритмы чрезвычайно быстры на современных процессорах, так как используют простые операции, такие как умножение и сложение. Они часто применяются в высокопроизводительных сетевых протоколах, где скорость обработки критична.

Требования к безопасности

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

Отличие от цифровой подписи

Хотя и MAC, и цифровая подпись решают задачу аутентификации и целостности, между ними есть принципиальные различия. Цифровая подпись использует асимметричную криптографию: закрытый ключ для подписания и открытый ключ для проверки. Это позволяет любому, у кого есть открытый ключ, проверить подпись, что делает цифровую подпись пригодной для публичной верификации. MAC же требует, чтобы ключ был известен только отправителю и получателю, и не может быть проверен третьей стороной. Кроме того, цифровая подпись обеспечивает неотказуемость (non-repudiation): отправитель не может отрицать, что подписал сообщение, так как только он обладает закрытым ключом. MAC такой гарантии не даёт, так как обе стороны имеют доступ к одному и тому же ключу.

Применение

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

Уязвимости и атаки

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

Стандартизация

Наиболее распространённые алгоритмы MAC стандартизированы международными и национальными организациями. HMAC определён в RFC 2104 (1997 год) и ANSI X9.71. CMAC описан в NIST SP 800-38B и RFC 4493. UMAC и VMAC стандартизированы в RFC 4418 и RFC 6687 соответственно. В России для целей аутентификации сообщений могут использоваться алгоритмы, основанные на ГОСТ Р 34.11-2012 (Стрибог) и ГОСТ Р 34.13-2015, которые определяют режимы выработки имитовставки (аналога MAC) на основе блочных шифров.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →