HDCPv2
HDCPv2 (англ. High-bandwidth Digital Content Protection — «защита широкополосного цифрового содержимого») — cемейство технологий 2-го поколения защиты медиаконтента, разработанная корпорацией Intel и предназначенная для предотвращения незаконного копирования высококачественного видеосигнала, передаваемого через интерфейсы HDMI, DVI, DisplayPort, USB и другие. HDCP 2.2 специально разработан для контента 4K Ultra HD, а также фильмов и телепередач с HDR. Последняя версия HDCP 2.3 для HDMI была разработана 28 февраля 2018.

Сходства и отличия от HDCPv1 
Версии HDCP 2.x не является продолжением HDCPv1 и является скорее совсем другой технологией. Версии 2.x используют стандартные алгоритмы шифрования, такие как 128-битный AES с 3072 или 1024-битный RSA с открытым ключом и 256-битную хеш-функцию HMAC-SHA256. Хотя все спецификации HDCP v1.x поддерживают обратную совместимость с предыдущими версиями спецификации, устройства HDCPv2 могут взаимодействовать с оборудованием HDCPv1 только за счет собственной поддержки HDCPv1 или с помощью специального преобразователя. Это означает, что HDCPv2 применим только к новым технологиям. Он был выбран для стандартов WirelessHD и Miracast.

HDCP 2.x включает новый протокол аутентификации и проверку местоположения для обеспечения приемник находится относительно близко (он должен среагировать на проверку местоположения в течение 7 мс при обычном канале DVI /  HDMI).

Между HDCP v2 и v1 все еще есть несколько общих черт:

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

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

HDCPv2 состоит из трёх основных компонентов:

 Аутентификация приемников HDCP
 HDCP-шифрование
 Отзыв приемников HDCP

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

Аутентификация приемников HDCP 
Протокол аутентификации HDCP представляет собой обмен информацией между передатчиком и приемником, которая подтверждает передатчику, что приемник авторизован для получения содержимого HDCP.

Он состоит из следующих этапов:

 Аутентификация и обмен ключами (AKE) — сертификат открытого ключа приемника HDCP, проверяемый передатчиком HDCP. Обмен мастер-ключей 
 Проверка местоположения (LC) — Передатчик HDCP обеспечивает локальность контента, требуя, чтобы время приема-передачи (RTT) между парой сообщений не превышало 20 мс
 Обмен ключами сеанса (SKE) – передатчик HDCP обменивается ключами сеанса  с приемником HDCP
 Аутентификация с повторителями — этот шаг выполняется передатчиком HDCP только с повторителями HDCP. На этом этапе ретранслятор собирает информацию о топологии нисходящего потока и направляет ее восходящему передатчику HDCP.

Успешное завершение этапов AKE и проверки местоположения подтверждает передатчику, что приемник авторизован для получения содержимого HDCP. В конце протокола аутентификации устанавливается канал связи между передатчиком  и приемником, к которому могут получить доступ только авторизованные устройства.

Все устройства HDCP содержат 128-битную секретную глобальную константу, обозначаемую . Все устройства HDCP используют одну и ту же глобальную константу .

Передатчик HDCP содержит 3072-битный открытый ключ RSA от DCP LLC, обозначаемый .

Приемнику HDCP выдаются 1024-битные открытый и закрытый ключи RSA. Открытый ключ хранится в сертификате открытого ключа, выданном DCP LLC и обозначаемом . В таблице приведены поля, содержащиеся в сертификате. Все значения хранятся в формате с обратным порядком байтов

Секретный закрытый ключ RSA обозначается . Время вычисления операции закрытого ключа RSA можно сократить, используя метод китайской теоремы об остатках (CRT). Поэтому рекомендуется, чтобы приемники HDCP использовали метод CRT для вычислений закрытого ключа.

