Сегодня я попросил ChatGPT создать для меня исследование на эту тему: Сколько времени займёт brute-force одного Bitcoin-приватного ключа на 100 000 GPU. Вот его отчёт как есть. Получилось интересно
Выбор самого мощного GPU (NVIDIA H100 vs B100)
Современные датацентровые графические процессоры (GPU) обладают колоссальной вычислительной мощностью, но их архитектура может по-разному влиять на задачи криптографии. На текущий момент (2024–2025 гг.) флагманским ускорителем NVIDIA является H100 (архитектура Hopper), а его преемником назван B100 (архитектура Blackwell). GPU B100 представляет дальнейший шаг вперёд: чип B100 содержит около 104 миллиардов транзисторов (на 128 миллиардов больше, чем H100) и обеспечивает до пятикратного роста производительности в задачах ИИ по сравнению с H100 exittechnologies.com. Это означает, что B100 способен превзойти H100 по вычислительной мощности и скорости выполнения операций, важных для brute-force (таких как хэширование SHA-256 и вычисление открытого ключа Elliptic Curve для Bitcoin-адреса). В нашем оценочном расчёте мы будем ориентироваться на GPU NVIDIA B100 как наиболее производительный вариант, предполагая, что он обеспечивает наибольшую скорость перебора среди доступных GPU.
Допущение: Мы считаем, что адрес формата P2PKH (legacy) и SegWit (P2WPKH) требуют схожих вычислений для генерации (вычисление публичного ключа с помощью эллиптической криптографии, затем SHA-256 и RIPEMD-160 хэширование). Поэтому разница в сложности между этими типами адресов минимальна, и можно взять любой из них (для определённости – P2PKH) без существенного влияния на итоговую скорость перебора.
Производительность одного GPU в переборе Bitcoin-адресов
Brute-force поиск приватного ключа, соответствующего данному биткоин-адресу, требует генерации огромного количества адресов в секунду и сравнения их с целевым. Каждая попытка включает несколько шагов:
- Генерация открытого ключа из случайного приватного ключа (операция эллиптического умножения на кривой secp256k1).
- Вычисление хэша адреса: сначала SHA-256 от открытого ключа, затем RIPEMD-160 от результата, чтобы получить 160-битный hash160 (Bitcoin-адрес в двоичной форме).
- Сравнение полученного hash160 с целевым адресом.
Эти операции требовательны, но хорошо распараллеливаются на GPU. По оценкам специалистов, один высокопроизводительный GPU способен проверять порядка 10^8–10^9 ключей в секунду. Например, в реальных тестах:** NVIDIA H100** (PCIe-версия) достигает ~142,6 млн проверок ключей в секунду linkedin.com. В то же время теоретические оценки хэш-производительности указывают, что H100 мог бы выполнять до ~900 млн SHA-256 хэшей в секунду linkedin.com (хотя на практике узким местом является именно расчёт открытого ключа на эллиптической кривой). Учитывая преимущество новой архитектуры, предположим, что один NVIDIA B100 сможет проверить около ~2,5×10^8 (250 млн) ключей в секунду. Это оценка на ~75% выше, чем у H100, что согласуется с заявленным ростом производительности B100exittechnologies.com.
Допущения: Для упрощения мы не учитываем накладные потери (обмен с памятью, неидеальную масштабируемость алгоритма на GPU и пр.) и берём оптимистичную оценку для B100. Мы также предполагаем, что каждое «ключевое» испытание (генерация и проверка адреса) по затратам близко к выполнению нескольких SHA-256, то есть GPU используется эффективно под эту задачу. Специализированные ASIC для Bitcoin-майнинга могут выполнять SHA-256 быстрее, но не способны вычислять публичные ключи secp256k1, поэтому для подбора ключа требуются именно программные вычисления на GPU или CPU.
Общая производительность кластера из 100 000 GPU
Теперь рассмотрим кластер из 100 000 таких GPU. Это гигантский масштаб, соответствующий оснащению нескольких крупных дата-центров. При производительности ~2.5×10^8 попыток в секунду на каждый GPU, суммарная скорость кластера будет:
- 100 000 × 2,5×10^8 = 2,5×10^13 попыток в секунду (25 триллионов проверок адресов в секунду).
Это чрезвычайно высокая скорость перебора. Для сравнения, даже если бы каждая попытка занимала один такт, такой кластер требовал бы тактовую частоту ~25 трлн Гц, что немыслимо для традиционных CPU. Тем не менее, даже столь массивный параллелизм бледнеет перед астрономическим размером пространства ключей, как покажем далее.
Размер пространства приватных ключей и адресов
Приватный ключ Bitcoin – это 256-битное число. Общее количество возможных приватных ключей составляет 2^256, что приблизительно равно 1,16×10^77 (это число порядка десяти септиллионов)bitcoin.stackexchange.com. Это настолько огромное количество, что перебрать все варианты напрямую невозможно. К счастью (для задачи подбора ключа), биткоин-адрес имеет меньший размер – 160 бит. Биткоин-адрес получается применением криптографических хэшей к откры тому ключу, поэтому количество возможных адресов равно 2^160 (около 1,46×10^48 вариантов)bitcoin.stackexchange.com. Таким образом, множество приватных ключей отображается на значительно меньшее множество адресов. По принципу Дирихле, существуют многие ключи, которые приводят к одному и тому же адресу (в среднем ~2^(256-160) = 2^96 ключей на адрес).
Для атаки brute-force это означает, что мы не обязаны перебирать всё пространство 2^256. Достаточно найти любой приватный ключ из тех (в гипотетическом множестве ~2^96 штук), который даст целевой 160-битный адрес. Фактически, при каждом испытании шанс успеха равен отношению числа целевых решений к числу всех ключей: примерно 1 / 2^160 (то есть около 1 из 1,46×10^48). Это невероятно малый шанс. Практически можно считать, что для успеха потребуется порядка 2^160 попыток в среднем (т.е. $1/(1/2^{160})$ по математическому ожиданию). Даже использование birthday-атаки (поиск любых двух совпадающих адресов между собой) мало помогает – для 50% шанса найти коллизию адресов всё равно надо сгенерировать около 10^38 адресовbitcoin.stackexchange.com, что тоже недостижимо.
Допущение: Мы предполагаем отсутствие каких-либо уязвимостей или слабых ключей. Приведённые оценки справедливы для равномерного случайного перебора по всему пространству. Вероятность коллизии хэшей RIPEMD-160 на одном адресе пренебрежимо мала до тех пор, пока не сгенерировано порядка 10^20–10^24 адресов, поэтому мы не учитываем время на поиск дублирующих адресов – нас интересует первая находка целевого адреса.
Расчёт времени для нахождения приватного ключа (brute-force)
Итак, мы имеем:
- Скорость перебора кластера: ~2,5×10^13 попыток в секунду (для 100 000 топовых GPU).
- Пространство поиска: ~2^160 возможных попыток (для нахождения заданного 160-битного адреса).
Чтобы оценить среднее время нахождения совпадения, разделим количество комбинаций на скорость перебора:
Это колоссальное количество времени. Переведём его в более понятные единицы:
- ≈5,8×10^34 секунд понадобится в среднем.
- В сутках 86 400 секунд, значит это ≈6,7×10^29 дней.
- В году ~365 дней, то есть порядка 1,8×10^27 лет.
- Для масштаба: это ~1,8×10^25 столетий (десяти сентиллионов столетий).
Иными словами, даже используя 100 тысяч самых мощных GPU, время перебора превышает $10^{17}$ раз возраст Вселенной (возраст Вселенной ~1,38×10^10 лет) – фактически брютфорс займёт миллиарды миллиардов миллиардов лет. Такое время просто немыслимо; по сравнению с ним даже существование звёзд и галактик мгновенно.
Чтобы подчеркнуть масштаб: в одной оценке было показано, что даже кластер из 350 000 GPU Nvidia H100 (значительно больше нашего предположения) всё равно потребовал бы порядка 1×10^55 лет для перебора полного пространства ключейlinkedin.com. Наш расчёт, учитывающий сокращение пространства до 160 бит, даёт меньшую цифру (~10^27 лет), но этот срок по-прежнему астрономически недостижим.
Вывод
Даже при оптимистичных допущениях чистый brute-force поиск практически невыполним. Пространство возможных ключей и адресов настолько велико, что перебор не успеет завершиться ни за какое разумное время – ни за миллионы лет, ни за возраст Вселенной. Использование 100 000 современных GPU увеличивает скорость на несколько порядков по сравнению с одним компьютером, но этого совершенно недостаточно перед лицом $2^{160}$ возможных адресов. В результате можно заключить, что нахождение приватного ключа по заданному биткоин-адресу методом полного перебора невозможно на практикеlinkedin.com – требуемое время измеряется в несравнимо больших величинах, выходящих далеко за рамки человеческой истории и существования Вселенной.
Примечание: Наши оценки основаны на ряде предположений о производительности GPU и не учитывают потенциальных оптимизаций или будущих технологических прорывов (например, квантовых вычислений). Однако даже улучшение скорости перебора на многие порядки не изменит качественно вывода: криптографическая прочность Bitcoin чрезвычайно высока за счёт огромного пространства ключейbitcoin.stackexchange.com, и прямой перебор одного ключа остаётся неосуществимым.