Грабеж защищенного медиа-контента в Висте

Автор: (c)Крис Касперски ака мыщъх

Магнатам медиа-индустрии страшно не нравится бесконтрольное копирование аудио и видео и они всячески пытаются ему помешать. Большой переполох среди пользователей вызвала новая инициатива Microsoft по созданию защитного механизма нового поколения, использующего зашифрованный цифровой поток, охраняемый по всему пути его следования и расшифровываемый только в видеокарте. Сразу же возникает вопрос - как дальше жить и чем эту защиту ломать?

Введение или много шума из ничего

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

Даже если мы перехватим цифровой поток по пути его следования от DVD к видеокарте, нам все равно не удастся ничего с ним сделать, ведь против шифровки не попреешь! Но это в теории. На практике же... чтобы расшифровать видеопоток достаточно добыть ключ.

Допустим, ключ спрятан непосредственно в самой видеокарте, причем спрятан так хорошо, что ни через прошивку, ни каким либо другим программным путем его считать нельзя. При условии выбора стойкого криптоаглоритма у нас нет никаких шансов расшифровать цифровой поток, чтобы записать его на жесткий диск, например. Остается только грабить видеовыход непосредственно с самой видеокарты, который... в свою очередь тоже обещает быть зашифрован, окончательно расшифровываясь лишь перед непосредственным выходом на экран. Если это будет LCD монитор, то у нас остается возможность подключиться непосредственно к выходам матрицы, сняв готовый к употреблению сигнал. Конечно, придется поднапрячься, но... оно того стоит. В теории. На практике же, если одним и тем же ключом расшифровываются все диски и этот ключ в явном виде хранится в куче "разнокалиберного" оборудования, никакие ухищрения не позволят удержать его в секрете! Следовательно, ключ должен передаваться в карту извне и храниться на самом DVD-диске, что позволяет извлечь его, расшифровывая видеопоток вручную.

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

Хакеры пьют пиво и торжествуют (уже обдумывая, как они будут грабить цифровые потоки), а пользователи по-прежнему гоняют ослов, записывают файлы на жесткие диски, обмениваясь ими с друзьями.

Защита цифрового потока извне и изнутри

В процессе разработки защиты нового поколения, Microsoft не родила ни одной умной идеи, зато изобрела множество аббревиатур, обрушив на программистов целый ворох новых терминов, объяснение которых можно найти в прилагаемом к статье глоссарии.

Ключевыми компонентами защитного механизма является: Защищенный Медиа Путь (он же Protected Media Path или, сокращенно, PMP), Защищенное Аудио Пользовательского Режима (Protected User-Mode Audio или PUMA), Защищенный Видео Путь (Protected Video Path или PVP), Управление Защитой Защищенного Видео Пути (Protected Video Path-Output Protection Management или PVP_OPM) и Безопасный Аудио Путь (Secure Audio Path или SAP). Это же крышей поехать можно, столько разных слов, а все равно никакого толку! Кстати, главный признак ненадежности защиты - ее запутанность и абсолютная непрозрачность. Такое чувство, что плаваешь в мутной воде зловонной реки, заболотившейся много лет тому назад. Но это все лирика. Переходим к обсуждению технических деталей.

На вершине пирамиды защитных компонентов гордо реет MIG (Media Interoperability Gateway - Интероперабельный Медиа Шлюз), предоставляющий приложениям доступ к защищенному медиа-контенту и управляющий политикой использования и воспроизведения медиа-контента в изолированных защищенных процессах, гарантирующих, что медиа-контент будет использован строго в соответствии с набором разрешений/запретов, установленных его законным владельцем. Защищенные процессы отличаются от всех остальных, что с ними нельзя манипулировать посредством API-функции ReadProcessMemory/WriteProcessMemory, даже с правами администратора. Тем не менее, в них можно проникнуть через ядро. На x86-64 машинах для этого понадобится подписанный драйвер (который подписывать, естественно, никто не собирается, ну разве что за подкуп), однако всегда существует возможность нажать <F8> при загрузке системы, отключив проверку цифровой подписи. Конечно, это не слишком-то удобно, но для грабежа медиа-контента вполне подойдет.

