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

AES-CCM

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

История и стандартизация

AES-CCM был разработан как часть стандарта IEEE 802.11i (Wi-Fi Protected Access 2, WPA2) для обеспечения безопасности беспроводных локальных сетей. Позднее он был включён в ряд международных стандартов, включая:

  • RFC 3610 — «Counter with CBC-MAC (CCM)» (2003 год), который определил алгоритм для использования в протоколах Интернета.
  • ISO/IEC 19772стандарт на методы аутентифицированного шифрования.
  • NIST SP 800-38C — рекомендации Национального института стандартов и технологий США (NIST) по использованию CCM (2004 год, обновлён в 2007 году).

AES-CCM является обязательным режимом для ряда протоколов, включая ZigBee, Bluetooth Low Energy (BLE) и IEEE 802.15.4 (стандарт для беспроводных сенсорных сетей).

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

AES-CCM использует два этапа: шифрование и аутентификацию. Ключевая особенность — использование одного ключа AES для обеих операций, что упрощает реализацию, но требует строгого соблюдения правил безопасности (например, уникальности nonce для каждого сообщения).

Этапы

  1. Формирование nonce и дополнительных данных: Для каждого сообщения генерируется уникальное значение nonce (число, используемое один раз), которое обычно включает счётчик, временную метку или случайное число. Также могут быть добавлены дополнительные аутентифицированные данные (AAD) — информация, которая не шифруется, но защищается от подделки (например, заголовки пакетов).
  1. Вычисление CBC-MAC: На основе сообщения, AAD и nonce строится блок данных, который обрабатывается через CBC-MAC. Результатом является тег аутентичности фиксированной длины (обычно 4, 6, 8, 10, 12, 14 или 16 байт). CBC-MAC использует AES в режиме сцепления блоков (CBC), где каждый блок шифруется с помощью AES, а результат XOR-ится со следующим блоком.
  1. Шифрование в режиме счётчика: Для шифрования сообщения AES работает в режиме CTR. Счётчик инициализируется на основе nonce, и для каждого блока данных генерируется ключевой поток путём шифрования значения счётчика. Этот поток XOR-ится с открытым текстом, давая шифротекст. Счётчик также используется для шифрования тега MAC, что предотвращает его подделку.
  1. Формирование выходных данных: Выходные данные включают шифротекст и зашифрованный тег аутентичности. В некоторых реализациях nonce может передаваться отдельно (например, в заголовке пакета).

Параметры

AES-CCM имеет несколько настраиваемых параметров:

  • Длина nonce (N): от 7 до 13 байт (в RFC 3610 — от 7 до 13, но в стандарте NIST — от 7 до 13, хотя на практике часто используется 12 байт).
  • Длина тега (T): от 4 до 16 байт, обычно 8 или 16 байт.
  • Длина ключа AES: 128, 192 или 256 бит (наиболее распространён 128-битный ключ).

Применение

AES-CCM широко используется в системах с ограниченными ресурсами (маломощные процессоры, небольшая память) благодаря тому, что для шифрования и аутентификации требуется только один ключ и один блочный шифр.

Основные области применения

  • Беспроводные сети: IEEE 802.11i (WPA2) — для защиты данных в Wi-Fi. IEEE 802.15.4 — для ZigBee, 6LoWPAN и других протоколов IoT.
  • Bluetooth: Bluetooth Low Energy (BLE) использует AES-CCM для шифрования и аутентификации данных на канальном уровне (начиная с версии 4.0).
  • Интернет вещей (IoT): Протоколы CoAP, MQTT-SN, а также стандарт Thread (для умного дома) применяют AES-CCM.
  • Криптографические библиотеки: OpenSSL, libtomcrypt, Crypto++ и другие поддерживают AES-CCM.
  • Стандарты безопасности: IPsec (в режиме ESP) может использовать AES-CCM для аутентифицированного шифрования (RFC 4309).

Примеры в российских стандартах

В России AES-CCM не является обязательным, но может использоваться в коммерческих продуктах, соответствующих международным стандартам. Однако для государственных нужд применяются российские криптоалгоритмы (ГОСТ Р 34.12-2015, ГОСТ Р 34.13-2015), которые имеют аналогичные режимы (например, «Гамма с обратной связью» и «Имитовставка»). В некоторых случаях AES-CCM может быть заменён на режим MGM (Multilinear Galois Mode) на основе ГОСТ, но это не является массовой практикой.

Преимущества и недостатки

Преимущества

  • Эффективность: Используется только один ключ и один алгоритм (AES) для шифрования и аутентификации, что снижает вычислительные затраты.
  • Компактность: Не требует сложных аппаратных модулей, подходит для встраиваемых систем.
  • Стандартизация: Поддержка в большинстве криптографических библиотек и протоколов.

Недостатки

  • Ограничения на размер данных: Максимальная длина сообщения ограничена размером счётчика (обычно до 2^64 блоков, но на практике меньше из-за nonce).
  • Чувствительность к повторному использованию nonce: Если nonce повторяется, теряется как конфиденциальность, так и аутентификация. Это критично для протоколов, где счётчики могут сбрасываться.
  • Скорость: CBC-MAC требует последовательной обработки блоков, что медленнее параллельных режимов (например, GCM).
  • Отсутствие параллелизма: В отличие от GCM, AES-CCM не может быть эффективно распараллелен на этапе аутентификации.

Критика и альтернативы

AES-CCM часто сравнивают с AES-GCM (Galois/Counter Mode), который также обеспечивает аутентифицированное шифрование, но использует умножение в поле Галуа для вычисления тега, что позволяет параллельную обработку и более высокую скорость на современных процессорах. GCM также поддерживает произвольную длину сообщений без ограничений на nonce, но требует более сложной аппаратной реализации.

В некоторых стандартах (например, IEEE 802.11ac) AES-CCM был заменён на AES-GCM из-за лучшей производительности. Однако для систем с ограниченными ресурсами (например, ZigBee) AES-CCM остаётся предпочтительным из-за простоты.

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

AES-CCM считается безопасным при соблюдении условий:

  • Уникальность nonce: Никогда не должен повторяться для одного и того же ключа.
  • Длина тега: Рекомендуется не менее 8 байт для защиты от подделки.
  • Корректная реализация: Ошибки в коде (например, утечка nonce или неправильная обработка AAD) могут привести к уязвимостям.

Известные атаки на AES-CCM (например, атаки на основе времени или на повторное использование nonce) не нарушают алгоритм как таковой, но требуют осторожности при проектировании протоколов.

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

  • В стандарте WPA2 AES-CCM используется как единственный обязательный режим шифрования, заменив устаревший TKIP (Temporal Key Integrity Protocol).
  • В Bluetooth 4.0 и выше AES-CCM защищает данные на уровне канала, но для управления ключами используется протокол Secure Simple Pairing (SSP).
  • Алгоритм был разработан сотрудниками компании Motorola и впервые опубликован в 2002 году.

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

На главную BFOmetr →