Давно собирался написать про продолжение истории со взломом HD дисков. И вот к этому подтолкнуло
сообщение relf. Он пишет о том, что недавно был получен некий processing key, который позволяет декодировать любой(!) из выпущенных фильмов.
В интернете можно найти документ "Advanced Access Content System: HD DVD and DVD Pre-recorded Book". В нем приведена общая схема декодирования фильма:
Arnezami, тот который получил processing key, в своем описании приводит упрощенную схему, на которой опущены некоторые детали:
Справа - плеер, слева - диск.
Плеер имеет набор device keys, которые защищены так, что никогда не вылезают за пределы чипа декодера (видимо их никогда не достать). Эта группа валидируются с помощью MKB (media key block) с диска. Т.е., если устройство себя скомпромитировало, то можно сделать так, что диски выпущенные позднее уже не будут воспроизводиться данным устройством (что и будет делаться в ближайшее время). Далее на основе device keys вычисляется processing keys. Причем вычисленно может быть очень много вариантов processing keys и только часть из них быть пригодна. Опять подключается MKB. Далее комбинируя подходящий processing key и еще какую-то информацию из MKB получаем media key (Km). Здесь вся магия и зарыта в этом взаимодействии MKB и device keys. Но пока идем дальше.
Далее уже проще. В защищенной области диска лежит Volume Id, но если его перехватить (на практике оказалось, что там что-то типа названия диска), то все просто. Km комбинируется с Volume ID для получения Kvu (volume unique key), а ключ Kvu уже используется для декодирования отдельных titles внутри диска (Kt ключи).
Ранее muslix64 научился ловить title key в памяти плеера. Недостаток этого метода в том, что ловля работает только для одного плеера у которого есть уязвимость (windvd 8 вроде) и будет работать пока не появятся диски которые его будут признавать скомпромитированным. Второй недостаток - каждый диск требует специального взлома, т.е. если это слишком сложно, то нужно ждать, что кто-то опубликует title key.
Arnezami же пошел выше и устроил охоту за processing keys. Их ему удалось поймать перехватив снифером трафик между hd-dvd usb дисководом xbox360 и pc (он на pc тоже работает). Казалось это был рабочий момент по исследованию разных узких мест, но неожиданно выяснилось, что для всех дисков подходит один и тот-же processing key. По идее таких ключей может быть нагенерировано очень много и только один требуется для дальнейших шагов. MKB имеет большой блок данных который позволяет для разных устройств выбирать разные processing keys, чтобы они не пересекались. Однако этого не было сделано.
Как я уже писал самое хитрое место спрятано в блоке "Process MKB". В основу всего этого механизма, лежит некая технология "Subset-Difference". Я не берусь тут что-то писать об этом, т.к. до конца не разобрался (немного почитал статью Arnezami про это - ссылка ниже). Но было бы интересно прочитать популярное изложение.
Дополнительная информация:
Arnezami
"Understanding AACS (including Subset-Difference)""Advanced Access Content System: HD DVD and DVD Pre-recorded Book" - в открытом доступе (см. главу Content Encryption and Decryption)
"Advanced Access Content System: Introduction and Common Cryptographic Elements" - в открытом доступе (тут детали subset-difference)
UPD
relf пояснил по воводу"subset-difference":
Как я понял, принцип у Subset-Difference довольно простой: есть куча ящиков, по которым некто раскидывает "вещи" (каждая вещь может присутствовать в нескольких ящиках), у тебя есть набор ключей к определенным ящикам, у меня тоже есть набор ключей, возможно, пересекающий с твоим, но другой, если, открыв доступные тебе ящики, ты собираешь определенный набор вещей (назовем его "коллекцией"), то ты выиграл, я со своими ключами - аналогично.
Предположим сначала, что и ты, и я получаем коллекции. Но потом вдруг тот, кто расскадывает вещи по ящикам, тебя не взлюбил. Тогда он может перераспределить их так, чтобы в твоем подмножестве ящиков не было коллекции, в то время как у меня она по-прежнему будет.
Здесь ящики - то, что живет на дисках, их содержимое прописывает производитель. Ты и я - это разные устройста, читающие диски, каждое со своим поднабором ключей к ящикам. "Коллекция" - это тот самый processing key, без которого проигрывание диска невозможно. В этих условиях, производитель всегда может лишить конкретное устройство доступа к processing key, но не мешая при этом по-прежнему получать processing key другим устройствам.