Компьютерра - Компьютерра PDA N58 (18.09.2010-24.09.2010)
Обзор книги Компьютерра - Компьютерра PDA N58 (18.09.2010-24.09.2010)
Кивино гнездо: Конец эпохи
Автор: Берд Киви
Опубликовано 20 сентября 2010 года
На всю эту историю с тотальной компрометацией системы HDCP - чуть ли не последней "публично недовскрытой" технологии для защиты контента от копирования - ушло времени меньше недели. В понедельник 13 сентября некий анонимный источник опубликовал на сайте Pastebin.com здоровенную матрицу чисел, представив ее как универсальный "мастер-ключ" для вскрытия HDCP. А в четверг 16 сентября официальный представитель корпорации Intel, в свое время создавшей HDCP, честно признал, что опубликованный ключ действительно работает и в принципе позволяет снимать всю защиту, обеспечиваемую их системой. К великому неудовольствию Голливуда и прочих владельцев драгоценного медиа-контента высокой четкости.
Иными словами - по давно уже известной схеме - ИТ-индустрии в очередной раз пришлось невольно согласиться, что полностью надуманная, искусственно изобретенная "правообладателями" идея о техническом недопущении копирования информации, является нежизнеспособной и реально воплощена быть не может.
Самое же поразительное в данном сюжете то, что при естественном ходе событий произойти он должен был бы не сегодня, а примерно лет 10 тому назад. Точнее, летом-осенью 2001 года. Именно тогда сразу несколько весьма авторитетных криптографов, независимо друг от друга проанализировавших криптосхему HDCP, пришли к выводу, что она явно не обладает стойкостью, достаточной для противостояния известным криптоаналитическим атакам. Более того, было даже подсчитано сколько именно разных HDCP-устройств - всего порядка 40 - понадобится атакующим, чтобы быстро и легко вычислить универсальный ключ, делающий всю эту защиту бесполезной.
Но жизнь, как известно, далеко не всегда развивается естественными путями. Во-первых, именно в тот исторический период времени все исследователи-криптографы оказались изрядно напуганы делом Дмитрия Склярова, российского аналитика, арестованного в США сотрудниками ФБР за его доклад на конференции о слабостях криптографии в одной из программ Adobe. Именно по этой причине, в частности, голландец Нильс Фергюсон решил не публиковать свою работу о взломе HDCP, огласив лишь ее итоговые результаты (и предупредив, что в течение года эти же результаты получит любой грамотный криптоаналитик, соображающий в решении систем алгебраических уравнений).
Помимо затихших на время исследователей из академического криптосообщества, другим важнейшим фактором, как обычно, стала позиция "вышестоящих криптографических инстанций", весьма жестко диктующих ИТ-индустрии, какого уровня стойкость считается в бытовых приложениях допустимой, а какая нет. Хотя об этом не принято говорить открыто, ни для кого не секрет, что АНБ США всегда очень ревниво следило и по сию пору следит за тем, чтобы в бытовой электронике уровень защиты информации не поднимался выше определенной планки, обеспечивающей беспрепятственный доступ для специалистов спецслужб.
Короче говоря, жизнь пошла так, как пошла. Все предупреждения криптоаналитиков были проигнорированы, очевидно нестойкая технология HDCP "как есть" запущена в массовое производство, а то, что неминуемо должно было произойти далее, случилось только что.
Поэтому нам теперь остается лишь почетче разобраться, в чем же именно заключается суть произошедшей компрометации и чего интересного в связи с этим можно ожидать в ближайшем будущем.
Система HDCP, разработанная корпорацией Intel для защиты контента выского разрешения от нелегального копирования, (или High-bandwidth Digital Content Protection) шифрует уже распакованные и полностью готовые к воспроизведению биты видео- и аудиоконтента высокой четкости при их передаче через HDMI, DVI и прочие цифровые интерфейсы вроде DisplayPort, UDI или GVIF. Иначе говоря, именно HDCP используется для защиты цифровых HD-сигналов "в проводах". Например, при передаче изображения и звука по кабелям, соединяющим Blu-Ray-плеер или ресивер спутникового HDTV с HD-телевизором.
Поскольку опубликованный ныне в интернете "мастер-ключ" - представляющий собой матрицу размером 40 × 40 ячеек, каждая из которых содержит 56-битное число - действительно оказался подлинным, это означает, фактически, что система HDCP более не предоставляет передаваемому в кабелях контенту никакой защиты от копирования. Потому что на основе данного мастер-ключа всякий грамотный программист теперь может сам (в теории, по крайней мере) сгенерировать сколько угодно полностью легитимных и "неотзываемых" HDCP-ключей для беспрепятственного доступа к защищенному системой содержимому.
С точки зрения функциональности, система HDCP, как это было задумано, должна решать три главных задачи: (1) она шифрует контент так, чтобы его нельзя было брать от кабеля; (2) она позволяет каждому оконечному устройству удостовериться, что другая оконечная точка связи - это тоже HDCP-лицензированное устройство; и (3) она позволяет "отзывать" уникальные ключи прежде легитимных, но впоследствии скомпрометированных пиратами устройств, создавая "черные списки" заблокированных ключей.
С точки зрения собственно защиты информации, принципиально важным этапом в работе системы HDCP является процедура начального "рукопожатия", в ходе которой формируется общий секретный ключ, который затем используется для шифрования коммуникаций между двумя устройствами. В то же самое время данная процедура позволяет каждому устройству удостовериться, что другое устройство является лицензированным для обработки HD-контента.
Всякий раз, когда речь заходит о криптотехнологии, исходная позиция для понимания конструкции системы - это разобраться с работой секретных ключей: сколько именно таких ключей предусмотрено, кому конкретно они известны и как именно они применяются.
В HDCP каждое устройство имеет уникальную пару ключей: один открытый ключ, который не является тайной; и один секретный ключ, который положено знать исключительно только этому устройству. Кроме того, система в целом имеет один-единственный мастер-ключ, который предполагается известным исключительно Центральному органу, управляющему всей системой HDCP. А также имеется особый алгоритм генерации ключей (который по давней традиции удобно для краткости называть Keygen), используемый Центром для формирования секретных ключей устройств. Этот генератор ключей на основе секретного мастер-ключа Центра и открытого ключа устройства неким хитрым способом формирует уникальный секретный ключ, который соответствует исключительно данному открытому ключу. Поскольку генератор ключа использует секретный мастер-ключ, заниматься созданием ключевых пар может только центральный орган власти.
Каждое HDCP-лицензированное устройство (например, Blu-Ray-плеер или HD-телевизор) имеет зашитые в него открытый ключ и соответствующий ему секретный ключ. Чтобы получить эти ключи для своих устройств, их изготовителям нужно содействие центрального органа власти HDCP, потому что лишь там занимаются генерацией и раздачей легитимных ключевых пар.
Теперь предположим, что два устройства, которые для простоты называют А и Б, собираются выполнить процедуру "рукопожатия". Для этого А посылает свой открытый ключ в Б, а Б, соответственно, свой открытый ключ в А. После чего каждая из сторон по заранее известному правилу комбинирует свой собственный секретный ключ с открытым ключом партнера, чтобы в результате получить общий секретный ключ для шифрования сеанса связи. Этот сеансовый ключ предполагается секретным - то есть известным исключительно сторонам А и Б - потому что для порождения общего ключа обязательно требуется знать либо секретный ключ А, либо секретный ключ Б.
Надо подчеркнуть, что для получения этого общего секрета А и Б фактически выполняют разные вычисления. Ведь А комбинирует свой секретный ключ с открытым ключом Б, а Б, наоборот, комбинирует свой секрет с открытой информацией от А. Если "случайно повстречавшиеся" А и Б производят существенно разные вычисления, то возникает естественный вопрос: каким образом в итоге у них получится один и тот же результат? Чтобы ответить на этот вопрос с исчерпывающей полнотой, понадобилось бы без нужды углубляться в дебри алгебраических уравнений. Здесь же вполне достаточно ограничится кратким ответом: потому что таким образом устроены математические свойства алгоритма Keygen.
Принципиально важно, что от этой особенности критически зависит безопасность всей криптосистемы: если ваше устройство имеет секретный ключ, изготовленный в процессе работы Keygen, тогда "рукопожатие HDCP" для вас сработает - в том смысле, что в итоге вычислений это устройство получит тот же самый общий ключ, что и вторая легитимная сторона на другом конце кабеля. Но если же вы пытались применить какой-нибудь левый или случайный "секретный ключ", который сгенерировали сами, тогда рукопожатие не сработает: вы придете к совершенно иному сеансовому ключу, нежели у второй стороны, поэтому устройства не смогут связаться друг с другом.