Я прочитал много статей, в которых говорится: «В высшей степени невозможно взломать открытый ключ биткойна и получить из него закрытый ключ». Я понимаю, что открытый ключ содержит некоторую информацию о соответствующем закрытом ключе. Может ли кто-нибудь предложить мне несколько шагов для ручного расчета и обращения скалярного умножения из открытого ключа, чтобы я получил закрытый ключ? Я не ищу никаких сценариев для этого, но я ищу математические шаги, чтобы преобразовать открытый ключ в закрытый ключ.
Во- первых , вы можете увидеть на этом форуме , как вычислить открытый ключ из закрытого ключа, используя математику эллиптической кривой (EC): Как получить открытый ключ биткойн из закрытого ключа
Точка G указана как «базовая точка» в EC, и это известный параметр. Вы можете увидеть все параметры, используемые ЕС в биткойнах, здесь: https://en.bitcoin.it/wiki/Secp256k1
Вкратце, EC для биткойнов известен как secp256k1 : y^2 = x^3 + 7 , а открытый ключ формируется путем повторяющихся удвоений точек и скалярных умножений точек .
Итак, как вы видите, проблема заключается в попытке обратить серию модульных умножений , или то, что в математике EC называется проблемой дискретного логарифма (по аналогии с реальной проблемой дискретного логарифма в других криптосистемах, таких как DSA и DH): учитывая две точки P и Q (принадлежащие подгруппе ЭК) находят целое число x, удовлетворяющее уравнению Q = x·P
Итак, теперь вы можете использовать различные алгоритмы, чтобы попытаться обратить операцию: наиболее известными из них являются алгоритм детского шага, алгоритм гигантского шага и ро-метод Полларда .
Вы можете найти их пошаговое описание здесь: http://andrea.corbellini.name/2015/06/08/elliptic-curve-cryptography-breaking-security-and-a-comparison-with-rsa/
Думаю, это может послужить отправной точкой.
Это просто практически невозможно ; это одна из основных предпосылок криптографии с открытым ключом :
Стойкость системы криптографии с открытым ключом зависит от вычислительных усилий ( фактор работы в криптографии), необходимых для нахождения закрытого ключа из его парного открытого ключа. Если это так, эффективная безопасность требует только сохранения закрытого ключа в секрете; открытый ключ может распространяться открыто без ущерба для безопасности.
Если кто-то не взломает криптографический алгоритм, используемый для генерации ключей, лучше всего просто сгенерировать случайные ключи и проверить, соответствует ли соответствующий открытый ключ тому, который у вас уже есть. (Ну, это небольшое преувеличение, но вы поняли.)
Я думаю, что вернуть открытый ключ невозможно, кто-то применил бы суперкомпьютерную мощь, чтобы вернуть все биткойны и стать сверхбогатым.
Открытый ключ является производным от закрытого ключа. Чтобы получить открытый ключ, вам нужна эллиптическая кривая, Биткойн решил использовать secp256k1. Ваш открытый ключ — это ваш закрытый ключ, умноженный на точку генератора (которая является константой, установленной в стандарте secp256k1), поэтому это точка на кривой.
Уиллтек
S0AndS0
math
стек, там есть поддержка LaTeX вместо подсветки кода... Из того, что я читал, если вы можете заставить владельца данного адреса подписывать что-то неправильно, см. Алгоритм генерации подписи Wiki (перейдите к . ..it is also crucial to select different k for different signatures
... в частности), тогда можно найти закрытый ключ без полного перебора. Примечание: это можно использовать для записи данных с помощью закрытых ключей, намеренно раскрываемых как окончательная транзакция.