Сколько времени потребуется большому компьютеру, чтобы взломать закрытый ключ?

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

Этот ответ на Security Stack Exchange актуален: security.stackexchange.com/a/25392/4647
Пожалуйста, объясните это тогда. directory.io Эти люди утверждают, что у них есть все приватные ключи... Думаю, они не правы
Они говорят правду. Точно так же любой, кто может сгенерировать числа Пи, имеет все литературные произведения, которые когда-либо будут написаны.

Ответы (8)

как долго в байтах закрытый ключ

32 байта или 256 бит

то сколько комбинаций чисел он будет содержать

Существует 2 ^ 256 различных закрытых ключей. Это немного больше, чем 1, за которой следуют 77 нулей.

какой самый быстрый компьютер или сеть суперкомпьютеров

На пике своего развития примерно в августе 2011 года сеть Биткойн проверяла 15 триллионов хэшей sha256 в секунду. (См. http://bitcoin.sipa.be/ )

сколько времени потребуется, чтобы взломать закрытый ключ с помощью этого компьютера

Если мы предположим, что выполнение операции ECDSA занимает столько же времени, сколько требуется для проверки хэша sha256 (это занимает гораздо больше времени), и мы используем оптимизацию, которая позволяет нам использовать только 2^128 операций ECDSA, то необходимое время может быть рассчитано:

>>> pow(2,128) / (15 * pow(2,40)) / 3600 / 24 / 365.25 / 1e9 / 1e9
0.6537992112229596

Это 0,65 миллиарда миллиардов лет.

Это очень консервативная оценка времени, необходимого для взлома одного биткойн-адреса.

Редактировать: было указано, что компьютеры, как правило, со временем становятся быстрее в геометрической прогрессии, в соответствии с законом Мура . Если предположить, что скорость вычислений удваивается каждый год (закон Мура говорит, что это 2 года, но мы ошибемся из-за осторожности), то через 59 лет это займет всего 1,13 года. Таким образом, ваши монеты будут в безопасности в течение следующих 60 лет без изменения алгоритмов, используемых для защиты блокчейна. Однако я ожидаю, что алгоритмы будут изменены задолго до того, как можно будет взломать обеспечиваемую ими защиту.

Закон Мура (или аналогичный), вероятно, немного уменьшит это число, но не настолько, чтобы это имело значение. Пока ответом является какая-то форма «длительнее, чем потребуется для майнинга монет, хранящихся по этому адресу», мы должны быть в безопасности :)
Это важно, потому что люди заслуживают того, чтобы знать, насколько безопасны их деньги.
Это при условии, что закон Мура может действовать еще 6 десятилетий. С другой стороны, возможно, к тому времени QC станет мейнстримом.
Отличный ответ. Стоит отметить, что совокупная мощность сети Биткойн теперь почти в 10 раз больше, чем с момента написания этого ответа. Так что это «всего» ~ 653 миллиона лет вычислений.

Закрытый ключ Биткойн представляет собой случайное 256-битное число. Однако открытый ключ раскрывает некоторую информацию о закрытом ключе. Наиболее известные алгоритмы взлома ECDSA требуют O(sqrt(n)) операций. Это означает, что для взлома учетной записи Биткойн потребуется 2 ^ 128 операций.

Самый большой сломанный на сегодняшний день ключ ECDSA того типа, который использует Биткойн, имел длину 112 бит. Биткойн-счет более чем в 4 000 миллиардов миллиардов раз сложнее взломать.

Единственным реальным риском будут квантовые вычисления.

