Common Scrambling Algorithm

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

CSA (англ. Common Scrambling Algorithm — общий алгоритм скремблирования) — алгоритм шифрования, используемый для защиты цифрового телевизионного потока от несанкционированного доступа. Алгоритм был разработан организацией ETSI и принят на консорциуме DVB в мае 1994 года.[1] На данный момент алгоритм CSA заменен на CSA3, на основе 128-битного AES. Тем не менее, CSA3 пока что используется не широко , так что CSA продолжает быть доминирующим шифром для защиты DVB вещания.

История[править | править вики-текст]

В разработке алгоритма принимали участие 4 европейские организации, входящие в состав ETSI, которые в дальнейшем стали хранителями алгоритма. Это такие организации, как Canal+ SA (англ.), Centre Commun d’Etudes de Télédiffusion et Télécommunications, Irdeto BV (англ.) и News Datacom Limited (англ.). Формально под названием Common Scrambling Algorithm подразумеваются две независимые системы: Общая система дешифрования (Common Descrambling System) и Технология шифрования (Scrambling Technology).[2]

Алгоритм CSA был полностью засекречен вплоть до 2002 года. Некоторые детали его реализации можно было определить из документов, таких как патенты. Однако наиболее существенные части алгоритма, такие как S-блоки, были засекречены. Это делало невозможным использование алгоритма сторонними разработчиками без получения соответствующей лицензии от DVB. В это время все реализации алгоритма были исключительно аппаратными, что также затрудняло обратную разработку и воспроизведение алгоритма в каком-либо виде.[1]

В 2002 году в свет вышла программа FreeDec, в которой был программно реализован алгоритм CSA. Анализ исполняемых файлов этой программы позволил получить дизассемблированный код алгоритма со всеми недостающими деталями. После того, как алгоритм стал рассекречен, у криптоаналитиков появилась возможность искать его слабые места.

Описание алгоритма[править | править вики-текст]

Алгоритм CSA является комбинацией двух различных шифров: блочного шифра и поточного шифра. При работе в режиме шифрования данные сначала шифруются с использованием 64 битного блочного шифра в режиме CBC (англ. Cipher Block Chaining - режим сцепления блоков шифротекста), начиная с конца пакета. Затем применяется поточный шифр (Stream cipher) от начала пакета.

Блочный шифр[править | править вики-текст]

Блочный шифр обрабатывает 64 битные блоки в 56 раундов. Ключ расширяется до 448 бит и на каждом раунд используется 8 бит этого расширенного ключа.

Block cipher encryption

Поточный шифр[править | править вики-текст]

Первые 32 раунда поточного шифра используются для инициализации, и не формирует никаких выходных данных. Первые 64 бит данных используются в качестве вектора инициализации во время этой фазы и остаются неизменными. Потоковый шифр генерирует 2 бита псевдослучайного потока на каждом раунде, которые складываются операцией XOR с данными, начиная с 64 бита пакета.

Stream cipher details

Использование алгоритма[править | править вики-текст]

В соответствии с документами, опубликованными организацией DVB, все технические детали алгоритма CSA являются секретными. Любая организация, желающая использовать этот алгоритм шифрования при создании собственной системы условного доступа, должна получить соответствующую лицензию и подписать соглашение о неразглашении полученной информации. Эти требования остаются в силе несмотря на то, что в настоящее время детали алгоритма повсеместно известны и проведен его тщательный криптоанализ.[2]

Криптоанализ и слабые стороны алгоритма[править | править вики-текст]

Криптоанализ затрудняется тем, что большинство данных защищены как блочным, так и поточным шифрами. Тем не менее, есть части, защищенные всего лишь одним из шифров. Только первые 64-бита зашифрованы блочным шифром, и любые избыточные биты после последнего 64-битного блока (от нуля до семи байт) защищены только потоковым шифром. Тем не менее, блочный шифр применяется от конца пакета к началу в режиме CBC, что означает, что, в конце концов, каждый бит выходного сигнала зависит от каждого бита на входе, и каждая ячейка в 183 байт должна быть декодирована целиком.

Однако, у алгоритма CSA существует ряд слабых мест, которые позволяют вскрывать зашифрованные сообщения методами современного криптоанализа. Поскольку алгоритм был разработан исключительно для применения в области передачи цифрового телевизионного потока, становятся заранее известны некоторые участки открытых сообщений. К ним относятся заголовки MPEG-пакетов, некоторые фрагменты которых имеют предсказуемую структуру. С точки зрения криптоанализа такая особенность является существенной слабостью криптографического алгоритма, которая в данном случае неизбежна.

Так же известно, что длина ключа в CSA составляет всего 64 бита (8 байт) и по современным криптографическим меркам является очень малой. Такая длина вполне допускает взлом ключа методом грубой силы за конечное время, который ещё более облегчается с учётом первой описанной слабости. Более того, фактическая длина секретного ключа составляет всего 48 бит, поскольку два байта из восьми используются в качестве контрольной суммы (байты с номерами 3 и 7, если занумеровать байты ключа от 0 до 7). Эти байты вычисляются путём сложения по модулю 2 трёх предыдущих байт. Ещё 16 бит можно определить с помощью таблиц памяти, построенных на основе шифротекста. Таким образом, прямой перебор нужно применять только к 32 битам из 64, а вторую половину ключа вычислять на основе первой. При реализации такого подхода на основе ПЛИС или с использованием Cell-процессора подбор ключа должен занимать не более 1 секунды. Однако чтобы проверить, является ли подобранный ключ верным, необходимо проанализировать заголовки полученных MPEG-пакетов. Это создает определённые вычислительные трудности при реализации методов взлома.

После того, как были выявлены слабости алгоритма CSA, стало возможным в принципе получить доступ к любым видео данным, зашифрованным с его использованием. Это создает определённые трудности для многочисленных вещателей цифрового телевидения в Европе и других местах, использующих системы условного доступа на основе алгоритма CSA. Несмотря на это, никакие криптографические атаки на алгоритм в настоящее время не опубликованы, и он продолжает широко использоваться.

Большинство нападений на системы платного ТВ не были направлены на сам CSA, а вместо этого были направлены на различные ключевые системы обмена ответственные за генерацию ключей CSA (Conax, Irdeto, VideoGuard и т.д.);

Примечания[править | править вики-текст]

  1. 1 2 Ralf-Philipp Weinmann, Kai Wirt. Analysis of the DVB Common Scrambling Algorithm (англ.)(недоступная ссылка — история) (2004.10.12). — криптоанализ алгоритма CSA. Проверено 10 июня 2010. Архивировано из первоисточника 7 мая 2005.
  2. 1 2 DVB Common Scrambling Algorithm (англ.) (27 June 1996). — стандарт DVB, нормирующий распространение алгоритма CSA. Проверено 10 июня 2010. Архивировано из первоисточника 29 апреля 2012.