Шифр Intel Cascade | |
---|---|
Создатель | Эми Брикель, Гэри Граунк |
Размер ключа | 128 бит |
Размер блока | 128 бит |
Число раундов | 10 раундов AES, 3 (из 32) раунда Serpent |
Intel Cascaded Cipher (Intel CC, каскадный шифр Intel) — блочный шифр, представленный Intel в 2005 году, с высокой пропускной способностью, который используется в качестве дополнительного компонента схемы DRM защиты выходного контента операционной системы Microsoft Windows Vista. Был специально разработан для шифрования видео-контента высокого качества. Для генерации ключей используется стандарт AES, работающий в режиме CTR. Шифрование содержимого производится на основе 3-раундовой версии алгоритма Serpent.
Для использование Intel CC требуется лицензия от корпорации Intel.
Оригинальный патент[1] содержит подробное описание шифра. Каскадный шифр, состоит из двух частей:
Благодаря частой замене внутренних ключей шифр защищен от сдвиговой атаки. Кроме того, даже наличие одного внутреннего ключа не дает злоумышленнику преимущества в расшифровке. Блок шифрования может быть реализован как программно, так и железно.
// Пусть LWE слабый шифр (Light weight encryption), например, 3-раундный Serpent или 2-раундный Rijndael
i = 0 // количество блоков данных
j = 0 // количество внутренних ключей
repeat
InnerKey(j) = AES_in_Counter_Mode_by_Session_Key(j)
for k = 0 to block_size inclusive do // k -- размер блока
C(i) = encrypt_by_InnerKey_using_LWE(P(i))
i = i + 1
end for
j = j + 1
until all plaintext has been encrypted
В режиме счётчик-электронно кодовая книга (режим простой замены) в шифре Cascade используется стандарт AES-128 в режиме счётчика для создания безопасного потока передачи ключей и передает этот поток в трехраундовый Serpent в режиме электронно кодовой книги для того, чтобы зашифровать каждый блок открытого текста. С целью увеличения производительности, каждый поток передачи внутренних ключей используется несколько раз для шифрования нескольких блоков.
В режиме счётчик-счётчик шифр Intel Cascade использует стандарт AES-128 в режиме счётчика, чтобы создать защищенный поток передачи ключей и затем передать этот поток в урезанный Serpent (всего 3 цикла), работающий в режиме счётчика для того, чтобы зашифровать каждый блок открытого текста. С целью увеличения производительности каждый поток передачи внутренних ключей используется несколько раз для шифрования нескольких блоков.
Эффективность предложенного алгоритма сравнима с реализацией хорошо знакомого AES. В случае выбора 3-раундного Serpent в качестве внутреннего шифра время работы легковесного алгоритма составляет около времени работы AES. При этом на работу самого AES для генерации внутренних ключей уходит в 4 раза меньше времени. Итоговый прирост в производительности подобного алгоритма шифрования составляет около 50 %. Дальнейшее ускорение алгоритма происходит за счет того, что внутренний ключ создаётся не для каждого блока отдельности, а для нескольких блоков сразу.
В публикациях компании Майкрософт о безопасности выходного содержимого в Windows Vista утверждается, что уровень безопасности, достигнутый для обычных видео-данных оценивается примерно таким же, как и обычный AES. Это утверждение проверялось компанией Intel за счёт отправки шифра Cascade в сообщество криптографии, чтобы получить оценку безопасности и проверить, могут ли его взломать.
Безопасность системы требует, чтобы текущий активный внутренний ключ нельзя было восстановить из выхода зашифрованного видеопотока после Serpent с уменьшенным количеством раундов. Кроме того, безопасность такого метода очень чувствительна к количеству раундов, используемых в Serpent, его режиму работы и количеству раз, когда внутренний ключ используется повторно.