Следует также отметить, что ожидается, что даже квантовые вычисления только сократят время от pow(2,N) до pow(2,N/2), что, хотя и является значительным, не раскрывает его полностью. См. en.wikipedia.org/wiki/Key_size
@GaryRowe Ты ошибаешься. Уменьшение вдвое длины ключа применяется к симметричным ключам. Большинство асимметричных шифров (включая ECDSA, который используется для биткойнов) можно взломать за полиномиальное время с помощью квантового компьютера благодаря алгоритму Шора. Цитируя эту статью в Википедии: «Общее мнение состоит в том, что эти алгоритмы с открытым ключом небезопасны при любом размере ключа, если станут доступны достаточно большие квантовые компьютеры, способные запускать алгоритм Шора». Хотя существуют схемы подписи с квантовым доказательством, они, вероятно, сильно раздуют блокчейн .
@CodeInChaos Все хорошие моменты - извините, что внес путаницу.
Атака O(sqrt(n)) — это атака дня рождения, которая возможна в любой схеме шифрования. Какую «информацию о закрытом ключе», которую раскрывает открытый ключ, вы имеете в виду?
@dionyziz Я не говорю об атаке на день рождения, я говорю об изменении открытого ключа ECDSA для получения соответствующего закрытого ключа. «Информация о закрытом ключе», которую раскрывает открытый ключ, — это точка, соответствующая этому закрытому ключу, умноженная на генератор. Это позволяет использовать алгоритмы дискретного логарифмирования, такие как большой шаг, маленький шаг .
ну, если быть точнее, sqrt(n) * операции ECDSA. А поскольку многие адреса представляют собой просто хэши открытого ключа, вам может понадобиться выполнить операцию sqrt(n) * ECDSA * хеширования. А хеш-операции представляют собой сочетание нескольких связанных хеш-функций. Это линейно увеличивает сложность с точки зрения целочисленных операций или цикла ЦП, но с существенным коэффициентом (скажем, 2 ^ 16)

Закрытый ключ Биткойн (ключ ECC) представляет собой целое число от 1 до 10^77. Это может показаться не таким уж большим выбором, но для практических целей он практически бесконечен. Если бы вы могли обрабатывать один триллион закрытых ключей в секунду, то для их подсчета потребовалось бы более чем в миллион раз больше возраста Вселенной. Хуже того, простое перечисление этих ключей потребовало бы энергии, превышающей общую мощность Солнца за 32 года. Это обширное пространство ключей играет фундаментальную роль в обеспечении безопасности сети Биткойн.

Чак Норрис дважды досчитал до бесконечности.
Чак Норрис сказал Сатоши Накомото, что делать.

2^256 = 1,1x10^77 = количество комбинаций клавиш

2^128 = 3,4x10^38 = среднее количество необходимых догадок

Согласно этому веб-сайту: http://en.wikipedia.org/wiki/TOP500 , самым быстрым суперкомпьютером является компьютер K с производительностью 10,51 петафлопс.

Петафлоп — это 10^15 FLOPS операций с плавающей запятой в секунду.

Пока все хорошо, но мне нужно знать, сколько FLOPS нужно для одного предположения?

[Смею предположить:]

От 1000 до 10 000 FLOPS (или целочисленные эквиваленты) за предположение.

10,51x10^15 операций в секунду / от 1000 до 10000 операций/догадка) = от 10,51x10^12 до 10,51x10^11 догадок в секунду.

3,4x10^38 догадок/взлом / 10,51x10^12 догадок/секунду = 3,2x10^25 секунд.

3,2x10^25 секунд / 60 секунд/минута / 60 минут/час / 24 часа/день / 365,25 дня/год = 1,01x10^18 лет

1,01x10^18 лет / 1x10^9 / 1x10^9 = от 1,014 до 10,014 миллиарда миллиардов лет.

Таким образом, компьютеры в сети Биткойн в два раза быстрее самого большого лабораторного компьютера.

Для попытки комбинации требуется ровно 0 FLOP, поскольку FLOP — это операция с плавающей запятой, а EC-математика требует только целочисленных операций.
Никогда не было компьютера, на котором я работал, который не мог бы выполнять целочисленную математику. Так что я бы предположил, что южнокорейский компьютер K тоже может это делать.
Да, но пропорция между скоростью целочисленных операций и операций с плавающей запятой значительно различается в зависимости от оборудования. Учитывая определенное распределение типов оборудования, из которых состоит мощность майнинга Биткойн, можно дать оценку, но ответ на вопрос «сколько FLOPS необходимо для одного предположения», ответ, безусловно, 0.
количество комбинаций клавиш = 2^256; среднее количество необходимых догадок = 2 ^ 256 / 2 = 2 ^ 256 * 2 ^ -1 = 2 ^ 255, никто не заметил? Ну, это не меняет миллиард (миллиардов) необходимых лет.

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

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

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

