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

CMAC

CMAC (Cipher-based Message Authentication Code) — это алгоритм выработки имитовставки (кода аутентификации сообщения), основанный на блочном симметричном шифре. CMAC используется для обеспечения целостности и подлинности данных, позволяя обнаружить случайные или преднамеренные изменения сообщения. Алгоритм стандартизирован в ряде международных и национальных стандартов, включая NIST SP 800-38B (США) и ISO/IEC 9797-1 (международный). В российской криптографической практике аналогом CMAC является режим выработки имитовставки, определённый в ГОСТ Р 34.13-2015 (режим «Простая замена с зацеплением» или «Имитовставка»).

История

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

В начале 2000-х годов криптографы Тосио Ивата и Кайсукэ Куросава предложили усовершенствованный вариант, названный OMAC (One-Key CBC-MAC). OMAC требовал только один ключ шифрования и устранял недостатки CBC-MAC. Позднее алгоритм был доработан и стандартизирован как CMAC. В 2005 году Национальный институт стандартов и технологий США (NIST) опубликовал рекомендацию SP 800-38B, описывающую три режима аутентификации: CMAC, CCM (Counter with CBC-MAC) и GCM (Galois/Counter Mode). CMAC стал одним из базовых строительных блоков для многих протоколов безопасности, включая TLS, IPsec и SSH.

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

CMAC основан на блочном шифре (например, AES, 3DES, ГОСТ 28147-89, «Кузнечик»). Алгоритм обрабатывает сообщение блоками фиксированной длины (обычно 128 или 64 бита) и вырабатывает имитовставку фиксированной длины (обычно равной длине блока шифра, но может быть усечена).

Основные этапы

  1. Генерация подключей. На основе секретного ключа шифрования K вычисляются два вспомогательных подключа K1 и K2. Для этого сначала шифруется нулевой блок (все биты равны нулю) на ключе K, получая промежуточное значение L. Затем L умножается на константу в поле Галуа GF(2^n) (где n — длина блока в битах) для получения K1, а K1 — на ту же константу для получения K2. Конкретные константы и операции зависят от длины блока (например, для 128-битного блока используется константа 0x87, для 64-битного — 0x1B).
  1. Разбиение сообщения. Сообщение разбивается на блоки M1, M2, ..., Mn, где n — количество блоков. Если длина последнего блока меньше длины блока шифра, к нему добавляется единичный бит (1) и необходимое количество нулевых битов (padding). Если последний блок полный, дополнение не выполняется.
  1. Обработка блоков. Обработка выполняется по схеме CBC (Cipher Block Chaining):
  • Первый блок M1 шифруется на ключе K, результат обозначается как C1.
  • Для каждого следующего блока Mi (i от 2 до n-1) выполняется операция XOR с предыдущим зашифрованным блоком Ci-1, затем результат шифруется на ключе K, получая Ci.
  • Для последнего блока Mn применяется модификация: если блок был дополнен, то перед XOR с предыдущим зашифрованным блоком C(n-1) к нему применяется XOR с подключом K2; если блок не дополнялся (полный), то используется подключ K1. Затем результат шифруется на ключе K.
  1. Формирование имитовставки. Результат шифрования последнего блока (Cn) является полной имитовставкой. При необходимости она может быть усечена до требуемой длины (например, до 64 бит для AES-128).

Ключевые особенности

  • Одноключевая схема: Для выработки и проверки имитовставки используется один и тот же секретный ключ K.
  • Устойчивость к атакам: CMAC защищён от атак на основе коллизий и удлинения сообщения, которым был подвержен классический CBC-MAC.
  • Гибкость: Может работать с сообщениями любой длины, включая пустые (в этом случае обрабатывается только один дополненный блок).

Применение

CMAC широко используется в различных криптографических протоколах и системах:

  • Протоколы безопасности: TLS (Transport Layer Security) для аутентификации записей, IPsec (Internet Protocol Security) для проверки целостности пакетов, SSH (Secure Shell) для аутентификации сообщений.
  • Стандарты беспроводной связи: IEEE 802.11 (Wi-Fi) использует CMAC на основе AES для защиты управляющих кадров (AES-CMAC). IEEE 802.15.4 (ZigBee, Thread) применяет CMAC для аутентификации данных.
  • Хранение данных: В системах шифрования дисков (например, BitLocker) CMAC может использоваться для проверки целостности зашифрованных секторов.
  • Финансовые технологии: В стандартах EMV (Europay, Mastercard, Visa) для аутентификации транзакций.
  • Криптографические API: Многие библиотеки (OpenSSL, Bouncy Castle, Crypto++ и др.) предоставляют реализацию CMAC.

Сравнение с другими алгоритмами

CMAC vs HMAC

  • Основа: CMAC основан на блочном шифре, HMAC — на хеш-функции (например, SHA-256).
  • Производительность: CMAC может быть быстрее HMAC на аппаратных платформах с аппаратной поддержкой блочных шифров (например, AES-NI). HMAC, как правило, быстрее на программных реализациях.
  • Ключи: CMAC использует один ключ (как и блочный шифр), HMAC — два ключа (внутренний и внешний), хотя они производятся из одного мастер-ключа.
  • Безопасность: Оба алгоритма считаются криптостойкими при правильном использовании. Уязвимости CMAC могут быть связаны с уязвимостями базового блочного шифра.

CMAC vs CBC-MAC

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

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

  • Зависимость от блочного шифра: Стойкость CMAC полностью определяется стойкостью используемого блочного шифра. Если шифр будет взломан (например, найдена эффективная атака на AES), CMAC станет небезопасным.
  • Длина имитовставки: Усечение имитовставки (например, до 64 бит) снижает уровень безопасности, так как вероятность подбора правильной имитовставки возрастает. Рекомендуется использовать полную длину блока шифра.
  • Атаки по сторонним каналам: Как и любой криптографический алгоритм, реализация CMAC может быть подвержена атакам по времени, энергопотреблению или электромагнитному излучению. Для защиты требуются специальные меры (например, константное время выполнения).
  • Сложность реализации: Неправильная реализация (например, ошибка в генерации подключей или дополнении) может привести к уязвимостям.

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

  • CMAC часто называют «одноключевым CBC-MAC» (OMAC), хотя это не совсем корректно, так как OMAC был предшественником CMAC.
  • В стандарте NIST SP 800-38B CMAC определён как один из трёх режимов аутентификации наряду с CCM и GCM. GCM, в отличие от CMAC, обеспечивает также шифрование данных.
  • В российской криптографии режим выработки имитовставки по ГОСТ Р 34.13-2015 (режим «Простая замена с зацеплением») функционально аналогичен CMAC, но использует другие константы и алгоритмы генерации подключей, основанные на ГОСТ 28147-89 или «Кузнечик».
  • CMAC может быть использован для построения псевдослучайных функций (PRF) и генераторов псевдослучайных чисел.

Источники

  • NIST Special Publication 800-38B: Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication.
  • ISO/IEC 9797-1:2011: Information technology — Security techniques — Message Authentication Codes (MACs) — Part 1: Mechanisms using a block cipher.
  • ГОСТ Р 34.13-2015: Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров.
  • Morris Dworkin: Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication (NIST, 2005).
  • Tetsu Iwata, Kaoru Kurosawa: OMAC: One-Key CBC MAC (Fast Software Encryption, 2003).

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

На главную BFOmetr →