Открытый ключ превышает 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.
Сжатие точки требует информации о том, что такое сжатие. Теперь вы дали две формы открытого ключа;
- Без сжатия: с самого начала начинается с
04
- Сжатие, но выберите с начала с
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