Аутентификация и обмен ключами 
Аутентификация и обмен ключами (AKE) — это первый шаг в протоколе аутентификации. Передатчик HDCP (устройство A) может инициировать аутентификацию в любое время, даже до завершения предыдущего обмена аутентификацией. Передатчик HDCP инициирует новый сеанс HDCP, отправляя сообщение инициации аутентификации, AKE_Init.

Во время AKE передатчик HDCP: 

 Инициирует аутентификацию, отправляя инициирующее сообщение AKE_Init, содержащее 64-битный псевдослучайное значение () и параметры ;
 Считывает AKE_Send_Cert с получателя, содержащий , 64-битное псевдослучайное значение () и . Бит REPEATER в  указывает, является ли подключенный приемник повторителем HDCP. Сообщение AKE_Send_Cert должно быть доступно для чтения передатчиком в течение 100 мс с момента завершения передатчиком записи параметров сообщения AKE_Init в приемник HDCP. Если сообщение AKE_Send_Cert недоступно для чтения передатчиком в течение 100 мс, передатчик прерывает протокол аутентификации.
 Извлекает Receiver ID получателя из 
 Если передатчик HDCP не имеет 128-битного мастер-ключа , сохраненного в соответствии с  Receiver ID приемника (см. раздел сопряжение):
 Проверяет подпись сертификата с помощью . Сбой проверки подписи представляет собой сбой аутентификации, и передатчик HDCP прерывает протокол аутентификации.
 Генерирует псевдослучайный 128-битный главный ключ . Шифрует  с помощью  () и отправляет получателю сообщение AKE_No_Stored_km, содержащее 1024-битный . Схема шифрования RSAES-OAEP должна использоваться в соответствии с определением PKCS #1 V2.1: RSA Сryptography Standard. SHA-256 — это базовая хэш-функция. Используемая функция генерации маски — MGF1, которая использует SHA-256 в качестве базовой хэш-функции.
 Проверяет целостность сообщения об обновлении системы (SRM). Это делается путем проверки подписи SRM с помощью . Сбой этой проверки целостности представляет собой сбой аутентификации и заставляет передатчик HDCP прерывать протокол аутентификации.
 Передатчик HDCP верхнего уровня проверяет, находится ли Receiver ID подключенного устройства в списке отзыва. Если Receiver ID подключенного HDCP-устройства обнаружен в списке отзыва, аутентификация завершается ошибкой и протокол аутентификации прерывается. Проверка целостности SRM и проверка отзыва выполняются только передатчиком HDCP верхнего уровня.
 Выполняет формирование ключа, для создания 256- битного . , где  и  — сгенерированные ключи при  = 0 и = 1 соответственно.
 Вычисляет 256-битный  HMAC-SHA256(), где HMAC-SHA256 вычисляется поверх , а для HMAC используется ключ .
 Считывает сообщение AKE_Send_H_prime от получателя, содержащее 256-битный . Сообщение AKE_Send_H_prime должно быть доступно для чтения передатчиком в течение одной секунды с момента завершения передатчиком записи параметров сообщения AKE_No_Stored_km в приемник HDCP. Если AKE_Send_H_prime сообщение недоступно для чтения передатчиком в течение одной секунды или существует несоответствие между  и , передатчик прерывает протокол аутентификации.
 Если в передатчике HDCP хранится 128-битный мастер-ключ , соответствующий Receiver ID приемника:
 Отправляет получателю сообщение AKE_Stored_km со 128-битным  и 128-битное  , соответствующее Receiver ID приёмника.
 Проверяет целостность сообщения об обновлении системы (SRM). Это делается путем проверки подписи SRM с помощью . Сбой этой проверки целостности представляет собой сбой аутентификации и заставляет передатчик HDCP прерывать протокол аутентификации.
 Передатчик HDCP верхнего уровня проверяет, находится ли  Receiver ID подключенного устройства в списке отзыва. Если идентификатор приемника подключенного HDCP-устройства обнаружен в списке отзыва, аутентификация завершается ошибкой и протокол аутентификации прерывается.
 Выполняет формирование ключа, для создания 256- битного . , где  и  — сгенерированные ключи при  = 0 и  = 1 соответственно.
 Вычисляет 256-битный H = HMAC-SHA256(), где HMAC-SHA256 вычисляется поверх , а для HMAC используется ключ .
 Считывает сообщение AKE_Send_H_prime от получателя, содержащее 256-битный . Сообщение AKE_Send_H_prime должно быть доступно для чтения передатчиком в течение 200 мс с момента завершения передатчиком записи параметров сообщения AKE_Stored_km в приемник HDCP. Если сообщение AKE_Send_H_prime недоступно для чтения передатчиком в течение 200 мс или существует несоответствие между  и , передатчик прерывает протокол аутентификации.

