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


