8 — длина тега (в байтах).
CCM — это семейство алгоритмов AEAD (аутентифицированное шифрование со связанными данными), которые параметризуются:
- алгоритм блочного шифрования (например, AES-128, AES-192, AES-256, Camellia-128, …) с размером блока 128 бит;
- функция генерации счетчика;
- функция форматирования для первого блока;
- длина тега.
СКК определяется НИСТ СП 800-30С.
На практике все используют генерацию счетчика и функцию форматирования
указано в NIST SP 800-30C, приложение A. Спецификация функции форматирования фактически представляет собой семейство функций с одним параметром: длиной поля AEAD. Таким образом, «AES-CCM» оставляет неоднозначными три параметра: длину ключа AES, длину д поля AEAD и длины т тега.
Значение д не имеет прямого влияния на безопасность. Он ограничивает размер AEAD, который может быть передан, и ограничивает размер одноразового номера. Значение т влияет на безопасность: слишком короткий тег может быть взломан методом грубой силы. Длина тега может составлять всего 4 байта, что легко подобрать. Такие короткие теги используются в коммуникационных протоколах, где перебор тега является активной атакой, а вероятность успешной активной атаки считается приемлемо низкой.
Параметры д и т закодированы в первом блоке данных, поэтому реализация дешифрования-проверки CCM для данного блочного шифра может однозначно расшифровать и проверить ввод, какими бы ни были эти значения. Некоторые протоколы ограничивают д и т к конкретным значениям. Для длины тега т, это параметр безопасности. За д, это может позволить немного упростить реализации и облегчить взаимодействие (меньше риска различий в поддержке, согласованное ограничение размера AEAD, меньше нагрузки на тестирование совместимости…).
Обратите внимание, что д и т являются входными данными для расчета тега. Поэтому значение тега зависит от этих параметров. В частности, для данного сообщения н-байтовый тег CCM не является усечением 16-байтового тега для н байт. (Это отличается от GCM, где GCM с более коротким тегом — это просто GCM с усеченным полноразмерным тегом.)
Если это не указано явно, длина тега обычно является максимально возможной и составляет один блок (128 бит = 16 байт). Это также может быть написано «AES-CCM-16» (или типографскими вариантами). «AES-CCM-8» означает AES-CCM с 64-битным = 8-байтовым тегом и т. д.
Например, в TLS 1.2 наборы шифров CCM определяются RFC 6655 (и другие RFC для Camellia и ARIA), со ссылкой на RFC 5116 §5.3 и §5.4. RFC 6655 §3 указывает 12-байтовый одноразовый номер, что эквивалентно тому, что д = 3. xxx_CCM
наборы шифров используют тег максимальной длины (т = 16), тогда как xxx_CCM_8
наборы шифров используют тег половинной длины (т = 8).
8-байтовый (64-битный) тег будет неудобно мал в ситуациях, когда злоумышленник может подобрать все возможные теги методом грубой силы. Однако, когда тег используется для связи TLS, если злоумышленник сделает неверный выбор для тега, получатель немедленно закроет соединение, поэтому для каждого предположения требуется новое соединение. Это делает грубую силу очень дорогой. С DTLS получатель будет принимать несколько поврежденных пакетов, поэтому злоумышленник может сделать несколько предположений для каждого соединения, но атака по-прежнему является активной атакой на текущее соединение, и для злоумышленника часто нецелесообразно пробовать незначительное количество пакетов. догадки, не перегружая полосу пропускания приемника и не запуская защиту от переполнения.