本論文は、ビットコインプロトコルのデジタル署名実装における重大な脆弱性、すなわちPhantom Signature Attack(CVE-2025-29774)と基本的なSIGHASH_SINGLE処理エラーについて、包括的な暗号解読研究を提示する。本研究は、トランザクション署名メカニズムにおける暗号プリミティブの誤った処理が、暗号通貨ウォレット所有者の秘密鍵を知られることなく完全に侵害される条件を作り出すことを実証する。この攻撃は、元のSatoshiクライアントのレガシーバグを悪用する。このバグでは、トランザクションの入力数と出力数が一致しない場合、署名を拒否する代わりに、システムが"1"(uint256)という普遍的なハッシュ値を返す。
研究の実践的な部分では、署名検証コード、楕円曲線演算、トランザクションハッシュ関数における脆弱性を体系的に特定するための暗号ツールKeyFuzzMasterの使用が含まれる。secp256k1曲線上のECDSAアルゴリズムにおけるnonce(kパラメータ)の再利用による秘密鍵回復のための数式が提示される。ECDSA(Elliptic Curve Digital Signature Algorithm)アルゴリズムの暗号プリミティブがsecp256k1楕円曲線上で議論される。ビットコインにおけるデジタル署名は、支出の承認、否認防止、トランザクション整合性の保証という三重の機能を果たす。
しかしながら、下位互換性を確保するためのレガシーなアーキテクチャ上の決定を維持することは、潜在的に壊滅的な結果をもたらす微妙な暗号上の脆弱性の出現につながった。その中でも、SIGHASH_SINGLEバグは際立っている——これは署名ハッシュ生成メカニズムの根本的な欠陥であり、元のBitcoin Coreの実装から継承され、ネットワークコンセンサスに統合されたものである。
| CVE識別子 | コンポーネント | CVSSスコア | 重要度 |
|---|---|---|---|
| CVE-2025-29774 | xml-crypto / SIGHASH_SINGLE | 9.3 | 重大 |
| CVE-2025-29775 | xml-crypto DigestValueバイパス | 9.3 | 重大 |
| CVE-2025-48102 | GoUrl Bitcoin Payment Gateway(Stored XSS) | 5.9 | 平均 |
| CVE-2025-26541 | CodeSolz WooCommerce Gateway(Reflected XSS) | 6.1 | 平均 |
ビットコインは、SECG(Standards for Efficient Cryptography Group)標準によって定義されたsecp256k1楕円曲線を使用する。この曲線は、有限体上のWeierstrass方程式によって定義される:
曲線方程式:
y² ≡ x³ + ax + b (mod p)
secp256k1の場合:
y² ≡ x³ + 7 (mod p)、ここで a = 0、b = 7
secp256k1曲線のパラメータは、タプル T = (p, a, b, G, n, h) によって決定される:
secp256k1 パラメータ:
p = 2²⁵⁶ − 2³² − 977 (有限体を定義する素数)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
(曲線点群の位数:生成元Gの整数位数)
G = (Gₓ, Gᵧ) — 固定基底点(生成元)
ECDSA アルゴリズムは、メッセージMに署名を形成するために秘密鍵dを使用する。署名プロセスには以下の数学的操作が含まれる:
ステップ1:ランダムなnonce kの生成
暗号学的に強い乱数 k ∈ [1, n-1] が選択される
ステップ2:R点の計算
R = k × G(生成元点のスカラー倍算)
ステップ3:パラメータ r の計算
r = Rₓ mod n(点Rのx座標のnによる剰余)
ステップ4:パラメータ s の計算
s = k⁻¹ × (H(M) + r × d) mod n
結果:署名 (r, s)
ここで、H(M) はメッセージMのハッシュ(ビットコインでは二重SHA-256が使用される)、d は所有者の秘密鍵である。
公開鍵と秘密鍵の関係は、次の関係式によって決定される:
Q A = d A × G
ここで、QA は公開鍵(曲線上の点)、dA は秘密鍵(256ビット整数)、G は曲線の生成元である。
ビットコインプロトコルは、署名されるハッシュにトランザクションのどのコンポーネントを含めるかを決定するいくつかのSIGHASHタイプを提供する: