Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Digital-Signature-Forgery-Attack — Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с помощью поддельных RawTX | Kitploit
Инструменты/GitHubGitHub/demining/digital-signature-forgery-attack
Анализ уязвимостейЭксплуатацияКриптографияCTFОбучение и ОбразованиеПодобранные Ресурсы
GitHubdemining/digital-signature-forgery-attack

Digital-Signature-Forgery-Attack

Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с помощью поддельных RawTX

РепозиторийСайт
421 год назадЕщё не проверено

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с помощью поддельных RawTX

В этой статье мы рассмотрим криптографическую атаку подделки цифровой подписи (Digital Signature Forgery Attack), последствия которой представляют угрозу безопасности транзакций в сети Биткоин, поскольку цифровые подписи подтверждают право собственности и авторизацию переводов криптовалюты. Мы рассмотрим примеры влияния таких атак на Биткоин на основе современных исследований и выявленных уязвимостей.

Атака подделки цифровой подписи (Digital Signature Forgery Attack) — это попытка злоумышленника создать поддельную цифровую подпись ECDSA, которая будет признана действительной сетью Биткоин. Эта атака позволяет авторизовывать транзакции без знания закрытого ключа владельца, что ставит под угрозу безопасность средств в криптокошельке держателя монет BTC.


  • Учебник: https://youtu.be/qbu1m_C1wyA
  • Учебник: https://cryptodeeptech.ru/digital-signature-forgery-attack
  • Учебник: https://dzen.ru/video/watch/68801dfc0c886621f7c1a0db
  • Google Colab: https://colab.research.google.com/drive/1TKrJ0bKsNgc72H9UvzpCnh2YPmRsyPdW

В криптографии цифровая подпись обеспечивает подтверждение подлинности сообщения или транзакции. Подделка подписи означает, что можно создать пару «RawTX», которая будет принята системой как действительная, хотя на самом деле она не была создана владельцем закрытого ключа. Это открывает путь для мошенничества, кражи средств и нарушения целостности блокчейна. Атака подделки цифровой подписи (DSFA) как криптографическая атака реализуется в программных компонентах, которые используют библиотеку xml-crypto для проверки подписей XML-документов на платформе Node.js.


Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с помощью поддельных RawTX

https://youtu.be/qbu1m_C1wyA


В первую очередь это касается корпоративных интеграционных решений, облачных сервисов и систем единого входа, таких как IBM App Connect Enterprise Certified Container и других приложений, которые зависят от xml-crypto для аутентификации и авторизации SAML. Аппаратные уязвимости не связаны с конкретными физическими устройствами, а реализуются в программных продуктах, использующих уязвимую библиотеку.

Уязвимости CVE-2025-29774 и CVE-2025-29775, известные как атака подделки цифровой подписи, реализованы в программной библиотеке  xml-crypto , библиотеке для цифрового подписания и шифрования XML-документов на платформе Node.js.


Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с помощью поддельных RawTX
Бюллетень безопасности: Операнды IBM App Connect Enterprise Certified Container уязвимы для обхода проверки подписи в XML-данных [CVE-2025-29774] [CVE-2025-29775]

  • IBM App Connect Enterprise Certified Container  — это программное обеспечение для интеграции и обработки данных, которое использует xml-crypto для проверки подписей XML-документов. Уязвимости позволяют обойти проверку цифровой подписи, что приводит к возможности подделки и изменения подписанных сообщений, включая ответы SAML для аутентификации и авторизации.
  • Системы и приложения, использующие Node.js с библиотекой xml-crypto  для проверки подписанных XML-сообщений, особенно в контексте аутентификации SAML (например, корпоративные порталы, системы единого входа, облачные сервисы). Уязвимость позволяет злоумышленнику изменить действительные подписанные XML-сообщения таким образом, чтобы они прошли проверку подписи, что приводит к обходу аутентификации и авторизации, повышению привилегий и подделке учетных данных.

Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с помощью поддельных RawTX
Раскрытие информации для CVE-2025-29774 и CVE-2025-29775 (SAMLStorm).

  • Уязвимости связаны с неправильной проверкой криптографической подписи в xml-crypto , а именно с обработкой узла DigestValue, где злоумышленник может вставлять XML-комментарии, не нарушая проверку подписи.
  • Это позволяет изменять критические атрибуты идентификации и контроля доступа в подписанных XML-документах, что приводит к возможности обхода безопасности без необходимости в учетных данных или правах доступа.

Таким образом, этот код реализует алгоритмы криптографической подписи и проверки подписи для различных схем (RSA с различными хешами SHA и HMAC-SHA1), что позволяет интегрировать их в системы, требующие цифровой подписи данных.


Критическая уязвимость в коде signature-algorithms.ts

Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с помощью поддельных RawTX

Код signature-algorithms.ts используется для безопасного создания и проверки цифровых подписей, обеспечивая подлинность и целостность данных. Подписи ECDSA обеспечивают проверку авторства с помощью закрытого ключа, а HMAC — проверку целостности и подлинности с помощью секретного ключа. Используемые алгоритмы соответствуют стандартам XML Digital Signature (URI алгоритмов указывают на спецификации W3C).


Таким образом, код signature-algorithms.ts реализует алгоритмы криптографической подписи и проверки подписи для различных схем (ECDSA, RSA с различными хешами SHA и HMAC-SHA1), что позволяет интегрировать их в системы, требующие цифровой подписи данных.


Основные функции

  • Каждый класс реализует интерфейс  SignatureAlgorithm и предоставляет методы для:
    • Создания подписи  (getSignature): принимает данные подписи и закрытый ключ, возвращает цифровую подпись в формате base64.
    • Проверки подписи  (verifySignature): принимает входные данные, открытый ключ и подпись, возвращает логическое значение, указывающее, верна ли подпись.
    • Получения имени алгоритма  (getAlgorithmName): возвращает URI, идентифицирующий используемый алгоритм подписи.

Поддерживаемые алгоритмы

  • RsaSha1  — подпись с использованием RSA и хеш-функции SHA-1.
  • RsaSha256  — подпись с использованием RSA и SHA-256.
  • RsaSha512  — подпись с использованием RSA и SHA-512.
  • HmacSha1  — подпись с использованием HMAC на основе SHA-1.

Технические детали

  • Для подписей RSA используются классы  crypto.createSign и  crypto.createVerify с соответствующими алгоритмами («RSA-SHA1», «RSA-SHA256», «RSA-SHA512»).
  • Для подписей HMAC используется  crypto.createHmac с алгоритмом «SHA1».
  • Подписи кодируются в base64 для удобства передачи и хранения.
  • Методы обернуты в функцию  createOptionalCallbackFunction, которая, вероятно, позволяет использовать их как с колбэками, так и с промисами (подробности в коде отсутствуют).

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


В частности, проблема в классе RsaSha1:

root@kitploit:~
const signer = crypto.createSign("RSA-SHA1");  // Уязвимая строка

Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с помощью поддельных RawTX
signature-algorithms.ts#L7

Также вторая уязвимость находится в классе RsaSha1:

root@kitploit:~
const verifier = crypto.createVerify("RSA-SHA1");  // Уязвимая строка

Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с помощью поддельных RawTX
signature-algorithms.ts#L17

Почему эта критическая атака коллизий позволяет создавать разные данные с одинаковым хешем?

  1. Коллизии SHA-1 : Алгоритм SHA-1 больше не считается безопасным.
  2. Контекст RSA : В сочетании с RSA это может привести к подделке подписей на ненадежных данных (например, сертификатах или документах).
  3. Рекомендации : NIST и сообщество безопасности рекомендуют использовать SHA-256/SHA-512 вместо SHA-1.

Дополнительные примечания:

  • Класс (HMAC-SHA1) HmacSha1менее уязвим, но также устарел. HMAC более устойчив к коллизиям, чем «чистый» SHA-1, но переход на SHA-256 предпочтительнее.
  • Код содержит современные реализации (RsaSha256/RsaSha512), которые следует использовать вместо RsaSha1.

Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с помощью поддельных RawTX

CVE-2025-29774 и CVE-2025-29775 — это критические уязвимости в библиотеке xml-crypto для Node.js, связанные с неправильной проверкой цифровых подписей в XML-документах. Обе уязвимости позволяют злоумышленнику изменить подписанные XML-сообщения таким образом, что это остается незамеченным при проверке подписи.


Механизм атаки подделки цифровой подписи

1. Уязвимости в алгоритмах RSA-SHA1

В представленном коде классы RsaSha1 используют устаревший алгоритм RSA-SHA1 для подписи и проверки:

root@kitploit:~
const signer = crypto.createSign("RSA-SHA1");  // Уязвимая строка №7
const verifier = crypto.createVerify("RSA-SHA1");  // Уязвимая строка №17

SHA1 считается криптографически небезопасным, основная проблема заключается в логике обработки XML-структур библиотекой :

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

2. Пример работы

  1. Модификация SignedInfo :
    • Злоумышленник добавляет в XML-документ дополнительные узлы <SignedInfo> , что приводит к неправильному вычислению хеша при проверке.
    xml<Signature> <SignedInfo>...</SignedInfo> <!-- Исходный узел --> <SignedInfo>...</SignedInfo> <!-- Добавлен злоумышленником --> </Signature>
  2. Использование слабого алгоритма :
    • Алгоритм SHA1 уязвим для коллизий, что позволяет легко создавать поддельные подписи для измененных документов.

3. Последствия

  • Обход аутентификации : Изменение атрибутов в токенах SAML или других XML-документах, связанных с доступом.
  • Повышение привилегий : Подмена идентификатора пользователя на администратора в системе авторизации.
  • Массовые атаки : Уязвимость может быть использована удаленно без взаимодействия с пользователем (CVSS 9.3).

Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают мультиподписным кошелькам. Методы работы с поддельными RawTX

Технические детали уязвимостей:

CVE-2025-29774

  • Проблема: Недостаточная проверка структуры XML-документа при проверке подписи.
  • Эксплуатация: Добавление лишних узлов или атрибутов в подписанную часть документа.

CVE-2025-29775

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

Рекомендации по устранению неисправностей

  1. Обновление библиотеки:
    • Для версий 2.x → 2.1.6, 3.x → 3.2.1, 6.x → 6.0.1.
  2. Замена алгоритма: typescript // Использование SHA-256 / SHA-1 const signer = crypto.createSign("RSA-SHA256");
  3. Проверка структуры XML:
    • Убедитесь, что в подписи присутствует ровно один узел <SignedInfo>.

Устранение этих уязвимостей критически важно для систем, использующих XML-подписи для аутентификации (например, SAML, SOAP).


Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают мультиподписным кошелькам. Методы работы с поддельными RawTX

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

  • Программное обеспечение и сервисы, использующие xml-crypto для XML-подписей, включая платформы корпоративной интеграции и промежуточное ПО (например, IBM App Connect Enterprise, где эти уязвимости были зарегистрированы).
  • Устройства и системы, использующие XML-подписи для аутентификации и авторизации, включая серверы и шлюзы, поддерживающие SAML.

  • Уязвимости CVE-2025-29774 и CVE-2025-29775 в первую очередь затрагивают программные компоненты и платформы, использующие библиотеку xml-crypto для обработки XML-подписей.
  • Известные жертвы включают IBM App Connect Enterprise и, вероятно, другие корпоративные решения на Node.js, использующие xml-crypto.
  • В настоящее время нет публичных данных о конкретных марках аппаратных устройств, пострадавших от этих атак.

Чтобы оценить риск для конкретных устройств, рекомендуется проверить, используют ли они уязвимые версии xml-crypto или зависят от аналогичных механизмов XML-подписей. Для работы с криптовалютными кошельками на основе Node.js IBM предлагает отдельные решения, такие как IBM Secure Bitcoin Wallet — приложение на основе Electrum Bitcoin Client, использующее Node.js для взаимодействия с сетью Bitcoin и управления кошельком.

В этом решении закрытые ключи и кошелек могут храниться и шифроваться с помощью IBM Cloud Hyper Protect Crypto Services (zHSM), что обеспечивает аппаратное безопасное хранение ключей. Генерация закрытых ключей для Bitcoin-кошельков обычно реализуется в специализированных криптографических библиотеках, таких как Electrum, bitcoinjs-lib и других, которые могут быть интегрированы в приложения Node.js. IBM Secure Bitcoin Wallet использует модифицированный бэкенд Electrum на Node.js для управления ключами и транзакциями через интеграцию с IBM Cloud Hyper Protect Crypto Services, что обеспечивает аппаратное шифрование и безопасное хранение закрытых ключей.


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

Из теории уязвимости CVE-2025-29775 известно, что злоумышленник может обработать необновленную библиотеку xml-crypto для получения некорректных значений транзакций. Перейдем к практической части статьи и рассмотрим пример с Bitcoin-кошельком: 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe, где были потеряны монеты в размере: 0.059672 BTC. По состоянию на июль 2025 года эта сумма составляет: 7 052 USD


Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают мультиподписным кошелькам. Методы работы с поддельными RawTX791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf

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


Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают мультиподписным кошелькам. Методы работы с поддельными RawTX
Raw Transaction

Для полного возврата объектов UTXO в сети Bitcoin мы воспользуемся инструментом Dark AI. UTXO — это основная часть структуры данных в блокчейне и представляет собой количество монет BTC, которые могут быть потрачены держателем закрытого ключа (контролирующего этот Bitcoin-адрес). Каждый UTXO является выходом определенной прошлой транзакции, который никогда не использовался как вход в последующих транзакциях.

Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают мультиподписным кошелькам. Методы работы с поддельными RawTX

Google Colab

Private key Debug: Некорректная генерация закрытых ключей, системные уязвимости и ошибки в вычислении порядка эллиптической кривой secp256k1 угрожают экосистеме Bitcoin

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


1. Загрузка и установка инструмента Dark AI

Подробное описание всех команд терминала и действий

Команды:

root@kitploit:~
!wget https://darkai.ru/repositories/neuralnet_tools.zip
  • wget — утилита командной строки для загрузки файлов из сети по протоколам HTTP, HTTPS и FTP.
  • Мы загружаем архив по указанному URL.neuralnet_tools.zip
  • unzip — команда для извлечения ZIP-архивов в текущую директорию.

Эта команда извлекает все файлы из neuralnet_tools.zip

root@kitploit:~
!unzip neuralnet_tools.zip

Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают мультиподписным кошелькам. Методы работы с поддельными RawTX

Выполним команду ls для быстрого и удобного просмотра

ls


Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают мультиподписным кошелькам. Методы работы с поддельными RawTX

2. Запуск инструмента Dark AI

root@kitploit:~
!./darkai
Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают мультиподписным кошелькам. Методы работы с поддельными RawTX

Выполним команду для получения информации о так называемых непотраченных выходах транзакций (UTXO, расшифровка: Unspent Transaction Output) для указанного Bitcoin-адреса. Эта информация важна для оценки баланса адреса и возможности проведения новых транзакций.

root@kitploit:~
!./darkai -bitcoinaddress 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe

В результате было возвращено два объекта UTXO:

root@kitploit:~
[
{'output': '8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd:0', 'value': 677200},
{'output': 'bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786:0', 'value': 5000000}
]

Каждый UTXO содержит:

  • output — идентификатор выхода. Формат: <txid>:<n>, где <txid> — уникальный хеш транзакции, а <n> — номер выхода в списке выходов для этой транзакции.
  • value — сумма в сатоши (1 биткоин = 100 000 000 сатоши).

Расшифровка данных:

  1. Первый UTXO
    • Выход: 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd:0
    • Сумма: 677 200 сатоши
  2. Второй UTXO
    • Выход: bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786:0
    • Сумма: 5 000 000 сатоши

Общий баланс

Общий доступный баланс адреса равен сумме всех найденных UTXO:

  • 677 200 + 5 000 000 = 5 677 200 сатоши
  • В пересчете на биткоины: 5 677 200 / 100 000 000 = 0.05677200 BTC
Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают мультиподписным кошелькам. Методы работы с поддельными RawTX

Техническая интерпретация с помощью Dark AI

Мы используем процесс интерпретации для обработки необновленной библиотеки xml-crypto с целью создания некорректных значений транзакций и отправки большой суммы; алгоритм Dark AI выберет, какой UTXO использовать (или объединит оба).

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

Bitcoin-адрес 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe имеет два активных UTXO общей суммой 0.05677200 BTC. Эти средства могут быть использованы для проведения новых транзакций; оба выхода считаются подтвержденными и непотраченными.


Атака подделки цифровой подписи: Как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают мультиподписным кошелькам. Методы работы с поддельными RawTX

Десериализация Bitcoin-транзакции

Чтобы получить фрагменты информации о выходе (output) биткойн-транзакции, используйте следующие команды, где первый выход ( outs) из транзакции имеет уникальный идентификатор8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd


root@kitploit:~
!./darkai -deserialize 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd

Получаем структуру ответа результата десериализации:

root@kitploit:~
{'value': 677200, 'script': 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'}
  • value: 677200 — сумма этого выхода выражена в сатоши (1 BTC = 100 000 000 сатоши).
  • script: a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287 — скрипт, определяющий условия траты этого выхода.

Подробное объяснение элементов: Поле Value

  • Value: 677 200 сатоши.
  • Эта сумма может быть потрачена при создании соответствующей транзакции, если условия скрипта выполнены.
  • Эквивалент: 677 200 / 100 000 000 = 0,00677200 BTC.
Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

Подробное объяснение элементов: Поле Script

  • Значение скрипта: a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287
  • Это скрипт типа «scriptPubKey» – часть структуры выхода транзакции, которая определяет, кто может потратить эти средства. Важнейшая цель — обеспечение безопасности и контроля над распоряжением средствами.

Декодирование скрипта

  • Скрипт начинается с префикса a914...87, что соответствует формату P2SH (Pay to Script Hash):
    • a9— OP_HASH160 (оператор хеширования)
    • 14— длина следующего значения (20 байт = 40 шестнадцатеричных символов)
    • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— hash160 самого биткойн-адреса Wallet, где хранятся монеты BTC.
    • 87— OP_EQUAL (базовый оператор команды Bitcoin Script, который реализует сравнение двух фрагментов данных для проверки их идентичности)
  • Это означает, что получатель может потратить средства, если предоставит скрипт, хеш которого соответствует указанному значению, и предоставит действительные подписи для этого скрипта.

Практическое значение результата

  • Этот выход указанной транзакции содержит 677 200 сатоши (0,00677200 BTC), которые защищены скриптом типа P2SH.
  • Чтобы потратить средства с такого выхода, необходимо будет знать исходный скрипт и предъявить правильные подписи — типичная ситуация для мультиподписных кошельков, смарт-контрактов и других продвинутых схем безопасности.
  • Эта информация важна для анализа структуры транзакции, проверки назначения средств и понимания требований для их последующего использования.

Десериализация транзакции по идентификатору

В результате десериализации транзакции по идентификатору, 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afdбыл получен первый выход, содержащий сумму 677 200 сатоши (0,00677200 BTC), защищенную скриптом P2SH. Для управления этими средствами потребуется предъявить целевой скрипт и правильно подписать транзакцию разблокировки, удовлетворяющую условиям указанного хеша.


Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

Десериализация второй биткойн-транзакции

Чтобы получить фрагменты информации о выходе исходных данных ( output) биткойн-транзакции, примените следующие команды, где первый выход ( outs) из транзакции с уникальным идентификатором bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786

root@kitploit:~
!./darkai -deserialize bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786

Используя процесс интерпретации, с помощью Dark AI с применением функции десериализации, мы затем получаем информацию о структуре первого элемента выхода ( output) для второй транзакции с идентификатором
bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786.



Результат:

root@kitploit:~
{'value': 5000000, 'script': 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'}

1. Подробное объяснение элементов:  Поле Value

  • Содержимое: 5000000
  • Это значение выражено в сатоши , наименьшей неделимой единице биткойна; 1 BTC = 100 000 000 сатоши.
  • Назначение:
    Эта сумма связана с конкретным выходом транзакции, указанным в элементах массива 'outs'. Она может быть потрачена только при выполнении условий, записанных в скрипте, определенном в поле 'script'.
  • Перевод в биткойны: 5 000 000 сатоши = 0,05 BTC
Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

2. Подробное объяснение элементов:  Поле Script

  • Содержимое: 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'
  • Это так называемый блокирующий скрипт или, иначе, scriptPubKey – скрипт, который задает условия, при которых этот выход может быть потрачен.

Декодирование скрипта

Указанное значение соответствует стандартному типу скрипта в сети Bitcoin:

  • a9— код операции OP_HASH160 (вычисляет RIPEMD-160 от SHA-256 от следующей строки).
  • 14— длина последующего поля: 20 байт (40 шестнадцатеричных символов).
  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— 20-байтовый хеш, который идентифицирует либо адрес биткойн-кошелька, либо скрипт.
  • 87— код операции OP_EQUAL.

В совокупности эта запись означает адрес P2SH (Pay-to-Script-Hash). В этом случае средства привязаны к определенной комбинации скриптов, и для их вывода потребуется раскрыть скрипт, хеш которого здесь записан, и предъявить подписи (или другие данные), удовлетворяющие условиям этого скрипта.


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


3. Практический смысл результата, размер и назначение средств.

  1. Рассматриваемая транзакция (с хешем bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786) имеет выход, в котором 0,05 BTC (5 000 000 сатоши)«заблокированы» на P2SH-адресе, соответствующем хешу06612b7cb2027e80ec340f9e02ffe4a9a59ba762
  2. Условия траты:
    Чтобы потратить эти средства, при формировании тратящей транзакции необходимо предъявить не только стандартную подпись, как при прямом переводе, но и сам скрипт, хеш которого встроен в этот выход, а также данные (например, набор цифровых подписей), которые соответствуют условиям скрипта.
  3. Безопасность и гибкость:
    Этот метод позволяет реализовать более сложную логику, чем отправка напрямую на обычный биткойн-адрес.

4. Оформление выхода на уровне совместимости с различными сервисами и кошельками, поддерживающими P2SH.

  • Идентификатор транзакции
    bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786
    содержит выход, в котором
    0,05 BTC (5 000 000 сатоши)
    закреплен за P2SH-скриптом (Pay-to-Script-Hash) с хешем
    06612b7cb2027e80ec340f9e02ffe4a9a59ba762.
  • Чтобы потратить эти средства, необходимо раскрыть исходный скрипт и выполнить его условия (например, предъявить все подписи при мультиподписи).

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


Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

Блокирующий скрипт P2SH (Pay-to-Script-Hash) в сети Bitcoin. Что означает этот скрипт?

Скрипт 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'выбран и используется в этом выходе транзакции, поскольку он представляет собой типичный блокирующий скрипт P2SH (Pay-to-Script-Hash) в сети Bitcoin.


Разберем его по частям:

  • a9— OP_HASH160: Операция хеширования, которая сначала применяет SHA-256, а затем RIPEMD-160 к последующим данным.
  • 14— длина хеша — 20 байт (в шестнадцатеричном формате).
  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— 20-байтовый хеш скрипта, известный как хеш скрипта.
  • 87— OP_EQUAL: Оператор, проверяющий равенство двух значений в стеке.

Таким образом, этот скрипт требует, чтобы в момент использования (траты средств) был предъявлен скрипт, хеш которого совпадает с 06612b7cb2027e80ec340f9e02ffe4a9a59ba762, и чтобы условия этого скрипта были выполнены.


Почему был выбран именно этот?

  • Удобство и безопасность: P2SH позволяет скрыть сложную логику управления средствами (например, мультиподписи или условные платежи) в хеше, упрощая интерфейс для отправителя и получателя.
  • Стандарт отрасли: P2SH стал широко принятым стандартом, поскольку упрощает настройку сложных схем безопасности и совместим с большинством кошельков и сервисов.
  • Компактность: В блоке хранится только хеш сложного скрипта, а не весь скрипт целиком — это экономит место и повышает эффективность.
  • Гибкость: Владелец средств может создавать произвольные условия для траты — например, требование нескольких подписей, временные задержки или другие правила — и хеш этих условий сохраняется здесь.

Скрипт 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'— это блокирующий скрипт P2SH, который говорит, что для траты 0,05 BTC необходимо предоставить исходный скрипт с хешем 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 и выполнить условия, указанные в нем. Это обеспечивает баланс между удобством, безопасностью и функциональностью — основная причина выбора именно этого скрипта в данной транзакции. Хеш 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 в P2SH-скрипте — это результат конкретного хеширования исходного скрипта (redeem script), который определяет условия траты средств из этого выхода.


Почему именно этот хеш, а не другой?

  1. Хеш — это цифровой отпечаток скрипта, задающего правила траты.
    При создании P2SH-адреса или выхода сначала явно записывается скрипт (условия траты биткойна), затем применяются два алгоритма хеширования:
    • SHA-256 от скрипта,
    • Затем RIPEMD-160 от результата SHA-256.
      Полученный 20-байтовый хеш — это 06612b7cb2027e80ec340f9e02ffe4a9a59ba762. Этот хеш однозначно идентифицирует именно тот сценарий, для которого он был сгенерирован.
  2. Уникальность и неизменность
    Криптографические хеш-функции обладают свойством «лавинного эффекта», при котором даже минимальное изменение исходного скрипта приведет к совершенно другому хешу. Поэтому этот хеш уникален и неподделываем в контексте исходного скрипта.
  3. Цель использования хеша — обеспечение компактности и безопасности.
    Вместо хранения полного скрипта в каждом выходе, который может быть сложным и занимать много места, в блоке хранится только его хеш. Это экономит место и повышает конфиденциальность — сам скрипт раскрывается только при трате средств и только тем, кто выполняет условия.
  4. Выбор хеша является результатом конкретного скрипта, определенного создателем адреса или кошелька.
    Разработчик или владелец средств создает скрипт с желаемыми условиями (например, мультиподпись, временная задержка, другие логические условия). Назначенный скрипт хешируется, и этот хеш привязывается к выходу транзакции. Таким образом, нет произвольного выбора хеша — он определяется содержимым исходного скрипта и криптографическим алгоритмом.

  • Этот хеш строго привязан к конкретному скрипту, который владелец адреса установил для защиты своих средств.
  • Он был сгенерирован с помощью криптографических хеш-функций ( SHA-256 + RIPEMD-160)из исходного скрипта (redeem script), поэтому случайно или произвольно выбрать другой хеш невозможно.
  • Этот хеш является отражением уникальной комбинации условий траты, и именно поэтому он оказался в скрипте выхода транзакции.a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287

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


Механизм P2SH: значение, принцип работы и безопасность в сети Bitcoin

Разработчики Bitcoin встроили в код механизм P2SH (Pay-to-Script-Hash) как ключевое новшество, обеспечивающее безопасность и расширяющее возможности сети блокчейн. Рассмотрим структуру и принцип работы этого скрипта, его отличие от классических транзакций, а также причины выбора такого подхода к хранению и защите цифровых активов.

Традиционно транзакции Bitcoin работали по схеме Pay-to-Pubkey-Hash (P2PKH) – где средства «блокируются» с использованием хеша открытого ключа получателя. Чтобы потратить эти средства, пользователь должен предоставить свою цифровую подпись и открытый ключ, которые проверяются сетью.

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


Именно для упрощения взаимодействия с такими сложными сценариями в 2012 году была введена концепция P2SH , стандартизированная в BIP 16 Гэвином Андресеном. Суть P2SH сводится к замене полного скрипта условий траты в scriptPubKey на его криптографический хеш – так называемый хеш скрипта.


Атака подделки цифровой подписи: как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с поддельными RawTX


Как работает структура выходного скрипта P2SH?

Давайте посмотрим на скрипт, полученный в результате десериализации:

root@kitploit:~
OP_HASH160 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 OP_EQUAL

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

  • OP_HASH160 – хеширует данные (в данном случае redeemScript) сначала алгоритмом SHA-256, а затем RIPEMD-160.
  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 — 20-байтовый хеш redeemScript.
  • OP_EQUAL – проверяет, равен ли предоставленный redeemScript этому хешу.

Процесс траты средств через выход P2SH

Чтобы потратить такие средства, необходимо передать во входах (scriptSig) транзакции, ссылающейся на этот выход:

  1. Сериализованный redeemScript – оригинальный скрипт, условия которого закодированы в хеше.
  2. Данные для разблокировки – подписи или другие подтверждения, удовлетворяющие условиям redeemScript.

При обработке транзакции узлы сети:

  • Хешируют redeemScript и сравнивают его с хешем, указанным в выходе.
  • Если хеши совпадают (т.е. OP_EQUAL возвращает true), то redeemScript десериализуется и выполняется.
  • Транзакция считается действительной, если redeemScript выполняется корректно, т.е. все условия траты соблюдены.

Таким образом, P2SH переносит ответственность за представление и проверку условий траты с отправителя (создающего требуемый скрипт) на тратящего.


Преимущества и важность выбора такого механизма

1. Гибкость и сложные сценарии

P2SH позволяет создавать адреса с произвольными, часто многоуровневыми условиями – например, требование мультиподписи (2 из 3, 3 из 5 и т.д.), временные ограничения, логику распределения и многое другое. При этом отправитель просто отправляет средства на компактный хеш-адрес, не вдаваясь в технические детали.


2. Экономия места

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


3. Повышенная безопасность

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


4. Удобство для пользователей и программистов

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


Пример использования: мультиподписные кошельки

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

  • Выход содержит хеш соответствующего скрипта.
  • Для траты средств необходимо передать полный скрипт активации мультиподписи в scriptSig вместе с подписями.
  • Сеть проверяет согласованность хешей и действительность подписей.

Это делает P2SH идеальным для корпоративных счетов, совместных предприятий и других ситуаций, где требуется контроль доступа. Механизм Pay-to-Script-Hash (P2SH) является фундаментальной частью архитектуры Bitcoin, обеспечивая баланс между:

  • Безопасностью (защита средств с помощью строгих условий и криптографии),
  • Эффективностью (хранение только хеша, а не всех деталей),
  • Гибкостью (поддержка любых, даже сложных условий траты),
  • Удобством (простой формат адреса и стандарт доступа).

Атака подделки цифровой подписи: как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с поддельными RawTX


Криптоанализ извлечения первого входа транзакции ( ins)

Выполним команду для получения информации об одном из входов транзакции с хешем 6102bfd4bad33443bcb99765c0751b6b8e4e65f4db4e3b65324c5e9e3dac8132. Анализ такого входа важен для понимания механизма авторизации траты средств на уровне скрипта.

root@kitploit:~
!./darkai -scriptsig 6102bfd4bad33443bcb99765c0751b6b8e4e65f4db4e3b65324c5e9e3dac8132

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

root@kitploit:~
{
'script': '00483045022100e5d7c59ea1fb5d0285e755dfc09634e1e3af36d12950b9b5d5f92b136021b3d202202c181129443b08dcfb8d9ced30187186c57c96f9cdb3f3914e0798682ea35d2b03493046022100e1f8dbad16926cfa3bf61b66e23b3846323dcabf6c75748bcfad762fc50bfaf402210081d955160b5f8d2b9d09d8838a2cf61f5055009d9031e0e106e19ebab234d949034c695221023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f05611962103d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b802103ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df53ae',
'outpoint': {
'index': 1,
'hash': 'ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577'
},
'sequence': 4294967295
}

1. Детальный анализ компонентов ScriptSig ( script)

  • Значение поля script – это scriptSig , который используется для разблокировки соответствующего выхода предыдущей транзакции.
  • Содержимое представляет собой длинную последовательность байтов в шестнадцатеричном формате.
  • В данном случае это пятикомпонентный скрипт, который включает:
    • Стандартные цифровые подписи по протоколу ECDSA, обычно для подтверждения владения закрытым ключом.
    • Открытые ключи, необходимые для проверки подписи.
    • Возможно, структура, указывающая на операции мультиподписи (несколько открытых ключей и подписей).

Анализ структуры скрипта:

  • Начинается с 00, что в контексте scriptSig может означать OP_0 , традиционно используемый в сценариях мультиподписи (например, в случае стандарта мультиподписи Pay-to-Script-Hash, где требуется заглушка).
  • Далее идут подписи в формате DER (например, 3045...), которые обычно состоят из серии байтов, содержащих детали подписи.
  • За подписями следуют открытые ключи (по длине и структуре, скорее всего, в сжатом формате, так как около 33 байт), которые подтверждают, что подписи принадлежат правильным владельцам.
  • В целом формат скрипта соответствует redeemScript или конструкции, типичной для мультиподписных транзакций P2SH.

2. Аутпоинт (outpoint)

  • Содержит данные о предыдущем выходе, который используется в этом входе:
    • 'hash': 'ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577'— это хеш предыдущей транзакции.
    • 'index': 1– указывает на второй выход (нумерация с нуля), который используется для разблокировки.
  • Таким образом, вход ссылается на конкретный выход предыдущей транзакции, доказывая, что автор транзакции имеет право его потратить.

3. Последовательность (sequence)

  • Значение 4294967295 (0xFFFFFFFF)– это максимальное 32-битное число.
  • В Bitcoin это поле служит для указания того, что вход не участвует в механизме Replace-By-Fee (RBF) или не имеет временной блокировки/относительной временной блокировки.
  • Часто используется по умолчанию для фиксированных входов.

Важность scriptSig в контексте безопасности

  • ScriptSig – это данные для разблокировки средств , которые защищены блокирующим скриптом предыдущего выхода.
  • В случае транзакций P2SH (часто для мультиподписи) scriptSig содержит:
    • Подписи участников, подтверждающие право на трату средств.
    • Оригинальный redeemScript, хеш которого указан в блокирующем скрипте предыдущего выхода.
  • Успешная проверка scriptSig гарантирует, что автор транзакции действительно имеет необходимые полномочия для распоряжения средствами.

Криптоанализ извлечения первого входа транзакции ( ins) с заданным хешем транзакции показал, что:


  • Вход первой транзакции содержит сложный скрипт разблокировки, включающий цифровые подписи и открытые ключи.
  • Используется ссылка на конкретный выход другой транзакции ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577:1.
  • Максимальное значение последовательности указывает на отсутствие специальных блокировок или RBF.
  • Предположительно, речь идет о мультиподписной транзакции P2SH, где для подтверждения траты средств требуется несколько подписей.

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


Атака подделки цифровой подписи: как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с поддельными RawTX

Детальный анализ результата извлечения второго выхода ( outs)

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

root@kitploit:~
!./darkai -redeemscript ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577

В частности, был извлечен второй выход ( outs ) этой транзакции, элемент с индексом 1.


Полученный результат:

root@kitploit:~
{
'value': 350000,
'script': 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'
}

1. Детальный анализ полученного поля данных value

  • Размер: 350 000 сатоши.
  • Эта сумма средств находится во втором выходе указанной транзакции и может быть потрачена при соблюдении условий, указанных в соответствующем скрипте.
  • Перевод в BTC: 350 000 сатоши = 0,0035 BTC
Атака подделки цифровой подписи: как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с поддельными RawTX

2. Значение поля script

  • Характеристика:
    Скрипт a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287– это классический блокирующий скрипт (scriptPubKey) формата P2SH (Pay-to-Script-Hash) .
  • Расшифровка скрипта:
    • a9— OP_HASH160 — оператор, который сначала применяет SHA-256, а затем RIPEMD-160 к входным данным.
    • 14— длина (20 байт) следующего значения — размер хеша.
    • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— 20-байтовый хеш, также известный как хеш скрипта , уникальное представление скрипта выкупа, управляющего тратой этих средств.
    • 87— OP_EQUAL — оператор, сравнивающий два значения и возвращающий true, если они равны.

Таким образом, скрипт требует, чтобы для разблокировки (траты средств) пользователь представил скрипт выкупа, хеш которого совпадает с этим значением.


Значение и роль redeem script в контексте P2SH

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

Общий смысл результата

  • Идентификатор транзакции ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577 связан с выходом, содержащим 0.0035 BTC.
  • Эти средства привязаны к P2SH-адресу, управляемому скриптом с хешем 06612b7cb2027e80ec340f9e02ffe4a9a59ba762.
  • Чтобы потратить эти средства, необходимо предоставить redeem script, соответствующий этому хешу, и выполнить условия, изложенные в нем.

Атака подделки цифровой подписи: как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают мультиподписным кошелькам. Методы операций с поддельными RawTX

Значение полученной информации в более широком контексте

  • Этот результат позволяет подтвердить, что средства действительно находятся на выходе с условиями Pay-to-Script-Hash.
  • Понимание структуры таких выходов важно для анализа безопасности, разработки сложных сценариев распределения и проверки условий траты.
  • Использование P2SH обеспечивает безопасный и эффективный механизм управления средствами в сети Bitcoin, позволяя создавать смарт-контракты и безопасные кошельки.

Полученная информация подтверждает, что вторая запись выхода транзакции ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577 хранит сумму 0.0035 BTC, управляемую стандартным P2SH-скриптом со значением hash160 06612b7cb2027e80ec340f9e02ffe4a9a59ba762. Для управления этими средствами необходимо предоставить соответствующий redeem script, что обеспечивает высокий уровень безопасности и гибкости в управлении биткоинами.


Давайте подтвердим расшифровку scriptSig:

root@kitploit:~
OP_FALSE 304502... 304602... 5221023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f05611962103d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b802103ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df53ae

Давайте запустим команду для получения HASH160. Разработчики Bitcoin установили стандарт для 20-байтового хеша (hex), который широко используется без изменений в других популярных криптовалютах, таких как Bitcoin (BTC), Ethereum (ETH), Tether (USDT), BNB (BNB), Solana (SOL), XRP (XRP), Cardano (ADA), Dogecoin (DOGE), USDC (USDC), Polkadot (DOT), Avalanche (AVAX), Shiba Inu (SHIB), Stellar (XLM), TRON (TRX), Chainlink (LINK), Litecoin (LTC), Bitcoin Cash (BCH), Monero (XMR) для обозначения сокращенного идентификатора скриптов и открытых ключей.


Давайте запустим команду:

root@kitploit:~
!./darkai -hexdata 5221023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f05611962103d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b802103ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df53ae

Процесс обработки:

  1. Исходная строка, представленная в шестнадцатеричном формате, преобразуется в последовательность байтов (декодируется из hex в двоичный формат). Эта последовательность представляет собой сериализованный скрипт (redeem script) или аналогичную структуру биткоин-скрипта.
  2. Полученные байты хешируются с помощью алгоритма SHA-256 (одноразовый хеш), результат которого затем обрабатывается криптографической функцией RIPEMD-160.
  3. Полученный RIPEMD-160 хеш двоичных данных SHA-256 представляется в виде строки:
root@kitploit:~
06612b7cb2027e80ec340f9e02ffe4a9a59ba762

Этот 20-байтовый хеш (hex) называется HASH160 и широко используется в Bitcoin для обозначения сокращенного идентификатора скриптов и открытых ключей.


Значение и контекст результата

  • Процесс хеширования RIPEMD-160(SHA-256(data)), известный как HASH160, является стандартом для создания адресов и скриптов в Bitcoin, включая P2SH (Pay-to-Script-Hash). HASH160 предоставляет уникальный и компактный идентификатор, экономящий место в блокчейне.
  • Использование двойного хеширования (SHA-256, затем RIPEMD-160) объединяет сильные криптографические свойства обеих функций: устойчивость к коллизиям, однонаправленность и устойчивость к атакам.
  • Полученный хеш соответствует хешу скрипта redeem script – то есть скрипта, который управляет доступом к средствам, заблокированным на P2SH-адресе.
  • В частности, этот HASH160 появляется в запирающем скрипте (scriptPubKey) выходов определенных транзакций, что требует предоставления при трате самого оригинального redeem script с тем же хешем и правильными подписями.

Технические детали и пояснения

  • В Bitcoin существует концепция двойного хеширования SHA-256 и RIPEMD-160 для защиты адресов и скриптов.
  • Использование HASH160 вместо простого 256-битного вывода SHA-256 уменьшает длину хеша с 32 байтов до 20 байтов, что сокращает объем хранимых данных и размер данных в сети.
  • HASH160 используется для генерации в основном P2SH-адресов и устаревших P2PKH-адресов.

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

Полученный хеш:

root@kitploit:~
{'06612b7cb2027e80ec340f9e02ffe4a9a59ba762'}

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


Атака подделки цифровой подписи: как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают мультиподписным кошелькам. Методы операций с поддельными RawTX

Почему Сатоши выбрал двойной SHA-256 и как это влияет на криптографическую стойкость

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

Причины выбора двойного SHA-256

  1. Повышение устойчивости к различным атакам
    Однократное применение SHA-256 уже обладает высокой криптографической стойкостью, устойчиво к коллизиям и прообразам. Однако двойное применение хеш-функции – сначала SHA-256 к исходным данным, затем SHA-256 к результату – еще больше усложняет анализ и атаки на хеш.
    Это снижает вероятность успешного подбора коллизии или обратного восстановления исходных данных, делает более трудоемким подбор различных вариантов и защищает от слабостей, возможных в конкретных реализациях алгоритма.
  2. Защита от проблем с длиной входных данных
    Двойной SHA-256 обеспечивает дополнительный уровень превентивной безопасности, учитывая поведение внутренней конструкции хеша и обработку битов заполнения в разметке данных. Это минимизирует потенциальные атаки, связанные с форматированием данных.
  3. Следование хорошим криптографическим практикам
    Двойное хеширование является хорошо зарекомендовавшей себя техникой безопасности в ряде криптографических протоколов. Например, контрольные суммы и цифровые подписи используют двойное шифрование или двойное хеширование. Это повышает прочность цепочки безопасности.
  4. Проверенная безопасность и широкая поддержка
    SHA-256 является членом семейства SHA-2, разработанного Агентством национальной безопасности США (NSA) и опубликованного Национальным институтом стандартов и технологий (NIST). Этот алгоритм считается одним из самых безопасных на сегодняшний день, а его двойное использование обеспечивает максимальную безопасность.

Как это влияет на криптографическую стойкость?

  • Устойчивость к коллизиям и прообразам
    Каждый раунд SHA-256 обладает высокой устойчивостью к коллизиям — чрезвычайно трудно найти два входа с одинаковым хешем. Двойное хеширование усиливает эту гарантию, потому что атакующему необходимо найти коллизию для двух последовательных SHA-256, что значительно увеличивает вычислительную сложность.
  • Однонаправленная функция с лавинным эффектом
    Двойное применение усиливает «лавинный эффект», где малейшее изменение входных данных вызывает радикальное изменение выходного хеша, что затрудняет обнаружение закономерностей и обратную разработку.
  • Повышенная устойчивость к криптоанализу
    Двойной SHA-256 защищает от потенциальных слабостей реализации или неожиданных уязвимостей, которые могут быть обнаружены в одной итерации, минимизируя риск атак с использованием квантовых или классических вычислительных средств.
  • Применимость к Proof-of-Work и безопасности блокчейна
    Механизм PoW в Bitcoin полагается на вычисление хешей блоков, которые должны удовлетворять определенной сложности. Двойное хеширование создает дополнительный барьер для подделки блоков, повышая надежность и доверие к блокчейну 5 .

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


Атака подделки цифровой подписи: как уязвимости CVE-2025-29774 и ошибка SIGHASH_SINGLE угрожают методам работы мультиподписных кошельков с поддельными RawTX


Мультиподпись в Bitcoin: роль redeemScript и инструкции OP_CHECKMULTISIG

Безопасность и гибкость современных транзакций Bitcoin основаны на системе скриптов, которая позволяет задавать сложные условия траты средств. Одним из ключевых механизмов является мультиподпись (multisig) , когда средства могут быть потрачены только при наличии нескольких действительных цифровых подписей из набора возможных. В этой статье мы подробно рассмотрим, как именно это реализовано в Bitcoin, что такое redeemScript, как работает инструкция OP_CHECKMULTISIG , и почему такой подход востребован.

Что такое redeemScript?

В контексте Bitcoin, redeemScript — это скрипт, содержащий условия траты средств, которые хранятся в выходе транзакции в формате Pay-to-Script-Hash (P2SH). Вместо хранения полного скрипта в блокчейне, в выходе хранится хеш redeemScript, экономя место и скрывая детали условий до момента траты.


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


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

Рассмотрим инструкцию OP_CHECKMULTISIG: назначение и работа, где основным элементом в redeemScript, реализующим проверку мультиподписи, является OP_CHECKMULTISIG .

  • Инструкция получает на вход две группы данных из стека:
    • N открытых ключей (например, три открытых ключа)
    • M подписей (например, две подписи), где M ≤ N — необходимый порог подписей для подтверждения транзакции.
  • Для проверки транзакции, OP_CHECKMULTISIG проверяет, что каждая из M подписей правильно подписана любым из N открытых ключей.
  • Если все подписи действительны и соответствуют ключам в redeemScript, инструкция возвращает true , разрешая трату средств.

Особенности и ошибка с удалением элемента из стека

Из-за исторической ошибки в реализации OP_CHECKMULTISIG , во время выполнения из стека удаляется один лишний элемент, неиспользуемое значение. Чтобы избежать этой проблемы, scriptSig использует в начале специальный элемент OP_FALSE(значение 0), который компенсирует эту ошибку и предотвращает потенциальные уязвимости.


  • Далее мы рассмотрим реализацию OP_CHECKMULTISIG , которая удаляет один дополнительный элемент из стека. Используя эту ошибку, атакующий компенсирует OP_CHECKMULTISIG как потенциальную уязвимость.
  • Таким образом, структура scriptSig для мультиподписи выглядит примерно так: OP_FALSE <signature1> <signature2> ... <redeemScript> где первым элементом скрипта является фиктивный OP_FALSE.

  • Read more

Скачать инструмент