Во время AKE приемник HDCP 

 Делает доступным сообщение AKE_Send_Cert для чтения преобразователем в ответ на AKE_Init. Сообщение AKE_Send_Cert должно быть доступно для чтения передатчиком в течение 100 мс с момента завершения передатчиком записи параметров сообщения AKE_Init в приемник HDCP.
 Если получено сообщение AKE_No_Stored_km:
 Дешифрует  с помощью , используя схему дешифрования RSAES-OAEP.
 Выполняет формирование ключа, для создания 256-битного . , где  и  — сгенерированные ключи при  = 0 и  = 1 соответственно.
 Вычисляет  HMAC-SHA256(). Сообщение AKE_Send_H_prime должно быть доступно для чтения передатчиком в течение одной секунды с момента завершения передатчиком записи параметров сообщения AKE_No_Stored_km в приемник HDCP.
 Если получено сообщение AKE_Stored_km:
 Вычисляет 128-битный  SHA-256()[127:0]
 Расшифровывает , используя AES с полученным  в качестве входных данных и  в качестве ключа в модуль AES для получения , как показано на рисунке ниже.
 Выполняет формирование ключа, для создания 256-битного . , где  и  — сгенерированные ключи при  = 0 и  = 1 соответственно.
 Вычисляет   HMAC-SHA256(). Сообщение AKE_Send_H_prime должно быть доступно для чтения передатчиком в течение 200 мс с момента завершения передатчиком записи параметров сообщения AKE_Stored_km в приемник HDCP

При сбое дешифрования  с помощью  приемник HDCP не отправляет  и просто позволяет истечь таймауту передатчика HDCP.

Проверка местоположения 
Передатчик HDCP инициирует проверку местоположения, отправляя 64-битный псевдослучайный  нижестоящему приемнику.

Во время LC передатчик HDCP 

 Инициирует проверку местоположения, записывая сообщение LC_Init, содержащее 64-битный псевдослучайный одноразовый номер , в приемник HDCP.
 Устанавливает watchdog таймер на 20 мс. Сообщение LC_Send_L_prime должно быть получено передатчиком в течение 20 мс с момента завершения передатчиком записи параметров сообщения LC_Init в приемник HDCP. Проверка местоположения завершается неудачно, если watchdog таймер истекает до того, как последний байт сообщения LC_Send_L_prime будет получен передатчиком. Затем передатчик прерывает протокол аутентификации.
 Вычисляет  HMAC-SHA256() , где HMAC-SHA256 вычисляется по rn , а ключ, используемый для HMAC, — это , где  подвергается операции XOR с младшими значащими 64 битами .
 При чтении сообщения LC_Send_L_prime от получателя сравнивает  и . Проверка местоположения завершается ошибкой, если   .

Повторитель HDCP инициирует проверку местоположения на всех своих нисходящих интерфейсных портах, защищенных HDCP, отправляя уникальные значения  на подключенные устройства HDCP.

Во время LC приемник HDCP 

 Вычисляет 256-битное значение   HMAC-SHA256().
 Делает сообщение LC_Send_L_prime, содержащее 256-битный , доступным для чтения передатчиком сразу же после вычисления , чтобы гарантировать, что сообщение получено передатчиком в течение заданного тайм-аута передатчика в 20 мс.

