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)は、Node.jsプラットフォーム上でXML文書の署名を検証するためにxml-cryptoライブラリを使用するソフトウェアコンポーネントに実装されています。


デジタル署名偽造攻撃:CVE-2025-29774の脆弱性とSIGHASH_SINGLEバグが、偽のRawTXによってマルチシグネチャウォレットの運用方法を脅かす仕組み

https://youtu.be/qbu1m_C1wyA


まず第一に、これはエンタープライズ統合ソリューション、クラウドサービス、シングルサインオンシステムに関係します。例えば、IBM App Connect Enterprise Certified Containerや、SAML認証および承認のためにxml-cryptoに依存するその他のアプリケーションなどです。ハードウェアの脆弱性は特定の物理デバイスに関連するものではなく、脆弱なライブラリを使用するソフトウェア製品に実装されます。

デジタル署名偽造攻撃(Digital Signature Forgery Attack)として知られる脆弱性CVE-2025-29774およびCVE-2025-29775は、Node.jsプラットフォーム上でXML文書にデジタル署名し暗号化するためのライブラリである  xml-crypto ソフトウェアライブラリ に実装されています。


デジタル署名偽造攻撃: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文書内の重要な識別およびアクセス制御属性を改変でき、資格情報やアクセス権を必要とせずにセキュリティをバイパスできるようになります。

したがって、このコードはさまざまなスキーム(異なるSHAハッシュを使用したRSAおよびHMAC-SHA1)の暗号署名および署名検証アルゴリズムを実装しており、データのデジタル署名を必要とするシステムに統合できます。


signature-algorithms.tsコードの重大な脆弱性

デジタル署名偽造攻撃:CVE-2025-29774の脆弱性とSIGHASH_SINGLEバグが、偽のRawTXによってマルチシグネチャウォレットの運用方法を脅かす仕組み

signature-algorithms.ts コード は、デジタル署名を安全に作成および検証し、データの真正性と完全性を保証するために使用されます。ECDSA署名は秘密鍵を使用して作成者を検証し、HMACは秘密鍵を使用して完全性と真正性を検証します。使用されるアルゴリズムはXMLデジタル署名標準に準拠しています(アルゴリズムのURIはW3C仕様を指しています)。


したがって、signature-algorithms.ts コードは、さまざまなスキーム(ECDSA、異なるSHAハッシュを使用したRSA、HMAC-SHA1)の暗号署名および署名検証アルゴリズムを実装しており、デジタルデータ署名を必要とするシステムに統合できます。


基本機能

  • 各クラスはインターフェース  SignatureAlgorithm を実装し、以下のメソッドを提供します:
    • 署名の作成  ( getSignature):署名データと秘密鍵を受け取り、base64形式のデジタル署名を返します。
    • 署名の検証  ( verifySignature):入力、公開鍵、署名を受け取り、署名が正しいかどうかを示すブール値を返します。
    • GetAlgorithmName  ( getAlgorithmName):使用される署名アルゴリズムを識別するURIを返します。

サポートされているアルゴリズム

  • RsaSha1  – RSAとSHA-1ハッシュ関数を使用した署名。
  • RsaSha256  – RSAとSHA-256を使用した署名。
  • RsaSha512  – RSAとSHA-512を使用した署名。
  • HmacSha1  – SHA-1ベースのHMACを使用した署名。

技術的詳細

  • RSA署名の場合、対応するアルゴリズム(“RSA-SHA1”、“RSA-SHA256”、“RSA-SHA512”)を持つ  crypto.createSign および  crypto.createVerify クラスが使用されます。
  • HMAC署名の場合、“SHA1”アルゴリズムを持つ  crypto.createHmac が使用されます。
  • 署名は、送信と保存を容易にするためにbase64でエンコードされます。
  • メソッドは関数  createOptionalCallbackFunction でラップされており、おそらくコールバックとプロミスの両方で使用できるようになっています(詳細はコードに記載されていません)。

RSA-SHA1 アルゴリズム の暗号署名での使用には、SHA-1ハッシュ衝突に関連する脆弱性が含まれています。これにより、攻撃者が署名されるデータの一部を制御できる場合、同じ署名を持つ2つの異なるメッセージを作成できます。


具体的には、問題は RsaSha1 クラスにあります:

root@kitploit:~
const signer = crypto.createSign("RSA-SHA1");  // Vulnerable line

デジタル署名偽造攻撃:CVE-2025-29774の脆弱性とSIGHASH_SINGLEバグが、偽のRawTXによってマルチシグネチャウォレットの運用方法を脅かす仕組み
signature-algorithms.ts#L7

また、2番目の脆弱性も RsaSha1 クラスにあります:

root@kitploit:~
const verifier = crypto.createVerify("RSA-SHA1");  // Vulnerable line

デジタル署名偽造攻撃:CVE-2025-29774の脆弱性とSIGHASH_SINGLEバグが、偽のRawTXによってマルチシグネチャウォレットの運用方法を脅かす仕組み
signature-algorithms.ts#L17

この重大な衝突攻撃により、同じハッシュを持つ異なるデータを作成できるのはなぜですか?

  1. SHA-1衝突 :SHA-1アルゴリズムはもはや安全とは見なされていません。
  2. RSAコンテキスト :RSAと組み合わせると、信頼できないデータ(例:証明書や文書)に対する偽造署名につながる可能性があります。
  3. 推奨事項 :NISTおよびセキュリティコミュニティは、SHA-1よりもSHA-256/SHA-512の使用を推奨しています。

追加メモ:

  • (HMAC-SHA1)クラス HmacSha1は脆弱性は低いですが、時代遅れでもあります。HMACは「素の」SHA-1よりも衝突耐性がありますが、SHA-256への切り替えが望ましいです。
  • コードには、RsaSha1の代わりに使用すべき最新の実装(RsaSha256/RsaSha512)が含まれています。

デジタル署名偽造攻撃:CVE-2025-29774の脆弱性とSIGHASH_SINGLEバグが、偽のRawTXによってマルチシグネチャウォレットの運用方法を脅かす仕組み

CVE-2025-29774およびCVE-2025-29775は、XML文書内のデジタル署名の不適切な検証に関連する、Node.js用xml-crypto ライブラリの重大な脆弱性です。両方の脆弱性により、攻撃者は署名検証で気付かれない方法で署名付きXMLメッセージを改変できます。


デジタル署名偽造攻撃のメカニズム

1. RSA-SHA1アルゴリズムの脆弱性

提供された コード では、RsaSha1クラスが署名と検証にレガシーな RSA-SHA1 アルゴリズムを使用しています:

root@kitploit:~
const signer = crypto.createSign("RSA-SHA1");  // Vulnerable line №7
const verifier = crypto.createVerify("RSA-SHA1");  // Vulnerable line №17

SHA1は暗号学的に安全ではないと見なされており、主な問題は XML構造に対するライブラリの処理ロジック にあります:

  • 署名を作成するとき、XML文書は 正規化 のステップ(標準形式への変換、例えばスペースやコメントの削除)を経ます。
  • 署名を検証するとき、ライブラリは 文書の正規化バージョンと非正規化バージョンの違いを考慮しません 。これにより、攻撃者は署名を破壊することなく文書を改変(例:コメントの追加や構造の変更)できます。

2. 動作の例

  1. SignedInfoの改変 :
    • 攻撃者は追加の <SignedInfo> ノード をXML文書に追加し 、その結果、検証中に誤ったハッシュ計算が行われます。
    xml<Signature> <SignedInfo>...</SignedInfo> <!-- Original knot --> <SignedInfo>...</SignedInfo> <!-- Added by an attacker --> </Signature>
  2. 弱いアルゴリズムの使用 :
    • SHA1アルゴリズムは衝突に対して脆弱であり、改変された文書用の偽の署名を簡単に作成できます。

3. 影響

  • 認証のバイパス :SAMLトークンまたはその他のアクセス関連XML文書内の属性を改変します。
  • 権限昇格 :承認システム内のユーザーIDを管理者に置き換えます。
  • 大規模攻撃 :この脆弱性はユーザーの操作なしでリモートから悪用される可能性があります(CVSS 9.3)。

Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake 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 // Usage SHA-256 / SHA-1 const signer = crypto.createSign("RSA-SHA256");
  3. XML構造の検証 :
    • 署名内に <SignedInfo> ノードが正確に1つあるか確認する。

これらの脆弱性への対応は、認証にXML署名を使用するシステム(例: SAML、SOAP)にとって重要です。


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

xml-crypto ライブラリは、SAML、SOAPなどのプロトコルを含むXMLメッセージのデジタル署名の検証に広く使用されています。したがって、この脆弱性は以下のものに影響を与える可能性があります:

  • XML署名にxml-cryptoを使用するソフトウェアおよびサービス 。エンタープライズ統合プラットフォームやミドルウェア(これらの脆弱性が報告されたIBM App Connect Enterpriseなど)を含みます。
  • 認証と認可にXML署名を使用するデバイスおよびシステム。SAMLをサポートするサーバーやゲートウェイを含みます。

  • 脆弱性 CVE-2025-29774 および CVE-2025-29775 は、主にXML署名の処理に xml-crypto ライブラリを使用する ソフトウェアコンポーネントおよびプラットフォーム に影響を与えます。
  • 既知の被害者には IBM App Connect Enterprise が含まれ、 xml-crypto を使用する他のNode.jsベースのエンタープライズソリューションも影響を受ける可能性があります。
  • 現在のところ、これらの攻撃の影響を受ける 特定ブランドのハードウェアデバイス に関する公開データはありません。

特定のデバイスのリスクを評価するには、脆弱なバージョンの xml-crypto を使用しているか、類似のXML署名メカニズムに依存しているかを確認することをお勧めします。Node.jsベースの暗号通貨ウォレットの操作には、IBMは別のソリューションを提供しています。例えば  IBM Secure Bitcoin Wallet  は、Electrum Bitcoin Clientをベースにしたアプリケーションで、Node.jsを使用してビットコインネットワークと対話し、ウォレットを管理します。

このソリューションでは、秘密鍵とウォレットを IBM Cloud Hyper Protect Crypto Services (zHSM) を使用して保存および暗号化できます。zHSMはハードウェアベースの安全な鍵保管を提供します。ビットコインウォレットの秘密鍵の生成は通常、Electrum、bitcoinjs-libなどの専門的な暗号化ライブラリで実装され、Node.jsアプリケーションに統合できます。IBM Secure Bitcoin Walletは、Node.js上で修正されたElectrumバックエンドを使用して鍵とトランザクションを管理し、IBM Cloud Hyper Protect Crypto Servicesと統合することで、ハードウェア暗号化と秘密鍵の安全な保管を提供します。


実践編

脆弱性  CVE-2025-29775  の理論から、攻撃者が未更新の xml-crypto ライブラリを処理して不正なトランザクション値を作成できることが知られています。記事の実践編に移り、ビットコインウォレットの例を考えてみましょう:  32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe 。このウォレットでは  0.059672 BTC  のコインが失われており、2025年7月現在、この金額は  7, 052 USD です。


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

形式を考えてみましょう: Raw transaction のバイナリおよび16進データには、トランザクション に関するすべての情報が含まれています。これは、低レベルでトランザクションを送信、検証、作成するために必要であり、ビットコインネットワーク全体の動作の基盤です。通常のユーザーが Raw transactions に直接触れることはほとんどありませんが、開発者や暗号通貨愛好家にとっては、ビットコインネットワークのすべてのトランザクションを完全に制御するための主要なツールです。


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

ビットコインネットワークでUTXOオブジェクトを完全に取得するために、 Dark AI ツールを使用します。UTXOはブロックチェーンのデータ構造の主要部分であり、秘密鍵の保有者(このビットコインアドレスを管理する)が使用できる暗号通貨のBTCコインの量を表します。各UTXOは、後続のトランザクションで入力として使用されたことのない、特定の過去のトランザクションの出力です。

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

Google Colab

Private key Debug: Incorrect generation of private keys, system vulnerabilities and errors in calculating the order of the elliptic curve secp256k1 threats to the Bitcoin ecosystem

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

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

素早く簡単に表示するために ls コマンドを実行しましょう

ls


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. Dark AIツールの起動

root@kitploit:~
!./darkai
Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

指定されたビットコインアドレスの、いわゆる 未使用トランザクション出力 ( UTXO 、解読: Unspent Transaction Output )に関する情報を取得するコマンドを実行しましょう。この情報は、アドレスの残高と新しいトランザクションを実行する可能性を評価するために重要です。

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

その結果、2つの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. 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
Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

Dark AIによる技術的解釈

解釈プロセスを使用して、未更新の xml-crypto ライブラリを処理し、無効なトランザクション値を作成して多額の金額を送信します。Dark AIアルゴリズムが、使用するUTXO(または両方の組み合わせ)を選択します。

  • 資金の送金: 新しいトランザクションを形成する際に、指定されたすべてのUTXOを入力として使用でき、残高の全部または一部を使用できます。
  • 透明性: このレポートは、アドレスに実際のビットコイン資金が含まれていることを確認し、信頼性と支払能力を検証するために使用できます。

ビットコインアドレス 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe には、合計 0.05677200 BTC の2つのアクティブなUTXOがあります。これらの資金は新しいトランザクションの作成に使用できます。両方の出力は確認済みかつ未使用とみなされます。


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

ビットコイントランザクションのデシリアライゼーション

ビットコイントランザクションの出力に関する情報の断片を取得するには、次のコマンドを使用します。ここで、トランザクションの最初の出力( 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。
デジタル署名偽造攻撃:CVE-2025-29774の脆弱性とSIGHASH_SINGLEバグがマルチシグネチャウォレットを脅かす仕組み:偽のRawTXを用いた操作方法

要素の詳細説明: Script フィールド

  • スクリプトの意味: a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287
  • これは「scriptPubKey」タイプのスクリプトです。トランザクション出力構造の一部で、これらの資金を使用できる人を指定します。最も重要な目的は、資金の処分に対するセキュリティと管理を確保することです。

スクリプトのデコード

  • スクリプトは接頭辞 a914...87 で始まり、これは P2SH(Pay to Script Hash)形式に対応します:
    • a9— OP_HASH160 (ハッシュ演算子)
    • 14— 次の値の長さ (20バイト = 40文字の16進数)
    • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— BTCコインが保管されているBitcoinウォレットアドレス自体のhash160。
    • 87— OP_EQUAL (2つのデータを比較して同一性を検証する、Bitcoin Scriptの基本コマンド演算子)
  • これは、受信者が、提供された値とハッシュが一致するスクリプトを提示し、そのスクリプトに対する有効な署名を提供した場合に、資金を使用できることを意味します。

結果の実用的な意味

  • 指定されたトランザクションのこの出力には、P2SHタイプのスクリプトで保護された677,200サトシ(0.00677200 BTC)が含まれています。
  • このような出力から資金を使用するには、元のスクリプトを知り、正しい署名を提示する必要があります。これは、マルチシグネチャウォレット、スマートコントラクト、その他の高度なセキュリティスキームで一般的な状況です。
  • この情報は、トランザクションの構造を分析し、資金の目的を検証し、その後の使用に関する要件を理解するために重要です。

識別子によるトランザクションのデシリアライズ

識別子 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd によるトランザクションのデシリアライズの結果、最初の出力が取得されました。この出力には677,200サトシ(0.00677200 BTC)が含まれており、P2SHスクリプトによって保護されています。これらの資金を管理するには、宛先スクリプトを提示し、指定されたハッシュの条件を満たすロック解除トランザクションに正しく署名する必要があります。


デジタル署名偽造攻撃:CVE-2025-29774の脆弱性とSIGHASH_SINGLEバグがマルチシグネチャウォレットを脅かす仕組み:偽のRawTXを用いた操作方法

2番目のビットコイントランザクションのデシリアライズ

ビットコイントランザクションの元のデータ( output)の出力に関する情報の断片を取得するには、次のコマンドを適用します。ここで、一意の識別子 bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786 を持つトランザクションの最初の出力( outs)は

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

解釈プロセスを使用して、Dark AI のデシリアライズ関数を用いることで、識別子
bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786 を持つ2番目のトランザクションの最初の出力要素( output)の構造に関する情報を取得します。



結果:

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

1. 要素の詳細説明:  Value フィールド

  • 内容: 5000000
  • この値はサトシで表されます 。サトシはビットコインの最小の分割不可能な単位です。1 BTC = 100,000,000 サトシ。
  • 目的:
    この金額は、配列要素 'outs' で指定された特定のトランザクション出力に関連付けられています。フィールド 'script' で定義されたスクリプトに記述された条件が満たされた場合にのみ使用できます。
  • ビットコイン換算: 5,000,000 サトシ = 0.05 BTC
デジタル署名偽造攻撃:CVE-2025-29774の脆弱性とSIGHASH_SINGLEバグがマルチシグネチャウォレットを脅かす仕組み:偽のRawTXを用いた操作方法

2. 要素の詳細説明:  Script フィールド

  • 内容: 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'
  • これはいわゆるロッキングスクリプト、別名scriptPubKeyです。この出力が使用できる条件を指定するスクリプトです。

スクリプトのデコード

指定された値は、ビットコインネットワークの標準スクリプトタイプに対応します:

  • a9— オペコード OP_HASH160(次のデータからSHA-256を経てRIPEMD-160を生成します)。
  • 14— 後続フィールドの長さ:20バイト(40文字の16進数)。
  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— ビットコインウォレットアドレスまたはスクリプトを識別する20バイトのハッシュです。
  • 87— オペコード OP_EQUAL。

まとめると、この記述はP2SHアドレス(Pay-to-Script-Hash)を意味します。この場合、資金は特定のスクリプトの組み合わせに割り当てられ、引き出すには、ここに記録されたハッシュを持つスクリプトを明らかにし、このスクリプトの条件を満たす署名(またはその他のデータ)を提示する必要があります。


このスキームの最も一般的な用途は、マルチシグネチャ、単純および複雑なスマートコントラクト、二者間マルチシグネチャ、条件付きセキュリティスキーム、その他の高度なシナリオです。


3. 結果の実用的な意味、資金の規模と目的。

  1. 問題のトランザクション(ハッシュ bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786 を持つ)には、ハッシュ06612b7cb2027e80ec340f9e02ffe4a9a59ba762に対応するP2SHアドレスに0.05 BTC(5,000,000サトシ)が「ロック」されている出力があります。
  2. 使用条件:
    これらの資金を使用するには、使用トランザクションを作成する際、直接送金の場合のような標準的な署名だけでなく、この出力に組み込まれているハッシュを持つスクリプト自体に加えて、スクリプトの条件に対応するデータ(例えば、一連のデジタル署名)を提示する必要があります。
  3. セキュリティと柔軟性:
    この方法により、通常のビットコインアドレスへの直接送金よりも複雑なロジックを実装できます。

4. P2SHをサポートするさまざまなサービスやウォレットとの互換性レベルへの出力の登録。

  • トランザクションID
    bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786
    には、
    0.05 BTC (5,000,000サトシ)
    がハッシュ
    06612b7cb2027e80ec340f9e02ffe4a9a59ba762 のP2SHスクリプト(Pay-to-Script-Hash)に確保されている出力が含まれています。
  • これらの資金を使用するには、元のスクリプトを明らかにし、その条件を満たす必要があります(例えば、マルチシグネチャですべての署名を提示する)。

したがって、デシリアライズ結果は、条件付き(P2SH)アドレスに特定の量のビットコインが存在することを報告し、その使用に関する厳格なルールを定義します。これは、ビットコインネットワークにおける資金の管理と会計において重要な役割を果たします。


デジタル署名偽造攻撃:CVE-2025-29774の脆弱性とSIGHASH_SINGLEバグがマルチシグネチャウォレットを脅かす仕組み:偽のRawTXを用いた操作方法

ビットコインネットワークにおけるP2SH(Pay-to-Script-Hash)ロッキングスクリプト。このスクリプトは何を意味するのか?

スクリプト 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'は、ビットコインネットワークにおける典型的なP2SH(Pay-to-Script-Hash)ロッキングスクリプトを表すため、このトランザクション出力で選択され使用されています。


それを一つずつ見てみましょう:

  • a9— OP_HASH160:後続のデータに最初にSHA-256、次にRIPEMD-160を適用するハッシュ操作です。
  • 14— ハッシュ長は20バイト(16進形式)です。
  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— スクリプトハッシュとして知られるスクリプトの20バイトハッシュです。
  • 87— OP_EQUAL:スタック上の2つの値の等価性をチェックする演算子です。

したがって、このスクリプトは、使用時(資金の使用)にハッシュが 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 と一致するスクリプトが提示され、かつこのスクリプトの条件が満たされることを要求します。


なぜこれが選ばれたのか?

  • 利便性とセキュリティ: P2SHを使用すると、複雑な資金管理ロジック(マルチシグネチャや条件付き支払いなど)をハッシュ内に隠すことができ、送信者と受信者のインターフェースが簡素化されます。
  • 業界標準: P2SHは複雑なセキュリティスキームのセットアップを簡素化し、ほとんどのウォレットやサービスと互換性があるため、広く受け入れられた標準になっています。
  • コンパクトさ: ブロックには複雑なスクリプト全体ではなく、そのハッシュのみが保存されるため、スペースを節約し、効率が向上します。
  • 柔軟性: 資金の所有者は、複数の署名の要求、時間遅延、その他のルールなど、任意の使用条件を作成でき、これらの条件のハッシュがここに保存されます。

スクリプト 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'はP2SHロッキングスクリプトであり、0.05 BTCを使用するには、ハッシュ06612b7cb2027e80ec340f9e02ffe4a9a59ba762 を持つ元のスクリプトを提供し、その中で指定された条件を満たす必要があることを示しています。これにより、利便性、セキュリティ、機能性のバランスが提供されます。これが、このトランザクションでこの特定のスクリプトが選択された主な理由です。P2SHスクリプト内のハッシュ06612b7cb2027e80ec340f9e02ffe4a9a59ba762 は、この出力から資金を使用するための条件を決定する元のスクリプト(Redeem Script)を特定の方法でハッシュ化した結果です。


なぜこのハッシュなのか、他のハッシュではないのか?

  1. ハッシュは、使用ルールを指定するスクリプトのデジタル指紋です。
    P2SHアドレスまたは出力を作成するとき、最初にスクリプト(ビットコインを使用するための条件)が明示的に記述され、次に2つのハッシュアルゴリズムが適用されます:
    • スクリプトからSHA-256、
    • 次に、SHA-256の結果にRIPEMD-160を適用します。
      結果として得られる20バイトのハッシュが06612b7cb2027e80ec340f9e02ffe4a9a59ba762です。このハッシュは、生成された正確なスクリプトを一意に識別します。
  2. 一意性と不変性
    暗号学的ハッシュ関数には「アバランシェ効果」という特性があり、元のスクリプトに最小限の変更を加えるだけで、まったく異なるハッシュが生成されます。したがって、このハッシュは元のスクリプトのコンテキストにおいて一意であり、偽造不可能です。
  3. ハッシュを使用する目的は、コンパクトさとセキュリティを確保することです。
    複雑で多くのスペースを占める可能性のある完全なスクリプトを各出力に保存する代わりに、ブロックにはそのハッシュのみが保存されます。これによりスペースが節約され、プライバシーが向上します。スクリプト自体は、資金が使用されるときに、条件を満たした者にのみ公開されます。
  4. ハッシュの選択は、アドレスまたはウォレットの作成者によって定義された特定のスクリプトの結果です。
    開発者または資金の所有者は、望ましい条件(例:マルチシグネチャ、時間遅延、その他の論理条件)を持つスクリプトを作成します。割り当てられたスクリプトはハッシュ化され、このハッシュはトランザクション出力に関連付けられます。したがって、任意のハッシュ選択は存在せず、元のスクリプトの内容と暗号アルゴリズムによって決定されます。

  • このハッシュは、アドレス所有者が資金を保護するためにインストールした特定のスクリプトに厳密に関連付けられています。
  • これは、元のRedeem Scriptから暗号学的ハッシュ関数( SHA-256 + RIPEMD-160)を使用して生成されたため、ランダムまたは恣意的に異なるハッシュを選択することはできません。
  • このハッシュは、使用条件の一意の組み合わせを反映したものであり、それがこのトランザクション出力スクリプトa91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287に含まれる理由です。

したがって、この特定のハッシュの選択は、ブロックチェーン内の資金へのアクセスを制御する特定の使用条件と出力を正確かつ安全にリンクする必要性によって決まります。これらはすべて、暗号学的ハッシュ関数の特性、その一意性、および元のデータの逆回復の不可能性によって保証されます。


P2SHメカニズム:ビットコインネットワークにおける意味、動作原理、セキュリティ

Bitcoin開発者は、セキュリティを確保しブロックチェーンネットワークの機能を拡張する重要な革新として、P2SH (Pay-to-Script-Hash)メカニズムをコードに組み込みました。このスクリプトの構造と動作原理、従来のトランザクションとの違い、そしてデジタル資産の保存と保護のためにこのアプローチが選ばれた理由を考察してみましょう。

従来、Bitcoinのトランザクションは、Pay-to-Pubkey-Hash (P2PKH)スキームを使用して機能してきました。これは、受信者の公開鍵ハッシュを使用して資金が「ロック」される仕組みです。これらの資金を使用するには、ユーザーは自分のデジタル署名と公開鍵を提供する必要があり、これらはネットワークによって検証されます。

しかし、P2PKH以外のインターフェースは限られていました。Bitcoin Scriptは、マルチシグネチャからタイムロック、その他のスマートコントラクト契約に至るまで、はるかに複雑な支出条件を可能にするからです。問題は、長く複雑なスクリプトが必然的にトランザクションのサイズを増大させ、使いやすさを低下させることでした。


このような複雑なシナリオとのやり取りを簡素化するために、P2SHコンセプトが2012年に導入され、Gavin Andresenによって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-of-3、3-of-5など)、時間制限、配分ロジックなどです。この場合、送信者は技術的な詳細に入り込むことなく、単にコンパクトなハッシュアドレスに資金を送信します。


2. スペースの節約

完全なスクリプトをブロックチェーンに保存する代わりに、トランザクションにはそのハッシュのみが保存されます。これにより、ネットワークへの負荷が軽減され、ブロックのサイズが縮小され、トランザクションの検証が高速化されます。


3. セキュリティの向上

redeemScriptは使用時にのみ公開・検証されるため、条件の機密性が高まり、不正アクセスの試みがより困難になります。暗号学的ハッシュ関数の使用により、偽造や改ざんに対する保護が保証されます。スクリプトにわずかな逸脱があっても、異なるハッシュが生成されるため、ネットワークはトランザクションの受け入れを拒否します。


4. ユーザーとプログラマーにとっての利便性

P2SHはBitcoinにおける複雑なスマートコントラクトの使用を標準化・簡素化し、統合を容易にし、さまざまなウォレットやサービスとの互換性を高めます。


使用例: マルチシグネチャウォレット

典型的な例は、トランザクションを完了するために5人の参加者のうち2人の署名を必要とするウォレットです。P2SHの場合:

  • 出力には対応するスクリプトのハッシュが含まれます。
  • 資金を使用するには、scriptSig内で署名付きの完全なマルチシグネチャ有効化スクリプトを渡す必要があります。
  • ネットワークはハッシュの整合性と署名の有効性をチェックします。

このため、P2SHは企業アカウント、ジョイントベンチャー、その他のアクセス制御が必要な状況に最適です。Pay-to-Script-Hash (P2SH)メカニズムはBitcoinアーキテクチャの基本部分であり、以下のバランスを提供します:

  • セキュリティ (厳格な条件と暗号技術による資金の保護)、
  • 効率性 (すべての詳細ではなくハッシュのみを保存)、
  • 柔軟性 (複雑なものを含むあらゆる支出条件のサポート)、
  • 利便性 (シンプルなアドレス形式とアクセス標準)。

デジタル署名偽造攻撃: CVE-2025-29774の脆弱性とSIGHASH_SINGLEバグが、偽のRawTXを使用してマルチシグネチャウォレットの運用方法をどのように脅かすかP2SHの文脈におけるredeem scriptの意味と役割
  • Redeem script は、資金を使用するための条件を設定する元のスクリプトです。例えば、マルチシグネチャや、時間制限のある複雑なシナリオなどです。
  • トランザクション出力には、redeem scriptからのハッシュのみが保存されるため、スペースを節約し、条件の詳細を保護します。
  • この出力に投資された資金を使用するには、新しいトランザクションを作成する際に、ユーザーはscriptSig内に、ネットワークによって正しくデコードされ検証されるシリアライズされたredeem scriptを提供する必要があります。

結果の全体的な意味

  • トランザクションID ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577は、0.0035 BTCを含む出力に関連付けられています。
  • これらの資金は、ハッシュ 06612b7cb2027e80ec340f9e02ffe4a9a59ba762を持つスクリプトによって制御されるP2SHアドレスに結び付けられています。
  • これらの資金を使用するには、このハッシュに対応するredeem scriptを提示し、そこに定められた条件を満たす必要があります。

デジタル署名偽造攻撃:CVE-2025-29774の脆弱性とSIGHASH_SINGLEバグがマルチシグネチャウォレットの運用方法を脅かす仕組み 偽のRawTXを使用した攻撃手法

得られた情報の広範な文脈における意義

  • この結果により、資金が確かにPay-to-Script-Hash条件を持つ出力にあることを確認できます。
  • このような出力の構造を理解することは、セキュリティ分析、複雑な資金配分シナリオの開発、および使用条件の検証にとって重要です。
  • P2SHを使用すると、Bitcoinネットワークで資金を管理するための安全かつ効率的なメカニズムが提供され、スマートコントラクトや安全なウォレットの作成が可能になります。

受け取った情報は、2番目のトランザクション出力レコード ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577が、hash160値 06612b7cb2027e80ec340f9e02ffe4a9a59ba762を持つ標準的なP2SHスクリプトによって制御される0.0035 BTCの金額を格納していることを確認します。これらの資金を管理するには、対応するredeem scriptを提示する必要があり、これによりビットコインの管理における高いレベルのセキュリティと柔軟性が提供されます。


scriptSigの復号を確認しましょう:

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

コマンドを実行してHASH160を取得しましょう。Bitcoin開発者は、20バイトのハッシュ(16進数)の標準を設定しました。これは、スクリプトと公開鍵の短縮識別子を表すために、他の人気のある暗号通貨(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. 16進数形式で表された元の文字列は、バイトのシーケンスに変換されます(16進数からバイナリ形式にデコードされます)。このシーケンスは、シリアライズされたスクリプト(redeem script)またはビットコインスクリプトの類似構造です。
  2. 受け取ったバイトは、SHA-256(ワンショットハッシュ)アルゴリズムを使用してハッシュ化され、その結果はRIPEMD-160暗号化関数によって処理されます。
  3. SHA-256バイナリデータの結果として得られるRIPEMD-160ハッシュは、次の文字列として取得されます:
root@kitploit:~
06612b7cb2027e80ec340f9e02ffe4a9a59ba762

この20バイトのハッシュ(16進数)はHASH160と呼ばれ、Bitcoinでスクリプトと公開鍵の短縮識別子を表すために広く使用されています。


結果の意味と文脈

  • RIPEMD-160(SHA-256(data))のハッシュ処理は、HASH160として知られ、P2SH(Pay-to-Script-Hash)を含むBitcoinのアドレスとスクリプトを作成するための標準です。HASH160は、ブロックチェーン上のスペースを節約する、一意でコンパクトな識別子を提供します。
  • 二重ハッシュ(SHA-256、次にRIPEMD-160)の使用は、両方の関数の強力な暗号特性(衝突耐性、一方向性、攻撃耐性)を組み合わせます。
  • 結果のハッシュは、redeem scriptのスクリプトハッシュに対応します。つまり、P2SHアドレスにロックされた資金へのアクセスを制御するスクリプトです。
  • 特に、このHASH160は特定のトランザクションの出力のロックスクリプト(scriptPubKey)に現れ、使用時に同じハッシュと正しい署名を持つ元のredeem script自体を提供する必要があります。

技術的な詳細と説明

  • Bitcoinには、アドレスとスクリプトを保護するためのSHA-256とRIPEMD-160の二重ハッシュという概念があります。
  • 単純な256ビットのSHA-256出力の代わりにHASH160を使用すると、ハッシュ長が32バイトから20バイトに短縮され、ネットワーク上のストレージとデータサイズが削減されます。
  • HASH160は、主にP2SHアドレスとレガシーP2PKHアドレスの生成に使用されます。

暗号化ハッシュ関数を使用したBitcoinスクリプトの処理における重要なステップです。
シリアライズされたスクリプトまたは公開鍵をHASH160に変換すると、Bitcoinブロックチェーン上のデータの効率的な識別、インデックス作成、および保護が可能になります。

受信したハッシュ:

root@kitploit:~
{'06612b7cb2027e80ec340f9e02ffe4a9a59ba762'}

チームは、複雑なスクリプトと、Bitcoinネットワーク上でトランザクションを保存および検証するために使用されるコンパクトな形式との間のリンクとして機能する正確なハッシュを生成しました。


デジタル署名偽造攻撃:CVE-2025-29774の脆弱性とSIGHASH_SINGLEバグがマルチシグネチャウォレットの運用方法を脅かす仕組み 偽のRawTXを使用した攻撃手法

サトシが二重SHA-256を選んだ理由と、それが暗号強度に与える影響

サトシ・ナカモトは、ネットワークの暗号強度とセキュリティを強化するいくつかの重要な理由から、BitcoinのハッシュアルゴリズムでSHA-256の二重ハッシュ(つまり、SHA-256を連続して2回適用すること)を選択しました。

二重SHA-256を選択した理由

  1. さまざまな攻撃への耐性の向上
    SHA-256を1回適用するだけでも、すでに高い暗号耐性を持ち、衝突や原像攻撃に耐性があります。しかし、ハッシュ関数を二重に適用する(まず元のデータにSHA-256を適用し、次にその結果にSHA-256を適用する)と、ハッシュの分析と攻撃がさらに複雑になります。
    これにより、衝突の選択や元のデータの逆回復が成功する確率が低下し、さまざまなオプションの選択により多くの労力が必要になり、アルゴリズムの特定の実装で発生し得る弱点から保護されます。
  2. 入力データ長の問題に対する保護
    二重SHA-256は、内部ハッシュ構造の動作とデータマークアップ内のパディングビットの処理を考慮することで、予防的なセキュリティの追加レイヤーを提供します。これにより、データフォーマットに関連する潜在的な攻撃を最小限に抑えます。
  3. 優れた暗号慣行に従うこと
    二重ハッシュは、多くの暗号プロトコルで確立されたセキュリティ技術です。例えば、チェックサムやデジタル署名は二重暗号化または二重ハッシュを使用します。これにより、セキュリティチェーンの強度が向上します。
  4. 実証済みのセキュリティと幅広いサポート
    SHA-256は、米国国家安全保障局(NSA)によって開発され、米国国立標準技術研究所(NIST)によって公開されたSHA-2ファミリーのメンバーです。このアルゴリズムは現在最も安全なものの1つと考えられており、その二重使用は最大限のセキュリティを提供します。

これは暗号強度にどのような影響を与えますか?

  • 衝突耐性と原像耐性
    SHA-256の各ラウンドは高い衝突耐性を持ち、同じハッシュを持つ2つの入力を見つけることは極めて困難です。二重ハッシュはこの保証を強化します。攻撃者は連続する2つのSHA-256に対する衝突を見つける必要があり、計算の複雑さが大幅に増加するためです。
  • アバランシェ効果を備えた一方向性関数
    二重適用は「アバランシェ効果」を強化します。入力データのわずかな変化が出力ハッシュの根本的な変化を引き起こし、パターンの検出やリバースエンジニアリングを困難にします。
  • 強化された暗号解読耐性
    二重SHA-256は、単一の反復で発見される可能性のある潜在的な実装上の弱点や予期しない脆弱性から保護し、量子または古典的なコンピューティングツールを使用した攻撃のリスクを最小限に抑えます。
  • Proof-of-Workとブロックチェーンセキュリティへの適用
    BitcoinのPoWメカニズムは、特定の難易度を満たす必要があるブロックハッシュの計算に依存しています。二重ハッシュはブロック偽造に対する追加の障壁を生み出し、ブロックチェーンへの信頼性と信用を高めます 5 。

二重使用 SHA-256は、Bitcoinシステム全体に追加のセキュリティレイヤーと堅牢な暗号強度を提供するためのサトシ・ナカモトによる意図的な選択です。この設計は衝突リスクを最小限に抑え、一方向性を強化し、ブロックチェーンネットワーク上のデータを安全に保護し、システム内のトランザクションセキュリティとコンセンサスのための強固な基盤を築きます。したがって、二重SHA-256は、高度な暗号技術と分散システムを組み合わせたBitcoinアーキテクチャの重要な要素です。


デジタル署名偽造攻撃:CVE-2025-29774の脆弱性とSIGHASH_SINGLEバグがマルチシグネチャウォレットの運用方法を脅かす仕組み 偽のRawTXを使用した攻撃手法


Bitcoinにおけるマルチシグネチャ:redeemScriptの役割とOP_CHECKMULTISIG命令

現代のBitcoinトランザクションのセキュリティと柔軟性は、資金を使用するための複雑な条件を可能にするスクリプトシステムに基づいています。重要なメカニズムの1つはマルチシグネチャ(multisig)です。これは、可能な署名のセットからの複数の有効なデジタル署名がある場合にのみ資金を使用できるようにするものです。この記事では、これがBitcoinで正確にどのように実装されているか、redeemScriptとは何か、OP_CHECKMULTISIG命令がどのように機能するか、そしてなぜそのようなアプローチが求められているのかを詳しく見ていきます。

redeemScriptとは?

Bitcoinの文脈では、redeemScriptは、資金を使用するための条件を含むスクリプトであり、Pay-to-Script-Hash(P2SH)形式でトランザクション出力に保存されます。完全なスクリプトをブロックチェーンに保存する代わりに、redeemScriptのハッシュが出力に保存され、スペースを節約し、使用時まで条件の詳細を隠します。


RedeemScriptには、例えば複数の公開鍵と、しきい値数の署名を含めることができます。これは、マルチシグネチャウォレットが実装しているものです。


OP_CHECKMULTISIGはどのように機能しますか?

OP_CHECKMULTISIG命令(その目的と動作)を見てみましょう。マルチシグネチャチェックを実装するredeemScriptの主要な要素はOP_CHECKMULTISIGです。

  • この命令は、スタックから2つのデータグループを入力として受け取ります:
    • N個の公開鍵 (例:3つの公開鍵)
    • M個の署名 (例:2つの署名)。ここで、M ≤ Nはトランザクションを確認するために必要な署名のしきい値です。
  • トランザクションを検証するために、OP_CHECKMULTISIGは、M個の署名のそれぞれがN個の公開鍵のいずれかによって正しく署名されているかをチェックします。
  • すべての署名が有効で、redeemScript内の鍵と一致する場合、ステートメントはtrueを返し、資金の使用が可能になります。

スタックから要素を削除する際の特徴とバグ

OP_CHECKMULTISIGの実装における歴史的なバグにより、実行中にスタックから1つの余分な要素(未使用の値)が削除されます。この問題を回避するために、scriptSigは先頭に特別な要素OP_FALSE(値0)を使用します。これにより、このバグが補償され、潜在的な脆弱性が防止されます。


  • 次に、スタックから余分な要素を1つ削除するOP_CHECKMULTISIGの実装を見ていきます。このバグを利用することで、攻撃者はOP_CHECKMULTISIGを潜在的な脆弱性として悪用します。
  • したがって、マルチシグネチャのscriptSig構造は次のようになります: OP_FALSE <signature1> <signature2> ... <redeemScript> ここで、スクリプトの最初の要素はダミーのOP_FALSEです。

実践例:2-of-3マルチシグネチャ

redeemScriptコードに基づく:

root@kitploit:~
023927... 03d2c0... 03ec01... 3 OP_CHECKMULTISIG
  • ここには3つの公開鍵が宣言されています。
  • しきい値は2つの署名で、この3つのうち2つが検証の成功に必要です。
  • OP_CHECKMULTISIG操作は、提供された2つの署名(scriptSig内)が3つの鍵のうちの2つに対応し、有効であることをチェックします。
  • scriptSig内のOP_FALSEは、余分な値を削除するバグを補償します。

マルチシグネチャウォレットの重要性と利点

  • セキュリティの向上。ウォレットの所有者は、資金の管理を複数の人物またはデバイスに分散でき、単一の不正使用の可能性を排除します。
  • 柔軟性。「2-of-3」、「3-of-5」など、さまざまな条件でさまざまなスキームを実装できます。
  • 法的効率性:マルチシグネチャは、共有資産管理を確保するために企業環境でよく使用されます。

技術的および実践的な文脈

  • マルチシグネチャのシナリオは、P2SHおよびSegWitトランザクションで広く使用されています。
  • OP_CHECKMULTISIG命令は、複数の署名のチェックを必要とするため、ブロックチェーン上で最もリソースを消費する操作の1つです。ブロックごとの署名操作(sigops)の数にはプロトコルレベルの制限があります。
  • OP_FALSEの歴史にもかかわらず、このメカニズムはその信頼性を実証し、広く応用されています。

RedeemScript と OP_CHECKMULTISIG 命令を組み合わせた仕組みは、ビットコインのツール群の中でも複雑かつ強力なものです。署名閾値を備えたマルチシグネチャウォレットを作成でき、資金に対する高度なセキュリティと管理を提供します。このメカニズムは、分散型で安全な環境で資産の共同管理を活用したい組織、ユーザー、サービスの基盤となっています。つまり、redeemScript と OP_CHECKMULTISIG によるマルチシグネチャは、単なる技術ではなく、古典的な暗号通貨モデルの可能性を拡張する機能なのです。


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

OP_CHECKMULTISIG と redeemScript を使用したビットコインのマルチシグ検証メカニズムの仕組み

ビットコインのマルチシグネチャ検証メカニズムは、OP_CHECKMULTISIG と redeemScript 命令を使用した特別なスクリプトに基づいています。これにより、閾値署名の照合が可能になり、セキュリティの向上と資金の共同管理が実現します。

マルチシグネチャメカニズムの基本

マルチシグは、トランザクションを完了するために、指定された公開鍵セットからの複数の有効な署名を必要とするシステムです。典型的なスキームは m of n と表記されます。たとえば「2 of 3」は、3つの鍵のうち任意の2つの署名があれば支出を承認できることを意味します。

ビットコインでは、このロジックは次のように実装されます:

  • redeemScript — 資金の支出条件を記述するスクリプト。公開鍵のリストと閾値パラメータ(m)が含まれます。
  • scriptSig – 検証に必要な署名と redeemScript 自体を含むアンロックスクリプト。

redeemScript の仕組み

命令 OP_CHECKMULTISIGは、提供された scriptSigの署名が有効であり、redeemScript に公開されている公開鍵と一致することを検証します。

RedeemScript はおおよそ次のような構造です:

root@kitploit:~
OP_M <pubkey1> <pubkey2> ... <pubkeyN> OP_N OP_CHECKMULTISIG
  • OP_Mと OP_N— それぞれ必要な署名数と公開鍵の総数を指定する命令(例: OP_2 と OP_3)。
  • <pubkeyX>— 参加者の公開鍵。
  • OP_CHECKMULTISIG— マルチシグネチャ検証を実装するオペレータ。

  • 入力として複数の署名と公開鍵のセットを受け取ります。
  • 検証を成功させるには、各署名が指定された公開鍵のいずれかに正しく一致する必要があります。
  • 有効な署名の数が閾値 mに達すると、操作は true を返します。

重要な技術的特徴として、OP_CHECKMULTISIGには歴史的な実装バグがあり、スタックから余分な未使用要素が削除されます。このバグを補正するために、scriptSigの先頭に値 OP_FALSE(コード0)を置いてスタックのずれを「ロック」します。


scriptSig 構造の仕組み

マルチシグネチャ「2 of 3」のウォレットでは、資金を支出する前に scriptSigが次のように形成されます:

root@kitploit:~
OP_FALSE <signature1> <signature2> <redeemScript>
  • OP_FALSE— OP_CHECKMULTISIG のバグを補正するためのダミー値。
  • <signature1>と <signature2>– 対応する秘密鍵の所有者によって承認された2つのデジタル署名。
  • <redeemScript>— 公開鍵と検証パラメータを含むスクリプト自体。

ノードがトランザクションを検証するとき:

  1. scriptSig から redeemScript を抽出します。
  2. それをハッシュ化し、以前の出力のロックスクリプト(scriptPubKey)に保存されているハッシュと比較します(P2SH形式 – OP_HASH160 <redeemScript hash> OP_EQUAL)。
  3. ハッシュが一致した場合、redeemScript を逆シリアル化します。
  4. OP_CHECKMULTISIG ステートメントを実行し、署名と鍵を照合します。
  5. チェックが成功した場合は true を返します。

トランザクションのすべての入力がこのチェックを通過した場合、そのトランザクションは有効とみなされます。この有効性により、攻撃者はこのバグのオペレータを実行することで、  OP_CHECKMULTISIG  を潜在的な脆弱性として補正します。


redeemScript と OP_CHECKMULTISIG によるマルチシグネチャメカニズム

  • セキュリティの向上: トランザクションを実行するには複数の秘密鍵保有者の同意が必要であり、1つの鍵が侵害された場合の盗難リスクを低減します。
  • 柔軟性とスケーラビリティ: 署名の閾値を任意に設定でき(1〜15)、参加者のリストも2〜15の公開鍵から設定できます。
  • 資産の共同管理: 企業アカウント、共同ウォレット、DAO に適しており、堅牢なアクセス制御が可能です。
  • 透明性と検証可能性: 必要なデータと条件はすべてブロックチェーン上にあり、トランザクションの検証は自動的で、分散型かつ透明性があります。

OP_CHECKMULTISIGコマンドと redeemScript を使用したビットコインのマルチシグネチャ検証メカニズムにより、複雑な閾値署名スキームを設定できます。また、このバグのオペレータを実行することで、攻撃者はビットコインの分散ネットワークにおける制御されたトランザクションにおいて、  OP_CHECKMULTISIG  を潜在的な脆弱性として補正します。


OP_CHECKMULTISIGで複数の署名を検証する場合の特徴と制限は何でしょうか? 主要な側面と制限を見てみましょう:

  1. 署名検証の閾値
    OP_CHECKMULTISIG では、公開鍵の総数 N のうち必要な署名数 T を指定できます(「T out of N」スキーム)。たとえば、3つのうち2つなどです。トランザクションを有効にするには、 T個の有効な署名 があれば十分です。
  2. 1回の操作で複数の署名を検証
    単一署名の検証(OP_CHECKSIG)とは異なり、OP_CHECKMULTISIG は複数の署名を一度に検証し、対応する公開鍵と照合します。これにより、マルチシグネチャウォレット実装の効率と利便性が向上します。
  3. 支出条件に redeemScript を使用
    P2SH 形式では、マルチシグネチャスキームは redeemScript ハッシュの下に隠されます。これは公開鍵とパラメータを含む完全なスクリプトです。資金を支出するには、ユーザーは redeemScript と対応する署名を提示する必要があります。
  4. 歴史的なバグ – スタック内の余分な要素
    OP_CHECKMULTISIG には、実行中にスタックから余分な未使用要素を削除するという特徴があります(「オフバイワン」実装バグ)。これを補正するために、scriptSig の先頭にダミー要素 OP_FALSEが追加され、スタックを適切に整列させます。これはコミュニティによって認識され、受け入れられている機能です。

OP_CHECKMULTISIG の制限

  1. 鍵と署名の最大数
    ビットコインには、redeemScript 内の公開鍵は 15個 、署名も同様に15個という制限があります。これは、スクリプトサイズの制限(約520バイト)と、ブロックごとに検証が許可される操作数(sigops 制限)によるものです。
  2. トランザクションサイズと手数料の増加
    マルチシグネチャトランザクションは、公開鍵、署名、追加の redeemScript データが多いため、サイズが大きくなります。これによりトランザクション自体のサイズが増加し、その結果、処理手数料も増加します。
  3. スクリプトサイズの制限
    各スクリプト(入力または出力)の最大サイズは520バイトに制限されています。鍵の数が多いと redeemScript が煩雑になり、マルチシグネチャの利便性と効率に影響します。
  4. P2SH 使用時のみ支出条件が隠される
    P2SH を使用しない場合、公開鍵と OP_CHECKMULTISIG を含むスクリプトがトランザクション出力に公開されたまま保存され、公開鍵が事前に明らかになるため、プライバシーが低下します。
  5. 複雑なロジックのネイティブサポートの欠如
    ビットコインスクリプトは不完全で機能が制限されており、ループや再帰がないため、複雑な政治的・契約的条件を持つマルチシグネチャは限定的にしか実装できません。

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


ビットコインの署名タイプ: SIGHASH フラグの特徴と役割

ビットコインはトランザクションを承認するためにデジタル署名を使用し、資金の所有者がその資金を処分する権利を確認できるようにします。特徴的なのは、署名がその適用範囲をトランザクション全体ではなく、その一部に限定できることです。これは特別なフラグ – SIGHASH を使用して実装され、トランザクションデータのどの部分が署名の対象になるかを決定します。署名ハッシュのタイプ、その目的、使用例、および非標準的な状況で発生する特徴を見てみましょう。

ビットコインのトランザクションに署名する際、トランザクションデータの特定の断片に対して形成されるデジタル署名が作成されます。署名がこのデータのどの部分をカバーするべきかは、SIGHASH フラグによって示されます。署名ハッシュタイプは署名自体の最後のバイトで伝達され、ハッシュに含まれる範囲、つまり署名されるセクションを決定します。これにより、署名者がトランザクション上のどの特定のアクションを承認するかについて、条件を柔軟に形成できます。


SIGHASH の主な3つのタイプ

1. SIGHASH_ALL (0x01)

これは、ほとんどのウォレットとクライアントでデフォルトの署名タイプです。署名はトランザクションの すべての入力とすべての出力 をカバーします。つまり:

  • 署名者は、この特定の資金源と受取人の組み合わせを確認します。
  • 署名後に入力または出力に変更を加えると、署名は無効になります。
  • トランザクションのセキュリティと予測可能性の最高レベルを提供します。

2. SIGHASH_NONE (0x02)

この署名タイプでは、 すべての入力が署名されますが、出力は1つも署名されません :

  • 署名者はリストされた入力を使用することに同意しますが、特定の出力にはコミットしません。
  • これにより、入力を再署名することなくトランザクションの出力を変更できます。
  • このアプローチは単一入力には安全ではなく、複雑なスマートコントラクトや協調トランザクションなどの特定のシナリオでより頻繁に使用されます。

3. SIGHASH_SINGLE (0x03)

この署名タイプはすべての入力を署名しますが、出力は1つだけ – 入力と同じシーケンス番号を持つ出力 のみを署名します:

  • つまり、署名は「入力N – 出力N」のペアに制限されます。
  • 署名者が残りを無視して特定の入出力ペアを制御できるようにします。
  • 資金の部分的な、または条件付きの処分を作成するのに役立ちます。
  • ただし、入力インデックスに対応する出力がない場合は問題が発生する可能性があります – この場合、値が1のハッシュが返されます(これは後述する既知のバグです)。

実際のトランザクションからの例

3つの入力を持つトランザクションを考えてみましょう。そのうち2つの署名スクリプト(scriptSig)から、SIGHASH_SINGLE を示すバイト 0x03で終わる署名が抽出されています。つまり、対応する入力と出力のペアのみに署名する署名です。しかし、ここで次のような状況が観察されます: インデックス2の入力には、同じインデックスを持つ対応する出力がありません。


Digital Signature Forgery Attack Various vulnerability assessment methods are used to prevent crypto incidents and improve the cybersecurity of cryptocurrency platforms

791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf


Digital Signature Forgery Attack Various vulnerability assessment methods are used to prevent crypto incidents and improve the cybersecurity of cryptocurrency platforms

生のトランザクション


入力インデックスより下の出力がない場合はどうなるか?

ビットコインの歴史的なバグにより、このような状況では署名用のトランザクションハッシュが固定数値 – 1(int 1)として返されます。これは署名対象のトランザクションの有効なハッシュに対応しておらず、セキュリティと互換性の問題を引き起こす可能性があります。

追加のフラグと修飾子

3つの基本的な SIGHASH 値に加えて、 SIGHASH_ANYONECANPAY フラグとの組み合わせが可能です。これにより、1つの入力のみに署名し、他の入力を変更可能な状態に残すことができます。これにより、異なる参加者が自分の部分のみに署名する、複雑な協調プロトコルやマルチパーティトランザクションを作成する可能性が広がります。


実際的な意義と応用

  • SIGHASH_ALL はトランザクションの最も完全な確認を提供し、標準的なウォレットで使用されます。
  • SIGHASH_NONE と SIGHASH_SINGLE は、複雑なシナリオ(マルチシグネチャ、スマートコントラクト、信頼できるトランザクション)で使用される、より柔軟で部分的な署名を可能にします。
  • これらのタイプを理解することは、カスタムトランザクションを作成したり、バグや脆弱性を調査したりする開発者やアナリストにとって重要です。

SIGHASH タイプは、 Bitcoin トランザクション内でのデジタル署名の制御レベルと範囲を管理するための巧妙なメカニズムです。これらは、セキュリティ、柔軟性、互換性のバランスを取ります。この物語には、対応する出力がない場合の SIGHASH_SINGLE のバグなどの予期しない複雑さが含まれており、高度なレベルでビットコインを扱うために技術的な詳細を深く理解することの重要性を浮き彫りにしています。


SIGHASH_ALL、NONE、SINGLE の違いはビットコイン取引のセキュリティにどのような影響を与えるのでしょうか?

SIGHASH_ALL、SIGHASH_NONE、SIGHASH_SINGLE の署名タイプの違いは、ビットコイン取引の セキュリティ に大きな影響を与えます。なぜなら、これらの違いによって、デジタル署名に含まれ、したがって改ざんから保護される取引の部分が決定されるからです。


1. SIGHASH_ALL – 最大のセキュリティ

  • 説明: 署名は 取引のすべての入力とすべての出力 を対象とします。
  • 安全性への影響:
    • 署名後に入力または出力を変更できないことを保証します。
    • 受取人や支払い金額のすり替えの可能性を排除します。
    • 署名者は取引の最終結果を完全に制御できます。
  • リスク: 硬直性が高い – 何かを変更する必要がある場合(たとえば、出力の追加や手数料の増額)、再署名が必要です。

2. SIGHASH_NONE – 出力はオープン、入力はクローズ

  • 説明: すべての入力は署名されますが、 すべての出力は署名されません 。
  • 安全性への影響:
    • 入力の署名は保護されますが、出力は署名後に誰でも変更できます。
    • 悪用の可能性: 攻撃者は署名後に送金先アドレスと金額を変更できます。
  • 用途: ほとんど使用されず、主に信頼された協力プロトコルや協調シナリオで使用されます。
  • リスク: 攻撃者が署名にアクセスできた場合、署名者の同意なしに資金を自分のアドレスに送信できます。

3. SIGHASH_SINGLE — 対応する入力と出力の署名

  • 説明: すべての入力を署名しますが、 入力の署名と同じインデックスを持つ出力のみ を署名します。
  • 安全性への影響:
    • 署名者は特定の1つの出力のみを制御でき、その他の出力は変更可能なままです。
    • 出力の数が入力の数より少ない場合、バグが発生します: 存在しない出力の場合、ハッシュは1になり、脆弱性につながる可能性があります。
    • 資金管理のより柔軟な分散が可能になりますが、そのような柔軟性には、安全な支出の保証が低下するという代償が伴います。
  • リスク:
    • 保護されていない出力の置換または削除の可能性。
    • 支払いロジック全体を不変に保つことが重要な取引には適していません。

最終的な影響


SIGHASH タイプの選択は、ビットコイン暗号通貨ネットワークにおける取引の信頼度に直接影響します:

  • SIGHASH_ALL は最高レベルのセキュリティを提供します 。そのため、ほとんどの取引で広く使用されています。
  • SIGHASH_NONE と SIGHASH_SINGLE は柔軟性と部分署名を提供します 。特定のケースでは有用ですが、なりすましや悪用のリスクも高めます。
  • これらの違いを理解することは、柔軟性とセキュリティのバランスを慎重に取る必要があるマルチシグネチャ方式、複雑なプロトコル、ビットコインスマートコントラクトを設計する際に極めて重要です。

SIGHASH_ALL の誤用が取引の脆弱性につながる仕組み

ビットコイン取引署名における SIGHASH_ALL の誤用、または正しい実装の欠如は、資金のセキュリティとシステムの完全性に影響を与える深刻な脆弱性につながる可能性があります。これらの脆弱性の主要な側面は次のとおりです:


  1. 署名の展性 (Signature Malleability):
    SIGHASH_ALL は、取引のすべての入力と出力が署名されることを意味しますが、ECDSA アルゴリズムの性質上、同じ取引に対して複数の異なるが有効な署名が存在する可能性があります。これは、署名コンポーネント s が同等の値を取り得るためです。攻撃者は取引の内容を変更せずに署名を変更でき、これにより取引識別子 (txid) が変化します。これにより、取引の追跡が困難になり、リプレイ攻撃が困難になり、詐欺や二重支払いに悪用される可能性があります。
  2. DeserializeSignature エラー:
    署名検証関数 (SIGHASH_ALL を含む) が署名構造を正しく処理しない場合、たとえば r と s が許可された範囲内にありゼロでないことを確認しない場合、攻撃者は無効であるのに受け入れられる署名を作成できます。このような偽造署名は、許可されていない取引の承認、資金の盗難、二重支払い、ブロックチェーンの破壊に使用される可能性があります。

  3. Read more

ツールをダウンロード
Sighash タイプ署名対象セキュリティレベル発生しうるリスク用途
SIGHASH_ALL取引のすべての入力と出力最大 – 変更は一切不可変更が必要な場合(取引の再署名が必要)ほとんどの支払いの標準
SIGHASH_NONEすべての入力、 出力なし中 – 出力は保護されない出力の置換、受取人に対する制御の喪失協調シナリオ、マルチシグネチャ
SIGHASH_SINGLEすべての入力、入力に対応するインデックスの出力低 – 1つの出力のみ保護される対応する出力が存在しない場合のバグ、部分的な置換部分支払い、複雑なシナリオ