HDCP
HDCP (High-bandwidth Digital Content Protection) — технология защиты медиаконтента, разработанная корпорацией Intel и предназначенная для предотвращения незаконного копирования высококачественного видеосигнала, передаваемого через интерфейсы DVI (для этого интерфейса HDCP не является обязательной опцией), DisplayPort, HDMI, GVIF или UDI. Защищённый видеосигнал может быть воспроизведён только на оборудовании, поддерживающем HDCP.
HDCP создана для защиты передачи медиаконтента между HDCP передатчиком и HDCP приемником. Технология также предусматривает использование HDCP повторителей с защищёнными портами для нисходящего потока данных (от поставщика к заказчику услуги). В системе возможно до семи уровней HDCP повторителей и до 128 HDCP-совместимых устройств.
Система защиты состоит из трех основных компонентов:
Протокол аутентификации
Шифрование передаваемых данных
Защита от подслушивания «третьим лицом»
14 сентября 2010, авторитетное издание ZDNet подтвердило факт обнаружения и открытой публикации матрицы, которая может выступать аналогом секретной матрицы для создания закрытых ключей устройств HDCP (device private keys). Через 2 дня, 16 сентября, появились сообщения, что компания Intel (создатель HDCP), подтвердила, что данная матрица действительно является рабочей.
Протокол аутентификации используется между HDCP передатчиком и HDCP приемником для подтверждения того, что последний является устройством, которому разрешено получать соответствующий контент. Подтверждение — знание секретного набора ключей. Каждое HDCP устройство снабжается уникальным набором из сорока 56-битных секретных ключей, называемых DPK (англ. device private keys, секретные ключи устройства), получаемых от организации DCP LLC. Во время обмена информацией устройства создают общий секрет, который нельзя подслушать во время этого обмена, и этот секрет далее применяется как симметричный ключ для расшифрования HDCP контента, предназначенного устройству, прошедшему аутентификацию.
Каждое HDCP устройство хранит, помимо Device Private Keys, соответствующий 40-битный идентификатор — KSV (англ. key selection vector, вектор выбора ключа), который, так же как и DPK, получает от DCP LLC. Протокол аутентификации можно разбить на три части:
Установление общего секрета
Сообщение HDCP повторителя о векторах выбора ключа, присоединённых HDCP получателях
Установление начального состояния HDCP шифра для кодирования содержимого кадра (третья часть происходит во время вертикального интервала, который предшествует каждому кадру, требующему шифрования)
На этом этапе в обоих устройствах вычисляется общий 56-битный секрет Km и Km’. Вычисление производится следующим образом : Из набора DPK суммируются ключи в соответствии с битовым представлением полученного KSV: если бит равен единице, то соответствующий ключ используется. Сложение ключей происходит по модулю 256 без переполнения.
HDCP-защищенные порты с неактивными HDCP устройства ничего не добавляют в набор KSV, также как и сам HDCP повторитель, инициирующий создание списка, не добавляет свой KSV в него.
Для того чтобы добавить KSV список, полученный от предыдущего HDCP повторителя, требуется проверка целостности. HDCP повторитель, запросивший список, вычисляет V и сравнивает его с полученным V’.
V = SHA-1 (список KSV || состояние B || M0)
Где:
cписок KSV — битовое представление KSV
состояние B — битовое представление состояния устройства B (см. таблицу)
M0 — некоторая секретная величина
Всё битовое представление располагается в прямом порядке.
Если V≠ V’, то проверка на целостность считается неудачной и HDCP повторитель не должен принимать список. При этом истечет таймер watchdog (сторожевой таймер) и HDCP передатчик сумеет обнаружить эту ошибку. Кроме составления списка KSV производится распространение топологической информации (количество и глубина) вверх по дереву устройств до HDCP передатчика. Количество устройств (англ. device count) рассчитывается как количество всех HDCP повторителей и приемников вниз от устройства, которое считает сумму. Глубина (англ. depth) для HDCP повторителя равна максимальному значения глубины, полученному от нижестоящих в дереве устройств HDCP повторителю, плюс один. Например, для HDCP повторителя с четырьмя нижестоящими HDCP получателями, глубина равна единице, а число устройств — четырем. Число устройств в одном дереве не может превышать 127, а число уровней (глубина) — семи.
Пример:
HDCP передатчик, определив, что передан бит REPEATER, устанавливает 5-секундный сторожевой таймер (watchdog) и запрашивает статус READY (готовность) у HDCP повторителя. Если бит состояния установлен на 1 (готов), то HDCP передатчик считывает список KSV и проверяет, не превышает ли список устройств установленный спецификацией объем и глубину, затем проверяет список на целостность, вычисляя V. Если какое-либо из условий не выполнено или истекает время таймера, то аутентификация не производится.
Повторная попытка осуществляется передачей нового значения An и Aksv.