CSS, Content Scramble System — система защиты цифрового медиаконтента на DVD-носителях. Система крайне неустойчива к взлому. Из-за ограничений на экспорт криптографических технологий из США длина ключа шифрования ограничена 40 битами, что крайне мало. Более того, из-за найденной уязвимости эффективная длина ключа примерно равна 16 битам — то есть все возможные варианты могут быть перебраны на современном компьютере всего за несколько секунд, что обуславливается примитивным методом защиты.[1] В 2005 на смену CSS пришла более надёжная AACS.
Спецификация DVD была готова в декабре 1995 года. Производителям DVD-плееров и DVD-приводов было необходимо наличие значительного количества фильмов и музыки на DVD. Однако киностудии заметили, что DVD-диски были бы идеальным источником для копирования фильмов: цифровая информация не будет терять своего качества при перезаписи (видеокассеты не позволяли этого из-за защиты аналогового выхода APS). От DVD Consortium потребовали предоставления соответствующей защиты от копирования. В результате DVD Consortium создал Техническую Рабочую Группу по Защите от Копирования (англ. Copy Protection Technical Working Group, CPTWG). 29 октября 1996 году CPTWG объявила о создании CSS, которую в основном разработали компании Toshiba и Matsushita Electric Industrial. Для лицензирования использования CSS была создана некоммерческая организация Ассоциация по Контролю Копирования DVD (англ. Copy Control Association, DVD CCA).[2]
Первая программа для обхода CSS появилась в Интернете в ноябре 1997 года под названием softDVDcrack. Эта программа фактически ломала не CSS, а проигрыватель Zoran. Zoran вскоре исправил ошибки во взломанной версии проигрывателя, но в сети оставались копии старой версии. Процесс взлома был довольно сложный, поэтому массового распространения программа не получила. После этого было ещё множество подобных приложений. Однако крах CSS ассоциируется с появлением в ноябре 1999 года программы DeCSS. Её написал норвежский школьник Йон Йохансен (Jon Johansen) на основе обратной разработки кода проигрывателя Xing, проведённой командой немецких программистов MoRE (Masters of Reverse Engineering). Компания Xing, как оказалось, не закодировала ключ для разблокирования защищённых DVD. DeCSS отличается от всех предшествующих программ тем, что она дешифрует CSS, а не перехватывает поток видео из лицензированного проигрывателя. Более того, любой компьютер, который в состоянии воспроизвести фильм с DVD, сможет достаточно легко взломать CSS с помощью DeCSS. Поэтому DeCSS быстро распространилась по миру, даже несмотря на незаконность в некоторых государствах размещения кода DeCSS на веб-сайтах.[3]
В действие алгоритма CSS вовлечены несколько компонентов: DVD-диск, DVD-привод, проигрыватель и хост. При этом все они должны быть лицензированы DVD Copy Control Association (DVD CCA) для использования CSS. Алгоритм CSS состоит из двух частей: аутентификация и шифрование.
Данные DVD-диска зашифрованы по секторам. Информация о том, зашифрован сектор или нет, хранится в заголовке сектора. Зашифрованы только секторы, несущие потоковую информацию (видео, изображение, звук), остальные, например отвечающие за навигацию, не зашифрованы. Шифрование данных основано на побитовом сложении с псевдослучайной последовательностью битов и взаимнооднозначной табличной подстановке байтов. Для реализации псевдослучайной последовательности используются линейные регистры сдвига с обратной связью (англ. Linear Feedback Shift Register, LFSR)
В CSS используются два линейных регистра сдвига с обратной связью (англ. Linear Feedback Shift Register). Сдвиг в регистрах происходит слева направо. Выходным битом является значение функции обратной связи. В четвертый бит каждого регистра при начальном заполнении регистра сдвига выставляется логическая единица.[4]
CSS имеет четыре режима шифрования. Режим выбирается в зависимости от того, какая информация шифруется. Режим влияет на то, происходит инверсия выхода определённого регистра сдвига или нет.
Режим шифрования | LSFR-17 | LSFR-25 |
---|---|---|
Аутентификация | инвертирован | неинвертирован |
Шифрование ключа шины | неинвертирован | неинвертирован |
Шифрование ключа наименования | неинвертирован | инвертирован |
Шифрование данных | инвертирован | неинвертирован |
При шифровании ключа диска и ключа наименования помимо регистров сдвига используется функция искажения (англ. Mangling Function).
Байты A1—A5 являются входом функции искажения, в них подставляются байты ключа который шифруется. Байты С1—С5 это выход функции. Байты B1—B5 — промежуточные значения. Байты k1—k5 это байты общего выхода регистров сдвига в соответствующем режиме. Регистры сдвига изначально заполняются ключом, с помощью которого происходит шифрование. Символом F обозначена взаимнооднозначная замена байта по таблице. Плюс обозначает побитовое сложение байтов. Выход функции искажения является шифрованным ключом.[1]
Система обладала следующими видами ключей[5]:
Ключи диска и наименований записывались в lead-in-области диска, чтобы сделать невозможным их непосредственное копирование[6].