Как можно разобраться / реализовать этот раздел задачи дискретного логарифмирования в ECDSA

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

Мне было интересно, следует ли применять открытый ключ и точку генератора "в сжатом виде"02" или же "03"Или без сжатия с"04".

Я нигде не мог найти на это ответа.

1 ответ

Префикс «02», «03», «04» обозначает тип сжатия точки.

«04» означает, что точка несжатая , то есть в таком виде указаны и координаты x, и y. «02» и «03» означают, что точка сжата . В этом представлении присутствует только координата x. Координата y может быть вычислена из координаты x (путем решения y^2 = x^3 + ax + b (mod n)). Поскольку существует 2 возможных значения y, «02» означает положительное значение, а «03» — отрицательное. (Отрицательный на самом деле не отрицательный, потому что мы используем операцию по модулю).

Например, для secp256k1 у нас есть -

      Gx = 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798
Gy = 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8

// Which can be written as
G_compressed = 02 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798
G_uncompressed = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8

Внутренне обе эти формы представляют одну и ту же точку, т. е.

      x = 55066263022277343669578718895168534326250603453777594175500187360389116729240
y = 32670510020758816978083085130507043184471273380659243275938904335757337482424

Кстати, это не имеет ничего общего с проблемой дискретного журнала.

Другие вопросы по тегам