режим CCM
Режим CCM ( счетчик с кодом аутентификации сообщения цепочки блоков шифра ; счетчик с CBC-MAC ) — это режим работы криптографических блочных шифров . Это алгоритм шифрования с проверкой подлинности, предназначенный для обеспечения как аутентификации , так и конфиденциальности . Режим CCM определен только для блочных шифров с длиной блока 128 бит. [1] [2]
Nonce CCM должен быть тщательно выбран , более одного раза чтобы он никогда не использовался для данного ключа .Это связано с тем, что CCM является производным от режима счетчика (CTR) , а последний фактически является потоковым шифром . [3]
Шифрование и аутентификация [ править ]
Как следует из названия, режим CCM сочетает в себе режим счетчика (CTR) для обеспечения конфиденциальности с кодом аутентификации сообщения цепочки шифров (CBC-MAC) для аутентификации. Эти два примитива применяются по принципу «аутентификация-затем-шифрование»: CBC-MAC сначала вычисляется для сообщения для получения кода аутентификации сообщения (MAC) , затем сообщение и MAC шифруются в режиме счетчика. Основная идея заключается в том, что один и тот же ключ шифрования может использоваться для обоих, при условии, что значения счетчика, используемые при шифровании, не конфликтуют с вектором (предварительной) инициализации, используемым при аутентификации. Доказательство безопасности [4] существует для этой комбинации на основе безопасности базового блочного шифра. Доказательство также применимо к обобщению CCM для любого размера блока и для любого размера криптостойкой псевдослучайной функции (поскольку и в режиме счетчика, и в CBC-MAC блочный шифр всегда используется только в одном направлении).
Режим CCM был разработан Рассом Хаусли , Дугом Уайтингом и Нильсом Фергюсоном . На момент разработки режима CCM Расс Хаусли работал в RSA Laboratories .
Небольшая вариация CCM, называемая CCM*, используется в стандарте Zigbee . CCM* включает в себя все функции CCM. Он позволяет выбирать длину MAC до 0 (что отключает аутентификацию и становится только шифрованием). [5]
Производительность [ править ]
CCM требует двух операций блочного шифрования для каждого блока зашифрованного и проверенного сообщения и одного шифрования для каждого блока связанных аутентифицированных данных.
Согласно тестам Crypto++ , AES CCM требует 28,6 циклов на байт на процессоре Intel Core 2 в 32-битном режиме. [6]
Заметные недостатки:
- CCM не является «онлайновым» аутентифицированным шифрованием со связанными данными (AEAD) , поскольку длина сообщения (и связанных данных) должна быть известна заранее.
- В конструкции MAC длина связанных данных имеет кодировку переменной длины, которая может быть короче размера машинного слова. Это может привести к пессимистической производительности MAC, если связанные данные длинные (что бывает редко).
- Связанные данные обрабатываются после данных сообщения, поэтому невозможно предварительно рассчитать состояние статических связанных данных.
Патенты [ править ]
Катализатором развития режима CCM стало представление режима смещенной кодовой книги (OCB) для включения в стандарт IEEE 802.11i . Были высказаны возражения против включения режима OCB из-за находящейся на рассмотрении заявки на патент на алгоритм . Включение запатентованного алгоритма означало значительные сложности с лицензированием для разработчиков стандарта.
Хотя включение режима OCB оспаривалось из-за проблем с интеллектуальной собственностью , было решено, что упрощение, обеспечиваемое системой шифрования с проверкой подлинности, является желательным. Поэтому Хаусли и др. разработала режим CCM как потенциальную альтернативу, не обремененную патентами.
Несмотря на то, что режим CCM менее эффективен, чем режим OCB, безпатентное решение было предпочтительнее решения, усложненного проблемами патентного лицензирования. Таким образом, режим CCM стал обязательным компонентом стандарта IEEE 802.11i, а режим OCB был переведен в статус необязательного компонента, прежде чем в конечном итоге был полностью удален.
Используйте [ править ]
Режим CCM используется в IEEE 802.11i (как CCMP , протокол шифрования CCM для WPA2 ), IPsec , [7] и TLS 1.2, [8] а также Bluetooth Low Energy (начиная с Bluetooth 4.0 ). [9] Он доступен для TLS 1.3, но не включен по умолчанию в OpenSSL . [10]
См. также [ править ]
Ссылки [ править ]
- ^ Дворкин, Моррис (май 2004 г.). Рекомендации по режимам работы блочного шифрования: режим CCM для аутентификации и конфиденциальности (PDF) (технический отчет). Специальные публикации NIST. НИСТ . doi : 10.6028/NIST.SP.800-38C . 800-38С.
- ^ Уайтинг, Д.; Хаусли, Р.; Фергюсон, Н. (сентябрь 2003 г.). Счетчик с CBC-MAC (CCM) . IETF . дои : 10.17487/RFC3610 . РФК 3610 .
- ^ Хаусли, Расс (декабрь 2005 г.). «rfc4309» . IETF : 3.
AES CCM использует режим счетчика для шифрования. Как и в случае с любым потоковым шифром, повторное использование одного и того же значения IV с одним и тем же ключом приводит к катастрофе.
- ^ Якоб Йонссон, О безопасности CTR + CBC-MAC
- ^ «Приложение B: Режим работы CCM*». Стандарт IEEE для локальных и городских сетей. Часть 15.4: Низкоскоростные беспроводные персональные сети (LR-WPAN) (PDF) . Стандарты IEEE . 05.09.2011. п. 229 . Проверено 18 декабря 2015 г.
- ^ «Бенчмарки Crypto++ 5.6.0» . Крипто++ . Проверено 6 сентября 2015 г.
- ^ RFC 4309 : использование режима CCM расширенного стандарта шифрования (AES) с инкапсуляцией полезных данных безопасности IPsec (ESP)
- ^ RFC 6655 Наборы шифров AES-CCM для безопасности транспортного уровня (TLS)
- ^ «Безопасность Bluetooth с низким энергопотреблением» . Архивировано из оригинала 02 апреля 2016 г. Проверено 20 апреля 2017 г.
- ^ Касвелл, Мэтт (04 мая 2017 г.). «Использование TLS1.3 с OpenSSL» . OpenSSL Блог . Проверено 29 декабря 2018 г.