Введение
Режим аутентифицированного шифрования для блочных шифров
Режим CCM (counter with cipher block chaining message authentication code; counter with CBC MAC) — это режим работы криптографических блочных шифров. Это алгоритм аутентифицированного шифрования, разработанный для обеспечения как аутентификации, так и конфиденциальности. Режим CCM определен только для блочных шифров с длиной блока 128 бит. Значение nonce (одноразовый номер) в CCM должно быть тщательно подобрано так, чтобы оно никогда не использовалось более одного раза для заданного ключа. Это обусловлено тем, что CCM является производным от режима счетчика (CTR), который, по сути, представляет собой потоковый шифр.
CCM mode (counter with cipher block chaining message authentication code; counter with CBC MAC) is a mode of operation for cryptographic block ciphers. It is an authenticated encryption algorithm designed to provide both authentication and confidentiality. CCM mode is only defined for block ciphers with a block length of 128 bits. The nonce of CCM must be carefully chosen to never be used more than once for a given key. This is because CCM is a derivation of counter (CTR) mode and the latter is effectively a stream cipher.
Шифрование и аутентификация
Как следует из названия, режим CCM объединяет режим счетчика (CTR) для обеспечения конфиденциальности с кодом аутентификации сообщений на основе цепочки блоков (CBC MAC) для аутентификации. Эти два примитива применяются последовательно: сначала вычисляется CBC MAC для сообщения, чтобы получить код аутентификации сообщения (MAC), а затем сообщение и MAC шифруются с использованием режима счетчика. Основная идея заключается в том, что для обоих процессов можно использовать один и тот же ключ шифрования, при условии, что значения счетчика, используемые при шифровании, не совпадают с вектором (предварительной) инициализации, используемым при аутентификации. Существует доказательство безопасности этой комбинации, основанное на безопасности лежащего в ее основе блочного шифра. Это доказательство также применимо к обобщению CCM для любого размера блока и любого размера криптографически стойкой псевдослучайной функции (поскольку в обоих режимах – счетчиковом и CBC MAC – блочный шифр используется только в одном направлении). Режим CCM был разработан Рассом Хаусли, Дугом Уайтингом и Нильсом Фергюсоном. На момент разработки режима CCM Расс Хаусли работал в RSA Laboratories. Незначительная модификация CCM, называемая CCM*, используется в стандарте Zigbee. CCM* включает в себя все возможности CCM и позволяет выбирать длину MAC, вплоть до 0 (что отключает аутентификацию, оставляя только шифрование).
Патенты
Катализатором разработки режима CCM стала подача режима с кодовой книгой смещений (OCB) на включение в стандарт IEEE 802.11i. Возражения против включения режима OCB были высказаны из-за ожидающей патентной заявки на алгоритм. Включение запатентованного алгоритма повлекло бы значительные сложности с лицензированием для разработчиков стандарта. Хотя включение режима OCB оспаривалось по этим вопросам интеллектуальной собственности, было признано, что упрощение, обеспечиваемое системой аутентифицированного шифрования, является желательным. Поэтому Housley и др. разработали режим CCM как потенциальную альтернативу, не обремененную патентами. Несмотря на то, что режим CCM менее эффективен, чем режим OCB, решение, свободное от патентов, было предпочтительнее решения, осложненного вопросами патентного лицензирования. В результате режим CCM стал обязательным компонентом стандарта IEEE 802.11i, а режим OCB был понижен в статусе до необязательного компонента, прежде чем его окончательно исключили.
Использование
CCM-режим используется в IEEE 802.11i (в качестве CCMP, протокола шифрования CCM для WPA2), IPsec и TLS 1.2, а также в Bluetooth Low Energy (начиная с Bluetooth 4.0). Он поддерживается в TLS 1.3, но не включен по умолчанию в OpenSSL.