Открытый ключ превышает Mod P? Запрос на разъяснение проблемы дискретного логарифмирования

Я попытался наблюдать / реализовать проблему дискретного логарифмирования, но кое-что заметил; но прежде чем я перейду к этому, позвольте мне дать некоторые пояснения, которые можно исправить.

а = Ь ^ х мод Р

В то время как

a = открытый ключ адреса;

b = образующая точка кривой коблица secp256k1 (это кривая в контексте);

x = дискретный журнал;

P = модульное целое число.

Я соединил все параметры ниже:

A =044f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa385b6b1b8ead809ca67454d9683fcf2ba03456d6fe2c4abe2b07f0fbdbb2f1c1(несжатый открытый ключ)
034f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa:(сжатый открытый ключ)

B = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A68554199C47D08F FB10D4B точка (несжатый генератор)

02 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B16F81798 (точка сжатия генератора)

X =?

P = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFEFFFFFC2F

На самом деле я не знаю, какую часть параметров мне следует использовать (сжатую или несжатую)

Н. Б: Я пробовал использовать несжатый открытый ключ для Mod P, но несжатый открытый ключ превышал Mod P по размеру.

Что мне с этим делать?

1 ответ

Решение

a = b^x mod P Где как

a = открытый ключ адреса;

b = образующая точка кривой коблица secp256k1 (это кривая в контексте);

x = дискретный журнал;

P = модульное целое число.

Нам дается задача дискретного логарифмирования (DLOG) (также называемая индексным исчислением); Это дано a, b, и P найти такой, что a = b^x mod Pпроводится. Вышеупомянутое на самом деле является мультипликативным обозначением DLOG с конечным полем, используемым OP. ECC DLOG является аддитивным и имеет разные обозначения как;

  • Это дает баллы A и база найти такую, что A = [x]Bудерживается на кривой E(FP). [x]B просто означает, что добавить точку B х раз себе.

Сжатие

Начальный байт предоставляет информацию о сжатии.

  • 02 сжатие и выберите
  • сжатие и выберите
  • Без сжатия

Чтобы найти, поместите в уравнение кривой и решите квадратичный вычет с помощью алгоритма Тонелли-Шанкса.


В вашем случае даются оба, без проблем. Используйте несжатый открытый ключ.

Текущий рекорд для secp256k1 - 114-битный 16 июня 2020 года Александр Зеневич предоставил свое программное обеспечение . Итак, если у вас нет низкой цели, вы не можете разбить дискретный журнал.

Я попробовал использовать несжатый открытый ключ для Mod P, но несжатый открытый ключ превысил размер Mod P.

Точка Q в эллиптической кривой при использовании аффинной системы координат она имеет две координаты как Q=(x,y) куда x,yиз определяющего поля (P в вашем случае). При проверке точка Q либо находится на кривой, либо не помещена в уравнение кривой y^2 = x^3+ax+b и проверяем равенство.

Чтобы распаковать, вставьте значение x в уравнение x^3+ax+b mod P чтобы получить, скажем, значение, затем используйте алгоритм Тонелли-Шанкса, чтобы найти квадратный корень из этого уравнения y^2 = a mod Pнайти и. В соответствии со значением сжатия выберите y или же .

обновление за комментарий

Я попытался использовать сжатый открытый ключ, но он все равно оказался больше, чем mod p.

Сжатие точки требует информации о том, что такое сжатие. Теперь вы дали две формы открытого ключа;

  1. Без сжатия: с самого начала начинается с 04
  2. Сжатие, но выберите с начала с 03

Использование заглавных букв здесь, чтобы не путать с шестигранником a;

      A = 04
4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa
385b6b1b8ead809ca67454d9683fcf2ba03456d6fe2c4abe2b07f0fbdbb2f1c1
      A = 03
4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa

Вы можете использовать уравнение кривой, чтобы получить вторую часть с выбранным -y

И вы можете сравнить значения координат с

      p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
a = 0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa
if a>p:
    print("a")

или используйте свой взгляд и разум;

      P   = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
x(A)= 4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa
y(A)= 385b6b1b8ead809ca67454d9683fcf2ba03456d6fe2c4abe2b07f0fbdbb2f1c1
Другие вопросы по тегам