Параметры эллиптической кривой Microsoft PlayReady DRM P160

Я пытаюсь создать правильно закодированные в DER параметры ECC для пользовательской кривой Microsoft P160 PlayReady для передачи в HSM. Я нашел несколько источников, в которых указано определение кривой P160, поскольку она нестандартна и нестандартна. Ниже ссылка на один источник. В частности, значения кривой PlayReady обсуждаются в разделе 6.4.2 из книги Уильяма Штейна «Элементарная теория чисел. Вычислительный подход».

Ниже приведен пример из другого источника, касающийся параметров кривой P160 PlayReady.

Для ECC Microsoft использует эллиптическую кривую над Zp, где p — 160-битное простое число (приведено ниже). Кривая состоит из точек, лежащих на кривой y^2=x^3+ax+b, где операции выполняются над полем Zp, а a и b — коэффициенты, указанные ниже. Все значения представлены в виде упакованных двоичных значений: другими словами, одно значение по Zp кодируется просто как 20 байтов, хранящихся в порядке с прямым порядком байтов. Таким образом, точка на эллиптической кривой представляет собой 40-байтовый блок, состоящий из двух 20-байтовых значений с прямым порядком байтов (координата x, за которой следует координата y). Вот параметры эллиптической кривой, используемые в MS-DRM:

p (модуль): 89abcdef012345672718281831415926141424f7
коэффициент a: 37a5abccd277bce87632ff3d4780c009ebe41497
coefficient b: 0dd8dabf725e2f3228e85f1ad78fdedf9328239e
generator x: 8723947fd6a3a1e53510c07dba38daf0109fa120
*generator y: 445744911075522d8c3c5856d4ed7acda379936f
Order of curve< /strong>: 89abcdef012345672716b26eec14904428c2a675

Эти константы фиксированы и используются всеми сторонами в системе MS-DRM. «Привлекательность» модуля высока, когда вы видите это число в шестнадцатеричном виде: оно включает в себя счет в шестнадцатеричном виде, а также цифры фундаментальных констант e, pi и sqrt (2).

На основе этой информации я создал следующее шестнадцатеричное кодирование параметров кривой в кодировке DER для кривой P160, используя BouncyCastle в качестве моей базовой библиотеки ASN.1. Обратите внимание, что в этих параметрах кривой не указано начальное значение.

308195020101302006072a8648ce3d010102150089abcdef012345672718281831415926141424f7302c041437a5abccd277bce87632ff3d4780c009ebe4149704140dd8dabf725e2f3228e85f1ad78fdedf9328239e0429048723947fd6a3a1e53510c07dba38daf0109fa120445744911075522d8c3c5856d4ed7acda379936f02150089abcdef012345672716b26eec14904428c2a675

Хотя математически эти параметры кривой принимаются HSM и OpenSSL, полученные точки кривой P160 неприемлемы для PlayReady. Я могу использовать тот же процесс для создания действительных точек кривой P256, приемлемых для PlayReady, поэтому я не считаю, что мои методы ошибочны. У кого-нибудь есть опыт работы с параметрами кривой PlayReady P160?


person Benton    schedule 25.07.2012    source источник


Ответы (1)


После исследования с Microsoft решение было найдено. По-видимому, необходимо поменять местами точки x/y открытого ключа и закрытый ключ, чтобы заставить набор инструментов PlayReady принимать пару ключей EC только для кривой P160. Этот нечетный обмен байтами не требовался для пары ключей P256 EC.

person Benton    schedule 16.08.2012
comment
Этот ответ (замена открытого и закрытого ключа) не имеет для меня никакого смысла, надеюсь, он имеет смысл для других. - person Maarten Bodewes; 09.05.2013