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

Код аутентичности

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

История и развитие

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

В 1981 году американские криптографы Стивен Беллови и Джо Килиан (Bellovin & Killian) формализовали понятие MAC. Значительный вклад в теорию внесли Михаэль Рабин, Шафи Гольдвассер и Сильвио Микали, которые в 1984 году определили строгие модели безопасности для кодов аутентичности.

Стандартизация MAC началась в 1980-х годах. Наиболее известным ранним стандартом стал ANSI X9.9 (1986), который определял способ вычисления MAC на основе блочного шифра DES (Data Encryption Standard). Позднее, в 1990-х, был разработан и стандартизирован HMAC (Hash-based Message Authentication Code) — метод, основанный на криптографических хеш-функциях, который стал доминирующим в интернет-протоколах (IPsec, TLS, SSH).

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

Работа кода аутентичности основана на использовании секретного ключа, известного только отправителю и получателю. Процесс состоит из двух этапов:

  1. Генерация (вычисление) кода: Отправитель применяет алгоритм MAC к исходному сообщению M и секретному ключу K. Результатом является код аутентичности MAC(K, M).
  2. Проверка (верификация): Получатель, имея то же сообщение M и тот же ключ K, самостоятельно вычисляет код MAC'(K, M). Затем он сравнивает полученный код с тем, который был передан вместе с сообщением. Если MAC' == MAC, то сообщение считается подлинным и не изменённым. Если коды не совпадают, сообщение отвергается.

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

Виды и алгоритмы

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

На основе блочных шифров (CBC-MAC и производные)

Этот класс использует блочный шифр (например, AES) в режиме сцепления блоков (CBC). Сообщение разбивается на блоки, и каждый блок шифруется с использованием результата предыдущего шифрования. Последний зашифрованный блок (или его часть) берётся в качестве MAC. Проблема простого CBC-MAC — уязвимость к атакам на коротких сообщениях, поэтому на практике применяют его модификации, такие как OMAC (One-key MAC) и CMAC (Cipher-based MAC), стандартизированные NIST (США).

На основе хеш-функций (HMAC)

HMAC (Hash-based Message Authentication Code) — наиболее распространённый тип MAC. Он использует криптографическую хеш-функцию (например, SHA-256, MD5, SHA-3) в сочетании с секретным ключом. Алгоритм HMAC определён в стандартах RFC 2104 и FIPS PUB 198. Его конструкция устойчива к атакам на коллизии хеш-функций, что делает его надёжным выбором для большинства современных протоколов. HMAC применяется в протоколах HTTPS (TLS), SSH, IPsec и многих других.

На основе универсального хеширования (Poly1305)

Этот класс использует математически быстрые, но криптографически слабые хеш-функции (универсальные хеши), которые, тем не менее, обеспечивают высокую скорость вычислений. Ключ используется для параметризации хеш-функции, а затем результат хеширования дополнительно шифруется для обеспечения безопасности. Наиболее известный представитель — Poly1305, разработанный Дэниелом Бернштейном. В паре с блочным шифром AES (AES-GCM) или потоковым шифром ChaCha20 (ChaCha20-Poly1305) он обеспечивает высокую производительность на современных процессорах.

Свойства и требования безопасности

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

  • Стойкость к подделке (Forgery Resistance): Противник, не знающий ключа, не должен иметь возможности вычислить корректный код для любого нового сообщения, даже имея доступ к большому количеству пар (сообщение, код) для других сообщений.
  • Стойкость к атаке с выбранным сообщением: Противник может запрашивать коды для любых сообщений по своему выбору, но это не должно дать ему возможности подделать код для нового сообщения.
  • Лавинный эффект: Изменение одного бита в исходном сообщении должно приводить к непредсказуемому и значительному изменению кода аутентичности.

Отличие от других методов

Важно различать код аутентичности и другие криптографические механизмы:

  • Хеш-функция (например, SHA-256): Вычисляет контрольную сумму без использования ключа. Она обеспечивает целостность, но не подлинность. Любой может вычислить хеш и изменить сообщение, вычислив новый хеш.
  • Цифровая подпись: Использует асимметричную криптографию (пару ключей: открытый и закрытый). Обеспечивает не только аутентичность и целостность, но и неотказуемость — отправитель не может отрицать факт подписания сообщения. MAC, в отличие от подписи, требует, чтобы получатель тоже знал секретный ключ, и не может быть проверен третьей стороной без доверия к получателю.
  • Шифрование: Обеспечивает конфиденциальность, но не обязательно целостность. Некоторые режимы шифрования (например, GCM, CCM) одновременно шифруют данные и вычисляют код аутентичности, обеспечивая аутентифицированное шифрование.

Применение

Коды аутентичности широко применяются в современных информационных системах:

  • Сетевые протоколы: В протоколах безопасности транспортного уровня (TLS/SSL) для защиты веб-трафика (HTTPS), в протоколах IPsec (защита IP-пакетов), SSH (удалённый доступ).
  • Беспроводные сети: В стандартах Wi-Fi (WPA2, WPA3) для аутентификации и проверки целостности кадров.
  • Финансовые системы: В банковских протоколах (например, EMV для чиповых карт) для аутентификации транзакций и сообщений между банкоматами и процессинговыми центрами.
  • Хранение данных: Для проверки целостности резервных копий и архивов, а также для аутентификации сообщений в системах контроля версий (например, Git использует HMAC для подписи тегов).
  • Аутентификация пользователей: В некоторых схемах одноразовых паролей (TOTP, HOTP) используется HMAC для вычисления кода на основе текущего времени или счётчика.

Критика и ограничения

Основным ограничением MAC является необходимость безопасного распределения и хранения общего секретного ключа между всеми участниками. Если ключ скомпрометирован, вся система аутентификации перестаёт быть безопасной. Кроме того, MAC не обеспечивает неотказуемости: получатель, зная ключ, может подделать сообщение от имени отправителя, и третья сторона не сможет это доказать.

Также существуют атаки на конкретные реализации, такие как атаки по времени (timing attacks), когда злоумышленник может определить разницу во времени проверки кода, что может раскрыть информацию о ключе. Для защиты от таких атак применяются методы постоянного времени (constant-time comparison).

Источники

  • Menezes, A. J., van Oorschot, P. C., & Vanstone, S. A. (1996). Handbook of Applied Cryptography. CRC Press.
  • Bellare, M., & Rogaway, P. (2005). Introduction to Modern Cryptography. University of California, San Diego.
  • Шнайер, Б. (2002). Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си. Триумф.
  • Стандарт NIST FIPS PUB 198-1: The Keyed-Hash Message Authentication Code (HMAC).
  • RFC 2104: HMAC: Keyed-Hashing for Message Authentication.
  • Стандарт NIST SP 800-38B: Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication.

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

На главную BFOmetr →