биткойн, vanitygen для попытки атаковать адреса, Vanitygen, таблица Keysearch Rates, Mkey/s, CPU/GPU, таблица, дециллион лет, среднее время

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

Используя vanitygen, вы можете подумать, что сможете найти закрытый ключ для данного адреса. На практике это считается невозможным.


Практический пример

Давайте создадим следующий биткойн-адрес :unspendable

$ unspendable.py 23456789A123456789A12345678
mainnet: 123456789A123456789A12345678Yr8Dxi

Затем с помощью vanitygenя могу рассчитать производительность на моей машине (> 240 Kkey/s):

$ vanitygen -q -k -o/dev/null 1
[241.29 Kkey/s][total 2880199][Found 11618]

Примечание. Выше было протестировано на MacBook Pro (2,3 ГГц Intel Core i7, 16 ГБ 1600 МГц DDR3).

Кроме того, он может рассчитать расчетное время при поиске определенных шаблонов, например

  • чтобы найти первые 5 символов из 26-35 (несколько секунд):

    $ vanitygen -q -k -o/dev/null 12345
    [698.17 Kkey/s][total 8192][Prob 0.2%][50% in 4.5s]
    
  • 6 первых персонажей из 26-35 (несколько минут):

    $ vanitygen -q -k -o/dev/null 123456
    [701.39 Kkey/s][total 51712][Prob 0.0%][50% in 4.3min]
    
  • 7 персонажей из 26-35 (несколько часов):

    $ vanitygen -q -k -o/dev/null 1234567
    [471.87 Kkey/s][total 8192][Prob 0.0%][50% in 6.3h]
    
  • 8 персонажей из 26-35 (несколько недель):

    $ vanitygen -q -k -o/dev/null 12345678
    [658.82 Kkey/s][total 2548480][Prob 0.0%][50% in 10.8d]
    
  • 9 персонажей из 26-35 (несколько лет):

    $ vanitygen -q -k -o/dev/null 123456789
    [572.50 Kkey/s][total 1631744][Prob 0.0%][50% in 2.0y]
    
  • 10 символов из 26-35 (век):

    $ vanitygen -q -k -o/dev/null 123456789A
    [630.48 Kkey/s][total 118528][Prob 0.0%][50% in 104.2y]
    
  • 11 символов из 26-35 (несколько тысячелетий)

    $ vanitygen -q -k -o/dev/null 123456789A1
    [579.78 Kkey/s][total 17348352][Prob 0.0%][50% in 6571.6y]
    
  • 12 знаков из 26-35 (сотни тысячелетий):

    vanitygen -q -k -o/dev/null 123456789A12
    [751.61 Kkey/s][total 6720512][Prob 0.0%][50% in 294013.9y]
    
  • 13 знаков из 26-35 (тысячи тысячелетий, несколько миллионов лет):

    $ vanitygen -q -k -o/dev/null 123456789A123
    [666.93 Kkey/s][total 3886080][Prob 0.0%][50% in 1.921802e+07y]
    
  • 14 символов из 26-35 (миллиардов лет):

    $ vanitygen -q -k -o/dev/null 123456789A1234
    [817.44 Kkey/s][total 3994880][Prob 0.0%][50% in 9.094109e+08y]
    
  • 15 символов из 26-35 (50 миллиардов лет):

    $ vanitygen -q -k -o/dev/null 123456789A12345
    [784.31 Kkey/s][total 4633856][Prob 0.0%][50% in 5.497420e+10y]
    
  • ... 28 символов ( десять лет, если повезет)

    $ vanitygen -q -k -o/dev/null 123456789A123456789A12345678
    [910.34 Kkey/s][total 2723072][Prob 0.0%][50% in 3.981113e+33y]
    

Стоит отметить, что сгенерированный выше адрес имеет 34 байта, но первый символ — это просто идентификатор сети (для биткойна это обычно 1или 3), а последние 4 байта — просто контрольная сумма. Подробнее об адресе см. на этой вики-странице биткойнов .


