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

Message Integrity Code

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

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

Концепция кодов целостности сообщений возникла в 1970-х годах в рамках развития криптографии с симметричным ключом. Первые реализации MIC использовали блочные шифры в режиме CBC (Cipher Block Chaining) для создания аутентификационного тега. Однако такие схемы были неэффективны и уязвимы к атакам на основе длины сообщения.

В 1980-х годах были разработаны специализированные алгоритмы MIC, такие как CBC-MAC (Cipher Block Chaining Message Authentication Code), который стал стандартом для многих протоколов. В 1990-х годах появились более совершенные конструкции, включая HMAC (Hash-based Message Authentication Code), основанный на криптографических хеш-функциях. HMAC был стандартизирован в RFC 2104 (1997 год) и стал основой для большинства современных протоколов безопасности, включая IPsec, TLS и SSH.

В 2000-х годах с развитием квантовых вычислений и увеличением вычислительной мощности начали разрабатываться постквантовые MIC, устойчивые к атакам с использованием квантовых компьютеров. Однако на 2025 год такие алгоритмы ещё не получили широкого распространения.

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

По способу вычисления

  1. Блочно-шифровые MIC (CBC-MAC, CMAC, OMAC) — основаны на блочных шифрах (например, AES). Вычисляются путём шифрования данных в режиме CBC с последующим взятием последнего блока шифротекста в качестве тега.
  2. Хеш-функциональные MIC (HMAC, NMAC) — используют криптографические хеш-функции (SHA-1, SHA-2, SHA-3). HMAC применяет хеш-функцию дважды с ключом для повышения безопасности.
  3. Полиномиальные MIC (Poly1305, GHASH) — основаны на умножении полиномов в конечном поле. Обеспечивают высокую скорость вычислений на современных процессорах.
  4. Постквантовые MIC — используют решёточные или кодовые криптосистемы. Пока находятся на стадии исследований и стандартизации.

По области применения

  1. Сетевые протоколы — MIC встроен в TLS, IPsec, SSH, WireGuard, Wi-Fi Protected Access (WPA2/WPA3).
  2. Файловые системы — проверка целостности данных на диске (например, в ZFS, dm-verity).
  3. Криптовалюты — защита транзакций и блоков (в Bitcoin, Ethereum).
  4. Аутентификация сообщений — в системах электронной почты (DKIM, S/MIME), в протоколах аутентификации (Kerberos, RADIUS).

Устройство и принцип работы

Общая схема

  1. Отправитель и получатель заранее обмениваются секретным ключом (K) по защищённому каналу.
  2. Отправитель вычисляет MIC = F(K, M), где M — исходное сообщение, F — алгоритм MIC.
  3. MIC прикрепляется к сообщению (или передаётся отдельно).
  4. Получатель вычисляет MIC' = F(K, M') и сравнивает с полученным MIC. Если MIC' == MIC, сообщение считается подлинным и неискажённым.

Пример: HMAC-SHA256

HMAC-SHA256 вычисляется по формуле: HMAC(K, M) = SHA256((K' ⊕ opad) || SHA256((K' ⊕ ipad) || M)) где K' — ключ, дополненный до длины блока хеш-функции (64 байта для SHA256), opad и ipad — константы (0x5c и 0x36 соответственно), ⊕ — операция XOR, || — конкатенация.

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

  • MIC использует симметричный ключ (один и тот же для отправителя и получателя), поэтому не обеспечивает неотказуемости (non-repudiation) — получатель может подделать MIC, так как владеет ключом.
  • Цифровая подпись использует асимметричную криптографию (открытый/закрытый ключ), что позволяет доказать авторство перед третьей стороной.

Применение

В сетевых протоколах

  • TLS 1.3 — использует HMAC для аутентификации записей и подтверждения целостности рукопожатия.
  • IPsec — применяет HMAC-SHA256 или CMAC-AES для защиты ESP (Encapsulating Security Payload).
  • WireGuard — использует Poly1305 для аутентификации пакетов, что обеспечивает высокую скорость на мобильных устройствах.
  • Wi-Fi Protected Access 3 (WPA3) — использует MIC для защиты от атак повторного воспроизведения и подмены кадров.

В криптовалютах

  • Bitcoin — MIC не используется напрямую, но в транзакциях применяются цифровые подписи ECDSA, которые выполняют аналогичную функцию.
  • Ethereum — в протоколах второго уровня (например, zk-Rollups) MIC применяется для проверки целостности данных в пакетных транзакциях.

В операционных системах

  • Linux — dm-verity использует MIC для проверки целостности корневых файловых систем (например, в Android Verified Boot).
  • Windows — BitLocker применяет MIC для защиты от модификации загрузчика и системных файлов.

Критика и уязвимости

Атаки на MIC

  1. Атака повторного воспроизведения — если MIC не включает временную метку или счётчик, злоумышленник может перехватить сообщение и отправить его повторно. Защита реализуется через добавление nonce (одноразового числа) или порядкового номера.
  2. Атака на основе длины сообщения — некоторые старые реализации MIC (например, CBC-MAC) уязвимы к атакам, когда злоумышленник, зная длину сообщения, может подобрать MIC для коротких сообщений. Современные алгоритмы (CMAC, HMAC) устойчивы к таким атакам.
  3. Квантовая атака — алгоритмы MIC на основе хеш-функций (HMAC) теоретически уязвимы к атаке Гровера, которая сокращает время поиска коллизий с 2^n до 2^(n/2). Для SHA-256 (n=256) это означает снижение стойкости до 128 бит, что всё ещё считается безопасным на 2025 год.
  4. Атака на ключ — если ключ MIC скомпрометирован, злоумышленник может подделывать любые сообщения. Для защиты применяется регулярная смена ключей и использование протоколов управления ключами (например, Diffie-Hellman).

Ограничения

  • MIC не обеспечивает конфиденциальность — сообщение может быть прочитано без ключа.
  • MIC не защищает от атак типа «человек посередине» (MITM) на этапе установки ключа.
  • Для работы MIC требуется предварительное распределение ключей, что усложняет масштабирование в больших системах.

Интересные факты

  • В 2011 году была обнаружена уязвимость в CBC-MAC, используемом в протоколе WPA (Wi-Fi Protected Access), что позволило атаковать сети Wi-Fi с помощью атаки «Beck-Tews». Это привело к переходу на WPA2 с CMAC.
  • Алгоритм Poly1305, разработанный Дэниелом Бернштейном, настолько быстр, что на современных процессорах с поддержкой AES-NI вычисление MIC занимает менее 1 цикла на байт.
  • В 2023 году Национальный институт стандартов и технологий США (NIST) начал процесс стандартизации постквантовых MIC, включая алгоритмы на основе решёток (FrodoKEM, Kyber).

Источники

  • Menezes, A., van Oorschot, P., Vanstone, S. (1996). Handbook of Applied Cryptography. CRC Press.
  • RFC 2104 — HMAC: Keyed-Hashing for Message Authentication.
  • NIST SP 800-38B — Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication.
  • Bernstein, D. J. (2005). The Poly1305-AES message-authentication code.

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

На главную BFOmetr →