Почему кто-то не может создать действующую цифровую подпись, не зная вашего закрытого ключа?

Из следующих двух сообщений я понимаю, что закрытые ключи не отображаются отправителем при проверке транзакции майнерами биткойнов:

Что происходит с закрытым ключом при оплате

Как можно проверить транзакции без закрытого ключа?

Вместо этого предоставляется цифровая подпись, основанная на закрытом ключе, и, насколько я понимаю, эта цифровая подпись поддается проверке при «сравнении» с открытым ключом.

Почему же тогда кто-то не может сгенерировать проверяемую цифровую подпись, используя только чей-то открытый ключ?

Или, по-другому, цитируя ответ из первого поста, указанного выше:

«Действительная подпись не может быть создана без доступа к закрытому ключу» — почему бы и нет?

Ответы (3)

Биткойн использует так называемый Алгоритм цифровой подписи на эллиптических кривых (ECDSA) для подписи и проверки транзакций. Прочтите связанную статью в Википедии, чтобы узнать, как работает ECDSA. Если вы понимаете, как работает оператор по модулю, должно быть понятно, почему вы не можете сделать подпись без закрытого ключа.


Мне сложно это объяснить, так как это зависит от сложной математики, но я попытаюсь.

Чтобы создать действительную подпись ECDSA, вам нужен закрытый ключ, который представляет собой большое целое число. Он явно используется в алгоритме создания подписи, а открытый ключ — нет. Кроме того, открытый ключ не является целым числом, как закрытый ключ; скорее это точка на эллиптической кривой. Таким образом, даже если вы знаете открытый ключ, вы не можете создать с его помощью подпись, потому что это не закрытый ключ, и вы не можете восстановить закрытый ключ из открытого ключа.

Закрытый ключ не может быть восстановлен из открытого ключа из-за проблемы, называемой проблемой дискретного логарифма эллиптической кривой. Из Википедии :

предполагается, что нахождение дискретного логарифма случайного элемента эллиптической кривой относительно общеизвестной базовой точки невозможно: это «задача дискретного логарифма эллиптической кривой» (ECDLP).

Закрытый ключ представляет собой дискретный логарифм. Хотя это предположение, на практике было показано, что ECDLP представляет собой сложную проблему, т. е. трудно найти дискретный журнал с учетом базовой точки и точки открытого ключа. Таким образом, вы не можете получить закрытый ключ, который требуется в ECDSA для создания подписи.

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

«Действительная подпись не может быть создана без доступа к закрытому ключу» — почему бы и нет?

В двух словах: потому что на сегодняшний день не существует известного алгоритма для этого.

Это особенность цифровых подписей из криптографии с открытым ключом. Вероятно, это выходит за рамки этого сайта, чтобы объяснить, как работает криптография. Возможно , https://crypto.stackexchange.com/ будет лучшим местом, чтобы спросить.