Компонент, ответственный за управление защитой защищенного видео пути (PVP-OPM) гарантирует, что выходы видеокарты, установленной в PC, снабжены соответствующей защитой, которую требует лицензионное соглашение с обладателем защищенного медиа-контента. Он же управляет остальными защитными схемами такими как: защита широкополосного цифрового контента (High-Bandwidth Digital Content Protection или HDCP), печально известная Macrovision, проявляющая себя неоправданными искажениями на некоторых моделях телевизоров и домашних кинотеатров, Общая Система Аналогового Управления Копированием (Copy Generation Management System-Analog или CGMS-A) и т. д. Как и предыдущий компонент, PVP-OPM представляет собой чисто программное решение, которое легко может быть взломано. После недолго пыхтения в дизассемблере, хакер навсегда отучит этого зверюгу отключать видеовыходы все зависимости, идет ли по ним разрешенный медиа-контент или нет.

Полнодоступная шина защищенного пользовательского видеопути (protected video path-user accessible bus или PVP_UAB) вполне соответствует своему пугающему названию и шифрует медиа-контент по пути его следования чрез шину PCI Express к целевому графическому адаптеру. Эта стадия не является обязательной и шифрование задействуется только в тех случаях, когда владелец медиа-контента считает, что среди потенциальных пользователей его продукции найдется идиот, воткнувший в шину эмулятор карты и перехватывающий цифровое содержимое в чистом виде. Типа грабеж среди бела дня. Шифрование естественно, выполняется программно и легко отключается элементарной правкой драйвера.

Модуль защищенного аудио пользовательского режима (PUMA) обеспечивает "безопасное" окружение для воспроизведения аудио, блокируя аудио-выходы, при необходимости. Естественно, все это происходит на программном уровне.

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

Таким образом, грабеж цифрового контента сводится к нейтрализации механизма Patch-Guard, контролирующего целостность ядра Windows (см. статью Взлом patch-guard), отключению механизма проверки цифровой подписи и модификации видеодрайвера, доходчиво объясняющей ему, что отключать видеовыходы - это очень нехорошо и совсем не по-коммунистически.

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

Структурная схема защиты медиа-контента, реализованная в Висте

Рисунок 1. Структурная схема защиты медиа-контента, реализованная в Висте.

Красным цветом показаны маршруты передачи зашифрованного цифрового потока, зеленым - уже расшифрованного и готового к употреблению. Чтобы награбить расшифрованный поток, достаточно подключится к "выходу" видео и аудио декрипторов и... все!!! Остальные компоненты (типа аудио/видео декодеров при желании можно реализовать и самостоятельно).

Таким образом, защита не препятствует ни пиратам, ни продвинутым пользователям, а вот легальные потребители получают геморрой в виде неизбежных глюков, невозможности применения сторонних плееров (защищенные процессы пока может создавать только штатный медиа-плеер), наконец, нагрузка на процессор и потребности в оперативной памяти резко возрастают, что рикошетом ударяет по качеству изображения. Ведь далеко не все могут позволить себе крутую машину и даже паршивый MPEG2 при выводе на телевизор с большим экраном требует приобретения аппаратного декодера, поскольку Pentium-4 с ним уже не справляется (естественно, к фильмам, ужатым до размеров половины CD-ROM это не относится).

Подробнее узнать о механизме защиты можно из официального документа Microsoft, лежащего на: http://download.microsoft.com/download/a/f/7/af7777e5-7dcd-4800-8a0a-b18336565f5b/PMP-sign.doc.

Два слова о COPP

Сертифицированный Протокол Защищенного Выхода (Certified Output Protection Protocol или, сокращенно, COPP) позволяет приложениям защищать видеопоток на всем пути его следования от видеокарты до монитора или любого другого устройства отображения. Приложения могут использовать COPP, чтобы определить тип физического соединения, связывающего карту с монитором и наличие защиты от просмотра неразрешенного медиа-контента. Защитный механизм состоит из трех следующих компонентов:

  1. Защиты широкополосного цифрового контента (High-Bandwidth Digital Content Protection или HDCP);
  2. Общей системы аналогового управления копированием (Copy Generation Management System-Analog или CGMS-A);
  3. Защиты от Аналогового Копирования (Analog Copy Protection или ACP).