В случае сбоя проверки местоположения из-за истечения watchdog таймера или из-за несоответствия  и  на передатчике HDCP, передатчик HDCP может повторить проверку местоположения максимум за 1023 дополнительных попытки (для максимально допустимого всего 1024 попытки) с передачей сообщения LC_Init, содержащего новый . Сбой проверки местоположения при первой попытке и последующие ноль или более повторных попыток приводят к сбою аутентификации, и протокол аутентификации прерывается.

Обмен ключами сеанса 
Успешное завершение этапов AKE и LC подтверждает передающему устройству HDCP, что получатель HDCP авторизован для получения содержимого HDCP. Обмен ключами сеанса (SKE) инициируется передатчиком HDCP после успешной проверки местоположения. Передатчик HDCP отправляет зашифрованный сеансовый ключ приемнику HDCP как минимум за 200 мс до включения шифрования HDCP и начала передачи содержимого HDCP. Контент, зашифрованный с помощью сеансового ключа , начинает передаваться между передатчиком HDCP и приемником HDCP. Шифрование HDCP должно быть включено только после успешного завершения этапов AKE, проверки местоположения и SKE.

Во время SKE передатчик HDCP 

 Генерирует псевдослучайный 128-битный ключ сеанса  и 64-битное псевдослучайное число .
 Выполняет формирование ключа, для создания 128-битного , где — производный ключ, когда  = 2.
 Вычисляет 128-битный ключ , где  подвергается операции XOR с младшими значащими 64 битами .
 Записывает сообщение SKE_Send_Eks, содержащее  и , в приемник HDCP.

При получении сообщения SKE_Send_Eks приемник HDCP 

 Выполняет формирование ключа, для создания 128-битного , где  — производный ключ, когда  = 2.
 Вычисляет

HDCP-шифрование 
Шифрование HDCP применяется на входе кодировщика TMDS, а дешифрование применяется на выходе декодера TMDS. Шифрование HDCP состоит из побитового исключающего ИЛИ (XOR) контента HDCP с псевдослучайным потоком данных, созданным шифром HDCP. Шифр HDCP генерирует новое 128-битное слово ключевого потока для каждых пяти 24-битных значений пикселей контента HDCP, подлежащего шифрованию.

HDCP-шифр 
Шифр HDCP состоит из 128-битного модуля AES, который работает в режиме счетчика (CTR).

 — это 128-битный сеансовый ключ, который подвергается операции XOR с .

.
 — это 64-битный счетчик, .

 — это 38-битное значение, указывающее количество зашифрованных кадров с момента начала шифрования HDCP. FrameNumber увеличивается на один при каждом ENC_EN (соответствует каждому кадру).
 это 26-битное значение, которое увеличивается на единицу после генерации каждого 128-битового блока потока ключей.

 инициализируется нулем, когда шифрование HDCP включается впервые во время сеанса HDCP, т. е. при первом включении шифрования (ENC_EN) сразу после SKE. r нельзя сбрасывать в любое другое время.  сбрасывается на 0 при каждом ENC_EN (соответствует каждой границе кадра). Шифрование символов данных начинается с нулевого значения .  не изменяется для кадров, которые не зашифрованы.

Когда HDCP-шифр тактируется, он создает 128-битный блок ключевого потока и увеличивает  после генерации ключевого потока. Ключевой поток подвергается операции XOR с 24-битными данными. Значение  никогда не должно использоваться повторно для заданного набора параметров шифрования, т.е.  и .

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

См. также 

 AACS
 HDTV
 HDCP
 HDMI

Примечания

Ссылки 

 HDCP on HDMI Specification December 21, 2012 Revision 2.2
 High-bandwidth Digital Content Protection System Revision 1.4

__ССЫЛКА_НА_НОВЫЙ_РАЗДЕЛ__

Защита медиаконтента
Компьютерные технологии
Intel