Ключевой вектор выбора - Key selection vector

В Ключевой вектор выбора означает числовое значение, связанное с Набор ключей устройства и распространяется Лицензиар или его уполномоченное лицо для Усыновителей и используется для поддержки аутентификации Лицензионных продуктов и Аннулирования. Считается конфиденциальным набором ключи используется в ограниченном Аутентификация процесс HDCP. Ограниченный аутентификация является AKE для устройств с ограниченными вычислительными ресурсами. Этот метод используется для копирования устройств любого типа (например, DV рекордеры или D-VHS рекордеры) и устройства общение с ними для проверки подлинности содержимого "копия одно поколение" и "не более копий". Ограниченный аутентификация Протокол использует асимметричное управление ключами и криптографию с общим ключом и полагается на использование общих секретов и хэш-функций для ответа на случайный вызов.

Роль KSV в ограниченной аутентификации

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

Вовремя аутентификация процесса, обе стороны обмениваются своими КСВ. Затем каждое устройство добавляет (без переполнения) свои секретные ключи в соответствии с КСВ получено с другого устройства. Если конкретный бит в векторе установлен в 1, то соответствующий секретный ключ используется в добавлении, в противном случае он игнорируется. Для каждого набора ключей создается специальный ключ, называемый KSV (вектор выбора ключа). Каждый KSV имеет ровно 20 битов, установленных на 0, и 20 битов, установленных на 1. Ключи и КСВ генерируются таким образом, что во время этого процесса оба устройства в результате получают одинаковое 56-битное число. Этот номер позже используется в шифрование процесс.

KSV уникальны для каждого устройства

Даже действительные ключи могут быть скомпрометированы (взломаны), поэтому HDCP включает механизм отзыва ключей. Значения KSV уникальны для каждого набора ключей и, следовательно, для каждого устройства. Затем система может сравнить эти значения со списком отзыва, и если в этом списке появляется передатчик или приемник, аутентификация не выполняется. Обновления в списке отзыва поступают с новыми носителями и автоматически интегрируются. Таким образом, если набор ключей каким-то образом будет раскрыт или скопирован, ущерб может быть ограничен.

Этот отзыв процесс не влияет на другие устройства, даже если устройства той же марки и модели. В этом смысле, КСВ ценности похожи серийные номера.

Пример:

Предположим, что Салли и Боб купить такой же телевидение в тот же день в том же магазине. Боб каким-то образом взламывает свой набор, его поймают, и он КСВ значение отозвано. Салли не беспокойтесь. У ее телевизора другой КСВ стоимость и никак не повлияет.

Очевидные недостатки KSV

Если мы сможем найти 40 линейно независимый наборы векторов () ключи ... () ключи, скажем, с помощью оборудования для обратного проектирования, тогда мы можем полностью сломать систему. На этом этапе можно извлечь массив секретных ключей для любого количества KSV по своему желанию.

В других случаях, когда отдельные ключи не являются линейно независимыми, по-прежнему можно создать Xkeys для любого Xksv, который находится в пределах диапазона () KSV, для которых мы нашли закрытые ключи. Однако не будет никакой гарантии, что они удовлетворяют свойству 20 единиц и 20 нулевых битов.

Как это могло быть сломано?

Во-первых, редко можно найти ключи Akeys, Bkeys, Aksv и Bksv, которые обладают указанным выше свойством: когда каждое устройство выполняет операцию, они оба могут использовать один и тот же общий секрет. Следовательно, это означает, что существует математическая модель, которая создает такие подмножества.

Поскольку ключи генерируются линейно в заданном система, похоже, что если бы кто-нибудь мог определить Akeys вектор из любых 40-50 различных систем: .... , и знал Xksv от системы X (это общедоступная информация из протокола), то он мог определить закрытый ключ Xkeys множество.

Что мы знаем?

Если предположить, что у нас есть 40 () KSV, которые являются линейно независимыми, у нас будет система из n линейных уравнений относительно 40 неизвестных -

Векторный массив ключей Xkeys:

[Xkeys] * (A1) ksv = = [(A1) keys] * Xksv [Xkeys] * (A2) ksv = = [(A2) keys] * Xksv ... [Xkeys] * (A40) ksv = = [ (A40) ключи] * Xksv

Имея подтверждение на всех KSV, и если мы знаем секретный ключ векторов () ключей, мы можем повторить описанный выше алгоритм, чтобы сгенерировать новые ключи B для любого другого устройства с произвольный Бксв. Последним шагом будет замена Xksv = Bksv. Если пространство, охватываемое () KSV не охватывают все 40-мерное пространство, мы, вероятно, в порядке. Либо KSV были спроектированы так, чтобы не перекрывать Космос, или нам нужно получить () ключи от еще нескольких устройств, чтобы завершить пространство.

У каждого дополнительного устройства низкие шансы линейно зависимый с существующим набором. (примерно 1/2 ^ [40-мерность-остовное пространство]). В противном случае эта линейная зависимость была сделана специально. Таким образом, мы знаем, что все остальные KSV находятся в пространстве, ограниченном тем, что нам дано.

Через линейная комбинация из любых известных ключей ksv (с 20 единицами и 20 нулевыми битами) и (A_i) ключей мы можем создать действительные Xksv и Xkeys, которые уже известны. Единственный трюк - найти Xksv в подпространстве, которое имеет необходимое количество 0 и 1 биты. Это единственная потенциально сложная часть, хотя на конкретном примере решить ее не составит труда.

Смотрите также

внешняя ссылка