Насколько я понимаю, уравнение для открытого ключа определяется так:
K = k * G
Где K — открытый ключ, k — закрытый ключ, а G — точка-генератор.
Насколько я понял, уравнение для открытого ключа определяется так
K = k * G
: K — открытый ключ, k — закрытый ключ, а G — точка-генератор.
Правильно.
Теперь мой первый вопрос: является ли G константой? (насколько я читал, это константа)
Это. Это точка с координатами (55066263022277343669578718895168534326250603453777594175500187360389116729240, 32670510020758816978083085130507043184471273380659243275938904335757337482424)
. Вы можете проверить, что эти координаты удовлетворяют уравнению кривой : Y^2 = X^3 + 7 (mod 115792089237316195423570985008687907853269984665640564039457584007908834671663)
.
И если да, то как нельзя просто сделать K/G = k?
Ответ прост: мы не знаем эффективного способа «деления» эллиптических кривых (это называется проблемой дискретного логарифмирования ), и предполагается, что такой способ не может быть найден. Самый известный алгоритм для этой конкретной кривой требует около 2128 итераций , что невероятно много.
Вы должны знать, что то, *
что k * G
вы пишете, не является обычным умножением (что это вообще может означать для очков?). Это довольно сложная операция , и люди выяснили ее полезные свойства, которые чем-то похожи на умножение (она образует циклическую группу , поэтому используется тот же символ). Но никто так и не нашел способа выполнить обратную операцию, и это стало основой для криптографии на эллиптических кривых .
Математикам нравятся их аналогии, иногда эти аналогии могут быть полезными, но в равной степени они могут сбивать с толку, особенно новичков в какой-либо области.
В математике «группа» состоит из набора элементов и оператора, удовлетворяющего некоторым требованиям. Оператор должен быть ассоциативным, должен существовать единичный элемент, и для каждого элемента должен существовать обратный элемент относительно оператора.
Некоторые группы записываются по аналогии сложения, то есть групповой оператор представлен знаком «+», а единичный элемент представлен «0». Другие группы записываются по аналогии с умножением, то есть групповой оператор записывается как операция умножения (например, «*», «.» или вообще ничего), а элемент идентичности представлен «1». Эллиптические кривые традиционно записываются по аналогии сложения.
Мы можем вообразить многократное применение группового оператора к k копиям G. Если группа записывается по аналогии сложения, то это аналогично умножению, если группа записывается по аналогии с умножением, то это аналогично возведению в степень.
So k * G
относится не к обычному умножению, а к операции, которая в определенном смысле аналогична умножению.
Вы можете наивно подумать, что это займет время, пропорциональное k, но благодаря ассоциативности мы можем вычислить его за время, пропорциональное логарифму k. Таким образом, мы можем быстро вычислить k * G
даже для очень больших k.
Однако отменить операцию не так просто. Эта проблема известна как «проблема дискретного логарифмирования эллиптических кривых», и самые известные методы имеют сложность, пропорциональную примерно квадратному корню из числа элементов в группе.
Почему это называется «проблемой дискретного логарифмирования эллиптических кривых», хотя это больше похоже на деление, чем на логарифмирование в обозначениях, обычно используемых для эллиптических кривых? потому что это вариант аналогичной задачи, изучаемой для группы, которая традиционно записывается по аналогии с умножением.
k = K/G несколько вводит в заблуждение. Во многих отношениях лучше писать k = K * G^-1. Это подчеркивает, что в «деление» вовлечены две операции: умножение и обратное (Кроме того, это облегчает признание того, что K * G^-1 и G^-1 * K являются разными понятиями и что существование Необходимо показать, что существует G^-1. Здесь это не так важно, потому что умножение на эллиптических кривых является абелевым и всегда имеет обратное, но это соображения, которые вы должны иметь в виду при работе с группами и кольцами в целом. )
Математика на эллиптических кривых имеет место в абстрактной группе, а не в системе действительных чисел, и использование записи действительных чисел поощряет вводящую в заблуждение интуицию (а в абстрактной алгебре косая черта используется для частных групп, а не для деления элементов группы). Тот факт, что найти обратное в математике эллиптических кривых сложно, в первую очередь делает ее криптографической системой. В противном случае любой, у кого был открытый ключ, мог тривиально инвертировать шифрование. «Криптографическая система» почти по определению относится к системе с некоторой операцией, в которой найти a*b значительно проще, чем найти a^-1.
(Существуют способы вычисления K * G^-1 без явного вычисления G^-1, но они по-прежнему так же трудны или труднее, как и вычисление G^-1.)
А если нет, то как он создается из закрытого ключа?
Хм? Вы только что привели уравнение для открытого ключа: K = k * G.
Кроме того, я думаю, что вы должны указать, что вы говорите о secp256k1, в теле вашего текста, а не просто как тег. Можно предположить, что это биткойн SE, но лучше, чтобы это было ясно.
Фиолетовая банда