Общий алгоритм скремблирования ( CSA ) — это алгоритм шифрования, используемый в цифровом телевизионном вещании DVB для шифрования видеопотоков .
CSA был определен ETSI и принят консорциумом DVB в мае 1994 года. Его сменил CSA3, [1] основанный на комбинации 128-битного AES и конфиденциального блочного шифра XRC. Однако CSA3 пока не используется в значительной степени, поэтому CSA продолжает оставаться доминирующим шифром для защиты DVB-трансляций.
CSA в значительной степени держался в секрете до 2002 года. Патентные документы давали некоторые намеки, но важные детали, такие как расположение так называемых S-boxes , оставались секретными. Без них свободные реализации алгоритма были невозможны. Первоначально CSA должен был остаться реализованным только в аппаратном обеспечении, что затрудняло обратную разработку существующих реализаций.
В 2002 году был выпущен FreeDec, реализующий CSA в программном обеспечении . Хотя он был выпущен только в двоичном виде , дизассемблирование выявило недостающие детали и позволило повторно реализовать алгоритм на языках программирования более высокого уровня .
Теперь, когда CSA стал полностью известен общественности, криптоаналитики начали искать уязвимые места.
Алгоритм CSA состоит из двух отдельных шифров: блочного шифра и потокового шифра.
При использовании в режиме шифрования данные сначала шифруются с использованием 64-битного блочного шифра в режиме CBC , начиная с конца пакета. Затем применяется потоковый шифр с начала пакета.
Блочный шифр обрабатывает 64-битные блоки в 56 раундах. Он использует 8 бит из расширенного ключа в каждом раунде.
Первые 32 раунда потокового шифра используются для инициализации и не генерируют никаких выходных данных. Первые 64 бита данных используются в качестве вектора инициализации на этой фазе и остаются неизменными. Затем потоковый шифр генерирует 2 бита псевдослучайного потока на каждом раунде, которые подвергаются операции xor, начиная с бита 64 пакета.
Если бы CSA был взломан, зашифрованные передачи DVB можно было бы расшифровать, что поставило бы под угрозу платные услуги цифрового телевидения, поскольку DVB был стандартизирован для цифрового наземного телевидения в Европе и других странах и используется многими провайдерами спутникового телевидения.
Большинство атак на систему платного телевидения были направлены не на саму CSA, а на различные системы обмена ключами , отвечающие за генерацию ключей CSA ( Conax , Irdeto, Nagravision , VideoGuard и т. д.), либо путем обратного проектирования и полного взлома алгоритмов, либо путем перехвата ключей в режиме реального времени по мере их генерации на легитимном декодере, а затем их распространения среди других (так называемый кардшаринг ).
Часть потокового шифра CSA подвержена битовой нарезке , программной реализации техники, которая позволяет расшифровывать много блоков или один и тот же блок с множеством разных ключей одновременно. Это значительно ускоряет поиск методом перебора, реализованный в программном обеспечении, хотя этот фактор слишком мал для практической атаки в реальном времени.
Часть блочного шифра сложнее для бит-слайсинга, так как задействованные S-boxes слишком велики (8x8) для эффективной реализации с использованием логических операций, что является предпосылкой для бит-слайсинга, чтобы быть более эффективным, чем обычная реализация. Однако, поскольку все операции выполняются на 8-битных подблоках, алгоритм может быть реализован с использованием обычного SIMD или формы «байт-слайсинга». Поскольку большинство наборов инструкций SIMD (за исключением AVX2 ) не поддерживают параллельные таблицы поиска, поиски S-boxes выполняются в не-байт-слайсинговой реализации, но их интеграция в остальную часть алгоритма не сильно затруднена байт-слайсингом.
Оба метода используются в libdvbcsa, свободной реализации CSA.
Криптоанализ становится более сложным, поскольку большинство данных защищено как блочным, так и потоковым шифром. Коды адаптации могут привести к пакетам с некоторыми данными, защищенными только блочным или потоковым шифром. [2]
Хотя алгоритм CSA использует 64-битные ключи, большую часть времени неизвестны только 48 бит ключа, поскольку байты 3 и 7 используются как байты четности в системах CA и могут быть легко пересчитаны. Это допускает возможные атаки с известным открытым текстом в сочетании со знанием базовой структуры открытого текста. Поскольку первые три байта заголовка PES всегда равны 0x000001, можно было бы запустить атаку методом подбора . Такая атака раскроет миллионы возможных ключей, но все равно их будет достаточно мало, чтобы сделать практичной попытку расшифровки других частей данных с тем же ключом во втором проходе для восстановления истинного ключа.
В 2011 году группа немецких исследователей опубликовала атаку [3] на CSA, используемую в системе DVB. Отметив, что заполнение MPEG-2 часто требует длинных серий нулей, что приводит к шифрованию целых 184-байтовых ячеек только нулями, можно построить радужную таблицу, восстанавливающую ключ из такого известного нулевого блока. (Блок будет известен как нулевой, если будут найдены два блока с одинаковым шифртекстом, поскольку предположительно оба будут нулевыми блоками.) Описанная атака потребует около 7,9 ТБ памяти и позволит злоумышленнику с графическим процессором восстановить ключ примерно за семь секунд с вероятностью 96,8%. Однако атака эффективна только при наличии таких нулевых блоков заполнения (т. е. в сценах с очень небольшим движением или шумом), и ее можно легко смягчить, например, отправив такие нулевые ячейки незашифрованными.
Это отличается от уже упомянутых примеров атак методом перебора тем, что до атаки известно содержимое всего открытого текста ячейки, а не только части блока, что позволяет заранее вычислить радужную таблицу.
В 2004 году была опубликована атака сбоя [4] на блочный шифр. Основная идея состояла в том, чтобы ввести несколько преднамеренных ошибок в промежуточные вычисления, что позволило бы вывести последние восемь раундовых ключей. Из этого можно вычислить окончательный ключ.
Хотя для этого требуется очень мало ошибок (в среднем две или три на каждый восстановленный ключ раунда), атаки на ошибки обычно нецелесообразны, поскольку для этого требуется возможность произвольно изменять биты внутри аппаратного обеспечения декодера, у которого уже есть нужный ключ.