Уважаемые участиники чата!
Публичный ключ — это точка на эллиптической кривой, а приватный ключ — это натуральное число, которое показывает, сколько раз саму с собой нужно сложить
базовую точку чтобы получить кординату открытого ключа на эллиптической кривой. Сам открытый ключ состоит из двух значений — это координаты X и Y, каждая из которых имеет размер 256 бит.
в этом контексте подскажите пожалуйста простым языком с минимальным количеством матана как работает сам механизм электронно-цифровой подписи,
то есть как зная публичный ключ по сути кординату точки на эллиптической кривой происходит доказательство того что мы владеем приватным ключем
с помощью которого порожден данный публичный ключ по сути во сколько раз саму с собой сложили базовую точку?
вот так:
Задача: тебе нужно доказать что ты знаешь число x такое что пубключ P = x*G.
Шаг 1. Пересылаешь x. Получатель делает x*G и проверяет что оно == P. Это работает для него, но теперь он знает твой ключ.
Шаг 2. Генеришь еще одно рандомное число r, которое мы назовем nonce, и точку r*G (типа как пубключ, но мы это назовем коммитментом в r). И скрываешь свой ключ сложением: x+r (по модулю кол-ва точек на кривой) и пересылаешь s=x+r проверяльщику И заодно отсылаешь ему точку R = r*G.
Проверяльщик проверяет что s*G == P + R. Минус тут в том, что ты можешь наебать проверяющего. Если ты пошлешь ему s=r; R = r*G-P, а ключа x ты не знаешь. Т.е. ты кансельнул пубключ и когда проверяющий сделает P + R, ключ P вычтется через R.