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

CBC-MAC

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

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

CBC-MAC строится на основе любого блочного шифра (например, AES, DES, ГОСТ 28147-89). Входное сообщение разбивается на блоки фиксированной длины (например, 128 бит для AES). Процесс вычисления имитовставки состоит из последовательного шифрования блоков с использованием предыдущего результата:

  1. Первый блок сообщения \( M_1 \) шифруется на ключе \( K \): \( C_1 = E_K(M_1) \).
  2. Для каждого последующего блока \( M_i \) выполняется операция XOR с предыдущим зашифрованным блоком \( C_{i-1} \), затем результат шифруется: \( C_i = E_K(M_i \oplus C_{i-1}) \).
  3. Итоговым значением MAC является последний зашифрованный блок \( C_n \).

Таким образом, каждый блок шифрования зависит от всех предыдущих блоков сообщения, что обеспечивает защиту от перестановки, вставки или удаления блоков данных.

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

Длина ключа и блока

Длина ключа и блока определяется используемым блочным шифром. Например, для AES-128 длина блока составляет 128 бит, длина ключа — 128, 192 или 256 бит. Выходной MAC имеет ту же длину, что и блок шифра.

Ограничение на длину сообщения

Классический CBC-MAC (без модификаций) безопасен только для сообщений фиксированной длины. Если длина сообщения может варьироваться, злоумышленник может провести атаку с использованием «сцепления блоков» (block chaining attack). Для защиты от этого применяются модификации, такие как:

  • EMAC (Encrypted MAC) — дополнительное шифрование результата на другом ключе.
  • CMAC (Cipher-based MAC) — использование двух производных ключей, что позволяет обрабатывать сообщения произвольной длины.

Безопасность

CBC-MAC является безопасным (в смысле устойчивости к подделке) при условии, что:

  • Используется стойкий блочный шифр.
  • Длина сообщения фиксирована или применяется модификация (например, CMAC).
  • Ключ шифрования не используется для других целей (например, для шифрования данных в режиме CBC).

Разновидности

CMAC (Cipher-based MAC)

CMAC (также известный как OMAC1) — это стандартизированная версия CBC-MAC, предназначенная для сообщений произвольной длины. Он использует два производных ключа \( K_1 \) и \( K_2 \), вычисляемых из основного ключа \( K \). Для сообщения, длина которого кратна размеру блока, перед последним блоком выполняется операция XOR с \( K_1 \); если длина не кратна — сообщение дополняется до полного блока (обычно единицей и нулями), затем выполняется XOR с \( K_2 \). CMAC описан в стандартах NIST SP 800-38B и ISO/IEC 9797-1.

EMAC (Encrypted MAC)

EMAC — модификация, в которой результат CBC-MAC дополнительно шифруется на втором ключе \( K' \). Это позволяет использовать CBC-MAC для сообщений переменной длины без потери безопасности. EMAC применяется, например, в протоколе SSL/TLS (в версиях до TLS 1.3).

XCBC-MAC

XCBC-MAC (eXtended CBC-MAC) — ещё одна модификация, использующая три ключа: один для шифрования блоков, два — для обработки последнего блока. В отличие от CMAC, XCBC-MAC не требует вычисления производных ключей, но требует хранения трёх ключей.

Применение

CBC-MAC и его модификации широко используются в криптографических протоколах и системах:

  • Протоколы аутентификации — в сетевых протоколах (например, в IEEE 802.11i для защиты Wi-Fi, в протоколе SSH).
  • Шифрование с аутентификацией — в комбинированных режимах (например, CCM — Counter with CBC-MAC, GCM — Galois/Counter Mode, где CBC-MAC используется для вычисления тега аутентичности).
  • Финансовые системы — в стандартах ISO 9797-1 для защиты банковских транзакций.
  • Хранение данных — для проверки целостности файлов и сообщений.

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

  • Уязвимость к атакам на основе длины сообщения — классический CBC-MAC небезопасен для сообщений переменной длины без дополнительных мер.
  • Зависимость от блочного шифра — безопасность CBC-MAC полностью определяется стойкостью используемого блочного шифра.
  • Производительность — как и любой режим CBC, CBC-MAC не может быть распараллелен при вычислении, что ограничивает его скорость на многоядерных системах. Однако для аппаратной реализации он достаточно эффективен.
  • Атаки типа «подбор ключа» — при использовании одного и того же ключа для шифрования и MAC (например, в режиме CCM) требуется осторожность, чтобы не нарушить безопасность.

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

CBC-MAC и его варианты описаны в следующих стандартах:

  • NIST SP 800-38B — Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication.
  • ISO/IEC 9797-1 — Information technology — Security techniques — Message Authentication Codes (MACs) — Part 1: Mechanisms using a block cipher.
  • ГОСТ Р 34.13-2015 — Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров. В российском стандарте используется режим выработки имитовставки (IMIT), аналогичный CBC-MAC, но с модификациями, характерными для шифра «Магма» (ГОСТ 28147-89) и «Кузнечик» (ГОСТ Р 34.12-2015).

Пример реализации (псевдокод)

`` function CBC_MAC(key, message): blocks = split_into_blocks(message, block_size) prev = 0 for block in blocks: prev = encrypt(key, block XOR prev) return prev ``

Для сообщений произвольной длины (CMAC): `` function CMAC(key, message): k1, k2 = generate_subkeys(key) blocks = split_into_blocks(message, block_size) if len(blocks) == 0: blocks.append(pad(empty_block, k2)) else: last_block = blocks[-1] if len(last_block) == block_size: blocks[-1] = last_block XOR k1 else: blocks[-1] = pad(last_block) XOR k2 prev = 0 for block in blocks: prev = encrypt(key, block XOR prev) return prev ``

Источники

  • NIST Special Publication 800-38B, «Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication», 2005.
  • ISO/IEC 9797-1:2011, «Information technology — Security techniques — Message Authentication Codes (MACs) — Part 1: Mechanisms using a block cipher».
  • M. Bellare, J. Kilian, P. Rogaway, «The Security of the Cipher Block Chaining Message Authentication Code», Journal of Computer and System Sciences, 2000.
  • A. J. Menezes, P. C. van Oorschot, S. A. Vanstone, «Handbook of Applied Cryptography», CRC Press, 1996.
  • ГОСТ Р 34.13-2015, «Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров».

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

На главную BFOmetr →