Ставки поиска ключей

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

Например, вот таблица показателей поиска ключей на вики-странице биткойнов :

Vanitygen, таблица Keysearch Rates, Mkey/s, CPU/GPU

А вот несколько отчетов от пользователей для разных графических процессоров:

  • i7 8700K — ~3Mkey/с
  • GTX 980TI (v1.42) — ~73Mh
  • GTX 1050ti — ~23 Мк/с
  • GTX 1070 — ~50Mhkey/s
  • GTX 1080ti — ~108 мегаключей/с

Источник: список поддерживаемых графических процессоров (GH-46) .

Все остальные выбрали ответ на такой вопрос, как

Сколько времени потребуется большому компьютеру, чтобы взломать конкретный закрытый ключ?

Вместо этого я отвечу на заданный вопрос...

Сколько времени потребуется большому компьютеру, чтобы взломать закрытый ключ?

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

https://lbc.cryptoguru.org/trophies

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

Многие придумают массу оправданий, почему это не имеет значения, но факт в том, что партийная линия «фактически невозможно взломать закрытые ключи биткойнов» является заведомо ложным утверждением. Ключи были взломаны, и это не миллиарды миллиардов лет.

Принесите отрицательные голоса!

(Если у вас возникнет соблазн проголосовать против, по крайней мере, прокомментируйте, почему вы проголосовали против. «Я не хочу, чтобы это было правдой», или «Другие люди сказали мне, что это неправда», или «Я хочу убедиться, что этот ответ остается первым». страница ответов» — это не повод для гордости.)

Единственным реальным риском будут квантовые вычисления.

Или обнаружение ошибки или недостатка в программных алгоритмах BTC. Тогда растрескивание может быть делом нескольких секунд, в зависимости от типа дефекта.

Здравствуйте и добро пожаловать на StackExchange. Вы уверены, что не хотели сделать это комментарием к какому-то другому ответу, а не самостоятельным ответом?
@ThePiachu, спасибо. Как вы, возможно, знаете, новые пользователи не могут оставлять комментарии, только ответы. Модератор может это исправить. (Я могу комментировать только свои ответы)
О, вы модератор . Я только что заметил. :-)

Самый быстрый компьютер - 150 петрафлопс FPC в секунду, а не 10 ... Старайтесь идти в ногу со временем (карты NV Link и Volta HCP на процессорах мощности IBM) ... вы можете прочитать или посмотреть больше на веб-сайте Team Green или на конференции 2015 г. видосы на ютубе. Поскольку общий ответ, кажется, основан на 10 Петрафлопс как самый быстрый компьютер в мире ... Вы должны четко видеть, как быстро может меняться FPC в секунду, Министерство энергетики планирует систему 300P, уже основанную на той же технологии. .

Дело в том, что ваши биткойнщики, рассказывающие вам, насколько он безопасен на основе 10P, уже ошибаются в базовой математике в 15-30 раз, потому что они, очевидно, знают не так много, как думают. Улучшения также не зависят от закона Мура, недавние достижения и нынешние ограничения связаны с совершенно другим законом, который NV Link решила как можно лучше и так хорошо улучшила время вычислений. Это просто сегодняшний пример того, как их теория миллиард миллиардов лет уже ошибочен в 15-30 раз и будет продолжать ошибаться каждый год с гораздо большей скоростью, чем они предполагают. Через 30 лет или меньше биткойн на его нынешнем уровне будет легко взломан любым, у кого есть от 40 до 50 000 долларов (в сегодняшних деньгах) или кто может использовать любое количество университетских или корпоративных суперкомпьютеров.

Любой, кто на самом деле верит, что технология 50-летней давности обеспечит цифровую безопасность чего-то 50 лет спустя, откровенно говоря, не тот человек, на которого следует вообще обращать НИКАКОЕ внимание... Означает ли это, что биткойн сегодня опасен? Не совсем так, но если те же люди будут отвечать за его безопасность через 30 лет, это будут те же невежественные люди, что и сейчас.

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