режим CCM (счетчик с кодом аутентификации сообщения цепочки блоков шифрования ; счетчик с CBC-MAC ) - это режим работы для криптографических блочных шифров. Это алгоритм аутентифицированного шифрования, предназначенный для обеспечения как аутентификации, так и конфиденциальности. Режим CCM определен только для блочных шифров с длиной блока 128 бит.
nonce CCM должен быть тщательно выбран, чтобы никогда не использоваться более одного раза для данного ключа. Это связано с тем, что CCM является производным от режима CTR, а последний фактически является потоковым шифром.
Как следует из названия, режим CCM сочетает в себе хорошо известный CBC-MAC с хорошо известным режимом шифрования счетчика. Эти два примитива применяются способом «аутентификация-затем-шифрование», то есть сначала вычисляется CBC-MAC для сообщения, чтобы получить тег t; затем сообщение и тег шифруются в режиме счетчика. Одним из ключевых моментов является то, что один и тот же ключ шифрования может использоваться для обоих, при условии, что значения счетчиков, используемые при шифровании, не противоречат (до) вектору инициализации, используемому при аутентификации. Для этой комбинации существует доказательство безопасности, основанное на безопасности базового блочного шифра. Доказательство также применимо к обобщению CCM для любого блочного шифра размера и для любого размера криптографически стойкой псевдослучайной функции (поскольку как в режиме счетчика, так и в CBC-MAC, блок шифр всегда используется только в одном направлении).
Режим CCM был разработан Дугом Уайтингом и Нильсом Фергюсоном. Во время разработки режима CCM Расс Хаусли работал в RSA Laboratories.
. Незначительный вариант CCM, называемый CCM *, используется в стандарте ZigBee. CCM * включает в себя все функции CCM и дополнительно предлагает возможности только для шифрования.
CCM требует двух операций блочного шифрования для каждого блока зашифрованного и аутентифицированного сообщения, и одно шифрование для каждого блока связанных аутентифицированных данных.
Согласно тестам Crypto ++, AES CCM требует 28,6 циклов на байт на процессоре Intel Core 2 в 32-битном режиме.
Заметные недостатки :
Катализатором развития режима CCM стало представление режима OCB для включения в стандарт IEEE 802.11i. Было высказано возражение против включения режима OCB из-за ожидающей рассмотрения заявки на патент на алгоритм. Включение запатентованного алгоритма означало значительные сложности с лицензированием для разработчиков стандарта.
Хотя включение режима OCB оспаривалось из-за этих вопросов интеллектуальной собственности, было решено, что упрощение, обеспечиваемое системой аутентифицированного шифрования, было желательным. Поэтому Хаусли и др. разработал режим CCM как потенциальную альтернативу, не обремененную патентами.
Несмотря на то, что режим CCM менее эффективен, чем режим OCB, беспатентное решение было предпочтительнее, чем решение, усложненное проблемами лицензирования патентов. Поэтому режим CCM стал обязательным компонентом стандарта IEEE 802.11i, а режим OCB был переведен в статус необязательного компонента, прежде чем в конечном итоге был полностью удален.
Режим CCM используется в IEEE 802.11i (как CCMP, алгоритм шифрования для WPA2), IPsec и TLS 1.2, а также Bluetooth Low Energy (начиная с Bluetooth 4.0). Он доступен для TLS 1.3, но не включен по умолчанию в OpenSSL.