CBC-MAC
CBC-MAC (Cipher Block Chaining Message Authentication Code) — это алгоритм построения имитовставки (кода аутентичности сообщения, MAC), основанный на блочном шифре, работающем в режиме сцепления блоков (CBC). Используется для проверки целостности и подлинности данных в криптографических системах.
Принцип работы
CBC-MAC строится на основе любого блочного шифра (например, AES, DES, ГОСТ 28147-89). Входное сообщение разбивается на блоки фиксированной длины (например, 128 бит для AES). Процесс вычисления имитовставки состоит из последовательного шифрования блоков с использованием предыдущего результата:
- Первый блок сообщения \( M_1 \) шифруется на ключе \( K \): \( C_1 = E_K(M_1) \).
- Для каждого последующего блока \( M_i \) выполняется операция XOR с предыдущим зашифрованным блоком \( C_{i-1} \), затем результат шифруется: \( C_i = E_K(M_i \oplus C_{i-1}) \).
- Итоговым значением 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 →