Открытый ключ Биткойн в закрытый ключ

Я прочитал много статей, в которых говорится: «В высшей степени невозможно взломать открытый ключ биткойна и получить из него закрытый ключ». Я понимаю, что открытый ключ содержит некоторую информацию о соответствующем закрытом ключе. Может ли кто-нибудь предложить мне несколько шагов для ручного расчета и обращения скалярного умножения из открытого ключа, чтобы я получил закрытый ключ? Я не ищу никаких сценариев для этого, но я ищу математические шаги, чтобы преобразовать открытый ключ в закрытый ключ.

Математические шаги, которые вы запрашиваете, необходимы для взлома системы криптографии с открытым ключом. В настоящее время эти шаги неизвестны.
Возможно, вы захотите попробовать mathстек, там есть поддержка LaTeX вместо подсветки кода... Из того, что я читал, если вы можете заставить владельца данного адреса подписывать что-то неправильно, см. Алгоритм генерации подписи Wiki (перейдите к . .. it is also crucial to select different k for different signatures... в частности), тогда можно найти закрытый ключ без полного перебора. Примечание: это можно использовать для записи данных с помощью закрытых ключей, намеренно раскрываемых как окончательная транзакция.

Ответы (4)

  • Во- первых , вы можете увидеть на этом форуме , как вычислить открытый ключ из закрытого ключа, используя математику эллиптической кривой (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 Предполагаю, что для этого есть новые методы и способы. Пожалуйста, опишите, как это можно сделать? crypto.stackexchange.com/questions/70006/…
@Rozwrcd: то, что вы просите, невозможно.

Это просто практически невозможно ; это одна из основных предпосылок криптографии с открытым ключом :

Стойкость системы криптографии с открытым ключом зависит от вычислительных усилий ( фактор работы в криптографии), необходимых для нахождения закрытого ключа из его парного открытого ключа. Если это так, эффективная безопасность требует только сохранения закрытого ключа в секрете; открытый ключ может распространяться открыто без ущерба для безопасности.

Если кто-то не взломает криптографический алгоритм, используемый для генерации ключей, лучше всего просто сгенерировать случайные ключи и проверить, соответствует ли соответствующий открытый ключ тому, который у вас уже есть. (Ну, это небольшое преувеличение, но вы поняли.)

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

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

Открытый ключ является производным от закрытого ключа. Чтобы получить открытый ключ, вам нужна эллиптическая кривая, Биткойн решил использовать secp256k1. Ваш открытый ключ — это ваш закрытый ключ, умноженный на точку генератора (которая является константой, установленной в стандарте secp256k1), поэтому это точка на кривой.