В алгоритме ECDSA закрытый ключ Биткойн предположительно представляет собой точку на графике (или нет?). Но закрытый ключ представляет собой одно целое число, а не координаты x,y. Является ли целое число само по себе значением x или значением y? Если это х, то что такое у? Если это у, то что такое х?
Основная операция с эллиптической кривой — добавление точек. Операция многократного применения этого сложения называется скалярным умножением точки на целое число.
Закрытый ключ — это «скаляр», точка умножения — это точка «Генератор», результат — это открытый ключ.
Скалярное умножение — это, по сути, многократное сложение. Умножение точки Генератора на 5 означает: вычисление G+G+G+G+G.
Вы вычисляете это, сначала вычисляя G2=G+G, затем G4=G2+G2, затем G5=G4+G.
Формула кривой, используемой для расчетов биткойнов, выглядит следующим образом:
y^2 == x^3 + 7 ( mod p )
кудаp = 2^256 - 2^32 - 977
точка (x,y) находится на кривой, если она соответствует приведенному выше уравнению
Добавление кривой лучше всего визуализировать геометрически
изображение с certicom
Криптография на эллиптических кривых не использует значения с плавающей запятой для своих координат, все вычисления выполняются в целых числах по модулю большого простого числа (упомянутого выше, с именем p). Но метод подсчета суммы 2 баллов остается прежним.
Добавьте точки P1=(x1,y1) и P2=(x2,y2), в результате чего Psum= (xsum, ysum)
slope = (y1-y2)/(x1-x2)
xsum = slope^2 - (x1+x2)
ysum = slope*(x1-xsum)-y1
если P1 и P2 являются одной и той же точкой, приведенная выше формула сложения будет включать деление на ноль, поэтому для расчета P + P требуется другая формула.
slope = 3 * x^2 / (2*y)
xdbl = slope^2 - 2*x
ydbl = slope *(x-xdbl)-y
G
Для ECDSA была выбрана образующая точка .
Закрытый ключ — это просто целое число, давайте назовем его k
. Открытый ключ — это точка-генератор, добавленная сама к себе k
определенное количество раз. Другими словами, умножить на k
.
Если вы неправильно выберете закрытый ключ, скажем, 1, ваш открытый ключ будет равен точке генератора, этому адресу: 1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm .
Как видите, он даже использовался недавно.
Что делает ECDSA полезной криптосистемой, так это то, что из закрытого ключа легко вычислить открытый ключ, но не наоборот. Другой способ выразить это так: умножение — это просто, но не существует (простого) алгоритма деления на эллиптической кривой.
См. этот пример для примера в python
n
в документе SEC 2), исключая.Открытый ключ — это точка, закрытый ключ — это 256-битное целое число. На самом деле мы не храним точку как x, y как часть открытого ключа, мы сохраняем x и знак y для экономии места.
Фелипе Волох
Мой
Фелипе Волох