Если видеокарта поддерживает хотя бы один из этих механизмов, приложения могут задействовать протокол COPP для установки требуемого уровня защиты. Сам протокол COPP определяет набор соглашений, обеспечивающих установку безопасного (secure) коммуникационного канала с драйвером видеокарты, что является ключевым элементом общей стратегии взлома. Если мы распотрошим COPP, останется только модифицировать драйвер!

Протокол COPP использует Коды Аутентификационных Сообщений (Message Authentication Codes или, сокращенно MACs), для проверки целостности COPP-команд, циркулирующих между приложением (видеоплеером) и видеодрайвером. Приложения взаимодействуют с COPP посредством вызова методом IAMCertifiedOutputProtection, представляющего собой интерфейс DirectShow Video Mixing Renderer filter (VMR-7 or VMR-9).

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

Прежде, чем начать взаимодействовать с COPP'ом, приложение должно последовательно выполнить следующие шаги:

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

Подробнее обо всем этом можно прочитать в спецификации на COPP-протокол "Using Certified Output Protection Protocol (COPP)", описание которого доступно всем желающим: msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwmt/html/using_certified_output_protection_protocol_copp__bwjn.asp, там же можно найти и готовые примеры, значительно упрощающие укрощение этой заразы.

Кинозалы vs DVD

До сих пор существует заблуждение, что своей основной доход киностудии собирают в кинотеатрах, а выпуск DVD составляет ничтожную долю прибыли. Ну, это когда как... В частности, фильм "DOMINO", на съемки которого ушло порядка $50 миллионов долларов собрал в кинотеатрах всего лишь... $1 миллион, но попав на DVD сразу же получил культовый статус и до сих пор не собирается сокращать объемы продаж. Аналогичная история произошла и с "Fight Club", и с "Dead Man" и со многими другими фильмами, рассчитанными на специфическую аудиторию (или отвергаемыми рядом кинотеатров из-за излишней жестокости, например).

Кадр из фильма DOMINO

Рисунок 2. Кадр из фильма "DOMINO".

КомпонентТип требуемого сертификатаИспользование сертификатаПример разрешенного сценария воспроизведениеОпции подписи
Взаимодействующий с видеодрайвером в режиме ядраПодпись кодаПодпись кодаHD DVDKMCS1, WHQL2
PVP-OPM Запрос-откликHD DVD с интегрированным графическим адаптеромMFPMP3
PVP-UAB Запрос-откликHD DVD с дискетным графическим адаптеромMFPMP
PVP-OPM в режиме совместимостиЗапрос-откликМедиа-контент, требующий COPP'а на XPMFPMP
Драйвер ядра, не взаимодействующий с видеодрайверомПодпись кодаПодпись кодаHD DVDKMCS, WHQL
Драйвер пользовательского режима, взаимодействующий с видеодрайверомPMP-PEПодпись кодаВоспроизведение защищенного контента через PMPWHQL, MFPMP
Драйвер ядра, взаимодействующий с аудио-драйвером или его компонентамиPUMAПодпись кодаSAP-контент с аудиосистемой, позволяющий задействовать эти требованияWHQL
Драйвер пользовательского режиме или другие компоненты, участвующие в обработке объектов APOPMP-PE Подпись кодаКомпоненты или APOs могущие обрабатывать защищенный контентWHQL, MFPMP
Плагины Media Foundation (кодеки, фильтры)PMP-PEПодпись кодаПлагины, обрабатывающие защищенный контентMFPMP

Листинг 1. Виды цифровых подписей, необходимых различным компонентам, взаимодействующих с защищенным медиа-контентом.

Заключение

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

В общем, хакеры без работы не останутся, так что пользователи могут не волноваться.

Глоссарий