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

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

Уязвимость, известная как 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′):

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

(где 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 conjectureGeometrization conjecture и Poincaré conjecture, которые касаются топологии многообразий. Гамильтон и позже Григорий Перельман использовали этот подход для получения глубоких результатов о структуре многообразий, это может означать использование потока для выявления и анализа скрытых геометрических характеристик многообразий, что позволяет делать выводы о их топологии и других свойствах.

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

Основные связи между потоком Риччи и кривизной

  • Тензор Риччи: Поток Риччи основан на тензоре Риччи, который является средним значением секционных кривизны. Он отражает, как изменяется форма многообразия в зависимости от его кривизны, где формулируется как задача нахождения скрытого числа, когда известны результаты функции, примененной к комбинациям этого числа с известными элементами. Это может быть полезно в контексте криптографии, особенно в системах с публичным ключом, где важно минимизировать утечку информации о приватных ключах
  • Динамика кривизны: В процессе потока Риччи метрика изменяется таким образом, что кривизна может увеличиваться или уменьшаться. Это позволяет анализировать, как геометрические свойства многообразия влияют на его топологию.
  • Сингулярности: Поток Риччи может приводить к сингулярностям — точкам, где кривизна становится бесконечной. Изучение этих сингулярностей имеет ключевое значение для понимания долгосрочного поведения потока и его применения в решении топологических задач, таких как гипотеза Пуанкаре.
  • Принцип максимума: Поток Риччи сохраняет положительность скалярной кривизны, что позволяет использовать принципы максимума для анализа геометрических свойств многообразий в процессе деформации.
Исследование уязвимости Signature Malleability и компрометации приватного ключа в подписи Bitcoin

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


Классификация точек поверхности

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

Существуют поверхности, состоящие из точек одного, двух или трех типов.

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

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


Оптимизация алгоритмов

Методы, разработанные в рамках теории потоков Риччи, могут быть адаптированы для оптимизации вычислений в эллиптической криптографии, особенно в контексте операций над точками на эллиптических кривых secp256k1. Таким образом, поток Риччи не только служит инструментом для изучения изменения метрик, но и предоставляет глубокую связь между геометрией и топологией через анализ кривизны. Возьмем к примеру числа «N» и «P» которые являются важными параметрами в контексте эллиптической криптографии, особенно в стандарте secp256k1, который широко используется в блокчейне и криптовалюте Bitcoin и Ethereum.

Значение числа N

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



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


Значение числа P

P — это характеристика самой эллиптической кривой, представляющая собой простое число, которое определяет поле, в котором происходит работа с точками на кривой. Значение P для secp256k1:



Это число задает размер поля, что важно для определения диапазона возможных значений координат точек на кривой.


Разница между N и P

  • Порядок группы (N): Определяет количество точек на кривой, которые могут быть использованы для криптографических операций.
  • Простое число (P): Определяет поле, в котором работает кривая. Это число важно для математических операций над точками на кривой.

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


Вертикальное положение значение N и P

Python скрипт: value_n.py

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

Python скрипт: value_p.py

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

Как реализовать уязвимость Signature Malleability в транзакции Bitcoin?

Для реализации полноценной атаки на Биткоин, с использованием уязвимости Signature Malleability необходимо изменить эквивалентное значение (s′) как это показано во втором столбце таблицы компонентов значении (R, S, Z) цифровой подписи в ECDSA.

Для успешной атаки на Биткоин достаточно 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:

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

Сommands:

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

Сommands:

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


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

Из теории уязвимость CVE-2024-42461 известно, что злоумышленники могут использовать некорректные значения для создания поддельных подписей транзакции. Перейдем к практической части статьи и рассмотрим пример с использованием Биткоин кошелька: 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw , где были потерянный монеты на сумму: 21.2529214 BTC на ноябрь 2024 года эта сумма составляет: 1744572,51 USD

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

Решение дифференциального уравнения

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

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

Общее решение дифференциального уравнения, где функция y зависит от переменной x.

  1. Исходное уравнение:
    • Левую часть уравнения можно интерпретировать как производную функции y по x, которая равна произведению двух функций: g(y), зависящей от y, и h(x), зависящей от x.
  2. Переписывание уравнения:
    • Уравнение можно переписать в форме, которая отделяет переменные:
Исследование уязвимости Signature Malleability и компрометации приватного ключа в подписи Bitcoin
Это позволяет интегрировать обе стороны отдельно.

После разделения переменных, мы можем в точности интегрировать обе стороны:

Левую сторону относительно y:

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

Правую сторону относительно x:

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

Исследуем взаимосвязь между переменными через интеграцию [ 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:

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

Сommands:

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

Для получение публичного ключа к Биткоин Адресу 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw выбираем команду:

Вводим Биткоин адрес и получаем публичный ключ:

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

Результат:


Пример №2 с использованием инструмента Dockeyhunt Lattice Attack:

Запускаем программное обеспечение Dockeyhunt Lattice Attack и в поле "Input date" вводим Биткоин Адрес 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw и получаем публичный ключ кошелька:

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


Применим получение поддельные данные значение R, S, Z для транзакции алгоритма ECDSA в Google Colab

Установим модуль ECDSA:

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

Для получение координат (Gx, Gy) для публичного ключа воспользуемся Python-скриптом: darksignature/coordinates.py

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

Воспользуемся командой darksignature -pubkey <Gx Gy>

Запускаем код Python-скрипта: darksignature/transactions.py и получаем данные значение R, S, Z в количестве будет составлять 32 транзакции Биткоина.

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

После генерации мы получаем файл: SignatureRSZ.txt


Также в корневом каталоге: c:\PerelmanWork\Dockeyhunt Lattice Attack\ мы получаем файл: Signatures.txt

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


Как мы видим первые две цифры значение S выстроено как Порядок группы (N)

Python скрипт: value_n.py

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

В качестве инструмента для математического анализа и решения дифференциальных уравнений применим программное обеспечение 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 ]

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

Ricci Flow Hidden Number Problem

Копируем значений из файла: Signatures.txt по списку и вставим в поле ввода Ricci Flow HNP чтобы выстроит совершенно новые транзакции алгоритма ECDSA.


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

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

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

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

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

С помощью Perelman Work и Dockeyhunt Lattice Attack мы произвольно меняем переменные на уязвимость Signature Malleability как мы писали в начале статьи данная уязвимость в транзакции Bitcoin возникают из-за того, что существует возможность изменить значение S в подписи, сохраняя при этом действительность подписи. Как мы сообщали в произвольной формуле все это возможно благодаря тому, что для одной и той же подписи можно получить несколько эквивалентных значений (r,s′):

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

В конечном результате преобразование переменных в сигнатуре значение R, S′, Z мы видим две цифры значение S выстроено как структура поля (P):

Это число определяет поле, в котором работает кривая secp256k1 для функционирование математических операций над точками на эллиптической кривой.

Python скрипт: value_p.py

Signature Malleability

Теперь нам известны сигнатуры значение разницы между числа N и P. При редукции мы можем получить скрытое число X как нам известно при смещение генерации одноразовых чисел (NONCES), значение переменных сигнатур R, S′, Z будут стремиться к одной точке. Эта точка и будет представлять собой скрытое число, то есть приватный ключ.

(N —  структуры группы точек, а P — структуры поля, X — приватный ключ )

Для получение приватного ключа воспользуемся алгоритмом редукции решетки (теорема больших чисел).



Алгоритм редукции решетки Ленстры-Ленстры-Ловаса (LLL)

Воспользуемся исходным кодом LLL от Darío Clavijo известный разработчик в GitHub: daedalus

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

Установим SageMath в Google Colab:

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

Commands:

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

Запускаем Python-скрипт: latticereductions.py и получаем приватный ключ к Биткоин Адресу: 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw

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

Результат:


Установим библиотеку Bitcoin

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

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

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

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

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

Dockeyhunt Lattice Attack

Рассмотрим получение приватного ключа на примере с использованием программного обеспечение Dockeyhunt Lattice Attack

Для запуска алгоритма редукции решетки нажимаем на кнопку: Private Key


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

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

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

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

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


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



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

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


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


Signature Malleability исследование уязвимости поддельной подписи с помощью декодируемого файла Биткоин Кошелька

Signature Malleability исследование уязвимости поддельной подписи с помощью декодируемого файла Биткоин Кошелька

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



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


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


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

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

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

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

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

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 на тот же адрес внутри своей сети.

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


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

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

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


Вопрос — Ответ:
Исследование уязвимости Signature Malleability и компрометации приватного ключа в подписи Bitcoin

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

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

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

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

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



BitcoinChatGPT №5 Signature Malleability Vulnerability Algorithm


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

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

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

Каталог:

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

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

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



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

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


  1. Именно эту уязвимую RawTX мы рассматривали в начале данной статьи: ↩︎
Это изображение имеет пустой атрибут alt; его имя файла - image-19-1024x422.png
Процесс декодирование 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.

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

Данный материал создан для портала 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


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

Crypto Deep Tech