Введение

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

История

CSA в основном держался в секрете до 2002 года. Патентные документы содержали некоторые намеки, но важные детали, такие как структура так называемых S-блоков, оставались неизвестными. Без них создание свободных реализаций алгоритма было невозможно. Изначально предполагалось, что CSA будет реализован исключительно в аппаратном обеспечении, что затрудняло обратную разработку существующих реализаций. В 2002 году был выпущен FreeDec, реализующий CSA в программном обеспечении. Несмотря на то, что он был выпущен только в виде исполняемого файла, дизассемблирование раскрыло недостающие детали и позволило повторно реализовать алгоритм на языках программирования высокого уровня. С того момента, как CSA стал полностью известен общественности, криптоаналитики приступили к поиску уязвимостей.

Описание шифра

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

Шифр блока

Блок-шифр обрабатывает 64-битные блоки в 56 раундах. Он использует 8 бит расширенного ключа в каждом раунде.

Шифр потока

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

Слабые стороны

Если CSA будет взломана, зашифрованные передачи DVB станут расшифровываемыми, что подорвет платные цифровые телевизионные услуги, поскольку DVB стандартизирован для цифрового наземного телевидения в Европе и других регионах и используется многими поставщиками спутникового телевидения. Большинство атак на систему платного телевидения были направлены не на саму CSA, а на различные системы обмена ключами, отвечающие за генерацию ключей CSA (Conax, Irdeto, Nagravision, VideoGuard и др.), либо путем обратной разработки и полного взлома алгоритмов, либо путем перехвата ключей в реальном времени по мере их генерации на легальном декодере, с последующим распространением их другим пользователям (так называемый кардшаринг).

Реализация программного обеспечения и битовое сечение

Часть потокового шифра CSA уязвима к бит-разрезке – технике программной реализации, позволяющей одновременно расшифровывать множество блоков или один и тот же блок с использованием множества различных ключей. Это значительно ускоряет перебор полным перебором, реализованный в программном обеспечении, хотя выигрыш недостаточно велик для практической атаки в реальном времени. Блок-шифровую часть сложнее подвергнуть бит-разрезке, поскольку используемые S-блоки слишком велики (8x8) для эффективной реализации с помощью логических операций, что является обязательным условием для того, чтобы бит-разрезка была эффективнее обычной реализации. Однако, поскольку все операции выполняются над 8-битными подблоками, алгоритм можно реализовать с использованием стандартных SIMD-инструкций или разновидности “byteslicing”. Поскольку большинство наборов SIMD-инструкций (за исключением AVX2) не поддерживают параллельный доступ к таблицам поиска, поиск в S-блоках выполняется без использования byteslicing, но это незначительно затрудняет их интеграцию в остальную часть алгоритма. Обе техники используются в libdvbcsa – бесплатной реализации CSA.

Криптоанализ

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

Приближение грубой силы

В то время как алгоритм CSA использует 64-битные ключи, в большинстве случаев неизвестны лишь 48 бит ключа, так как байты 3 и 7 используются как контрольные байты в системах CA и могут быть легко пересчитаны. Это открывает возможность проведения атак по известному открытому тексту в сочетании со знанием структуры исходного открытого текста. Поскольку первые три байта заголовка PES всегда равны 0x000001, можно осуществить атаку полным перебором. Такая атака выявит миллионы возможных ключей, но их количество все же будет достаточно небольшим, чтобы сделать практичным попытку расшифровки других частей данных тем же ключом во втором проходе для восстановления истинного ключа.

Атака известным простым текстом

В 2011 году группа немецких исследователей опубликовала атаку на CSA, используемую в системе DVB. Заметив, что заполнение MPEG 2 часто требует длинных последовательностей нулей, приводящих к шифрованию целых 184-байтовых ячеек, состоящих только из нулей, можно построить радужную таблицу для восстановления ключа на основе такого известного нулевого блока. (Блок считается нулевым, если обнаружены два блока с одинаковым шифротекстом, поскольку предполагается, что оба они являются нулевыми блоками.) Для описанной атаки потребуется около 7,9 ТБ памяти, и она позволит злоумышленнику с графическим процессором восстановить ключ примерно за семь секунд с вероятностью 96,8%. Однако атака эффективна только при наличии таких блоков заполнения, состоящих целиком из нулей (то есть в сценах с очень небольшим движением или шумом), и её можно легко предотвратить, например, отправляя такие нулевые ячейки в незашифрованном виде. Это отличается от примеров атак полным перебором, уже упоминавшихся ранее, тем, что до начала атаки известно содержимое открытого текста всей ячейки, а не только части блока, что позволяет предварительно вычислить радужную таблицу.

Нападение по ошибке

В 2004 году была опубликована атака с внедрением ошибок на блочный шифр. Основная идея заключалась в намеренном внесении нескольких ошибок в промежуточные вычисления, что позволяло восстановить последние восемь ключей раундов. На основе этого можно вычислить итоговый ключ. Хотя для этого требуется небольшое количество ошибок (в среднем две или три на восстановленный ключ раунда), атаки с внедрением ошибок обычно непрактичны, поскольку требуют возможности произвольно изменять биты внутри аппаратной части декодера, который уже обладает целевым ключом.