lang
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
ホーム
OPRR
速報
深堀り
イベント
BlockBeats Pro
もっと見る
資金調達情報
特集
オンチェーン生態系
用語
ポッドキャスト
データ
BTC
$96,000
5.73%
ETH
$3,521.91
3.97%
HTX
$0.{5}2273
5.23%
SOL
$198.17
3.05%

乱数がもはやランダムではなくなる時:12万BTC盗難事件の真相

この記事を読むのに必要な時間は 34 分
WintermuteからLubianまで:暗号史上最大の乱数脆弱性を検証
出典: Max He@Safeheron Lab


最近、仮想通貨コミュニティでは、あるニュースが広く議論されています。米国の法執行機関が、2020年に不審な送金が行われた約12万ビットコイン(価値にして最大150億ドル)の秘密鍵を入手した疑いがあるというものです。Ellipticのレポート[1]によると、これらの資産はもともとマイニングプールLubian.comに関連付けられており、後に米国司法省によって正式に押収されました。法執行機関がウォレット生成時に生成された乱数の欠陥を悪用して秘密鍵を再構築または乗っ取った可能性があると広く推測されています。また、これは米国政府が主導した技術的なクラッキング作戦だったと考える人もいます。


このニュースが報じられると、仮想通貨業界全体に大きな衝撃が走り、すぐに業界の話題となりました。この事件は、技術面およびセキュリティ面で広範な議論を引き起こしただけでなく、投資家の間で暗号資産の信頼性とリスク防止に関する新たな懸念を抱かせました。本稿では、この事件とその根底にあるセキュリティ上の根本原因を、技術的および事実的観点から体系的に検証し、主要な技術的詳細を深く分析し、一連の出来事を包括的に検証し、その潜在的な広範な影響を探ります。乱数と秘密鍵のセキュリティ:ブロックチェーン世界の生命線 ブロックチェーンの世界では、乱数は暗号セキュリティの要です。すべてのビットコインウォレットやイーサリアムウォレットの秘密鍵は、乱数を使用して生成されます。この乱数に十分な「ランダム性」が欠けている場合、ハッカーは秘密鍵を予測し、デジタル資産を盗むことができます。このリスクを効果的に軽減するために、ウォレットは暗号学的に安全な乱数生成器(CSPRNG)を使用して、生成される乱数が真に予測不可能かつ再現不可能であることを保証する必要があります。安全でないランダムアルゴリズムに依存するウォレットは、正常に機能しているように見えますが、実際には隠れたリスクをはらんでいます。ランダム性を正しく予測できれば、資産の損失は取り返しのつかなくなります。


歴史は繰り返す:複数の重大なセキュリティインシデントからの教訓


2022年から2023年にかけて、同じ乱数脆弱性によって引き起こされた複数の重大なセキュリティインシデントが次々と明らかになり、この問題の深刻さと広範囲にわたる性質が完全に露呈しました。


セキュリティインシデント1:Wintermuteの1億6000万ドルの損失という痛い教訓


2022年9月20日、有名なマーケットメーカーであるWintermuteで重大なセキュリティインシデントが発生し、約1億6000万ドル相当のデジタル資産が盗まれました[2]。攻撃者は、アドレス生成ツール Profanity の弱点を巧みに利用しました。このツールは、一部の用途で「きれいなアドレス」を生成するために、疑似乱数ソースとして Mersenne Twister (MT19937) に依存しています。

MT19937 の出力は十分なエントロピー注入がない場合でも予測可能であるため、攻撃者はアドレス/秘密鍵生成プロセスの一部を再現し、対応する秘密鍵を計算して資金を送金することに成功しました。このケースは、乱数の誤用により機関ウォレットが侵害された暗号史上初の事例であり、乱数の問題が単なる開発者の過失からシステム全体のセキュリティリスクに進化したことを示しています。Safeheron は、攻撃の技術的な詳細を分析し、攻撃プロセスを再現した記事を公開しました。 [3]


セキュリティインシデント 2: Trust Wallet の乱数脆弱性による信頼危機


2023 年 4 月、セキュリティ研究者は、Trust Wallet ブラウザ拡張機能 (バージョン 0.0.172~0.0.182) がウォレットニーモニックを生成する際に暗号的に安全でないランダム関数 [4] を使用していることを発見しました。その基盤となるレイヤーは、メルセンヌツイスター(MT19937)疑似乱数アルゴリズムにも依存していました(下図参照)。このランダム空間には約2^32通りの可能性しかなく、網羅的攻撃への耐性には到底及びません。


攻撃者は限られた時間内に全ての可能なニーモニックの組み合わせを列挙し、秘密鍵を再構築してユーザーの資産を盗むことができます。Trust Walletの担当者はその後、この脆弱性の存在を正式に確認する発表を行い、影響を受けるユーザーに資産を速やかに移行するよう強く呼びかけました。プロジェクトコミュニティフォーラムの公式声明によると、攻撃者がこの脆弱性を悪用して標的型攻撃を実行する可能性があり、この脆弱性により約17万米ドルの損失が発生する可能性があるとのことです。



この事件は、主流のウォレット端末ユーザーに影響を与える乱数脆弱性の最初の事例となり、「乱数セキュリティ」問題が初めて大規模な注目を集めることになった。


セキュリティインシデント3:Libbitcoin Explorer(bx seed)の弱い乱数インシデント


2023年8月、セキュリティ研究チームDistrustは、コマンドラインツールLibbitcoin Explorer(bx)3.xバージョン[5]に重大な乱数脆弱性を発見したことを発表した。ウォレットシードを生成するbx seedコマンドを実行する際に、ツールは内部でメルセンヌツイスター(MT19937)疑似乱数ジェネレータも使用し、シードソースとしてシステム時間のみを使用しているため、ランダム性が極めて低く、出力が予測可能となっている。攻撃者は限られた時間内にすべてのシード値を列挙し、ウォレットの秘密鍵を再構築して資産を直接盗むことができます。



この脆弱性は、Libbitcoin Explorer 3.xを使用してウォレットを生成するすべてのユーザーと、libbitcoin-system 3.6ライブラリに依存する関連アプリケーションに影響します。2023年8月現在、この脆弱性により90万ドル以上の暗号資産が盗まれました[6]。脆弱性が公開された後、CVE-2023-39910として正式に登録されました。


Libbitcoin-explorerには適切なセキュリティパッチが適時に適用されましたが、問題は終わっていません。


浮上した巨大な氷山


Libbitcoin Explorer 3.xのセキュリティインシデントが公表された後、Distrustチームが率いるホワイトハット研究者たちは、脆弱性の影響を継続的に追跡し、コミュニティの対応を促進するために、MilkSadプロジェクトを設立しました。


2024年までに、研究者たちはこれらの「脆弱なウォレット」の生成メカニズム、ウォレットの種類、疑似乱数生成器(PRNG)の構成を初めて体系的に整理し[7]、ビットコインマイニングプールLubian.comとの潜在的な関連性と、関連資金の分配特性を明らかにしました。


2025年、匿名のホワイトハット研究者から提供された重要な手がかりの助けを借りて、長らく停滞していた分析作業に突破口が開かれました。MilkSadチームは、影響を受けたソフトウェアが秘密鍵の生成時に新しいパラメータ、PRNGオフセット(offset)を導入したことを発見しました。この発見により、研究者たちは、以前は分散していたウォレットグループを再び関連付け、その背後にある統一された乱数生成パターンを明らかにすることができました。この発見は、「弱いウォレット」事件全体の原因を解明する鍵となりました[8]。


研究チームによるさらなる詳細な分析によると、2023年に最初に発見された2,630個の問題のあるウォレットは、氷山の一角に過ぎませんでした。PRNG出力のさまざまなセクションを検索することで、研究者たちは227,200個以上の固有のウォレットを再構築し、特定することに成功しました(下図参照)。これらはすべてメインネット上でアクティブな使用履歴を持ち、これまでで最大の「弱いランダムウォレット」クラスターを形成しています。オンチェーンデータによると、乱数欠陥によって生成されたこれらのウォレットには、合計約137,000ビットコイン(BTC)が保管されていました。 2020年12月28日のわずか2時間で、これらのウォレットは一斉に空になり、残高は137,000BTCから200BTC未満にまで急落しました。約9,500BTCはLubianマイニングプールに属する支払いアドレスに流入し、残りの約120,000BTCは攻撃者が管理するウォレットに送金されたと推定されます。すべての不審な取引に同じ手数料が使用されており、自動化された一括送金の明確な兆候が見られます。


その後、新たな重要な手がかりが浮上し、この大規模な盗難事件の存在がさらに確認されました[9]。研究者たちは、ビットコインメインネット上で、2022年7月3日と2024年7月25日に、一部の被害者ウォレットで異常なトランザクションアクティビティが依然として発生していることを発見しました。これらのトランザクションには、OP_RETURNメカニズムを通じて全く同じ情報が埋め込まれていました。


「LBからのメッセージ。私たちの資産を救ってくれているホワイトハットの皆様へ。資産の返還と報酬について話し合うために、1228btc@gmail.comまでご連絡ください。」


研究者たちは、「LB」はLubian.comの略で、「私たちの資産を救ってくれている」は2020年12月28日の大規模な資金移動インシデントを指しているのではないかと推測しました。これらのメッセージは異なるアドレスに複数回ブロードキャストされており、Lubianが資産を管理する「ホワイトハット」と連絡を取り、資産の返還と報酬について話し合うための公然たる試みであるように思われます。


しかし、これらのウォレットの秘密鍵は既に漏洩しているため、理論上は誰でもこれらのアドレスからトランザクションを開始したり、メッセージを書き込んだりすることが可能です。そのため、この情報が本当にLubianチームからのものか、それとも誤解を招く、あるいはいたずらな操作によるものなのかを確実に確認することは依然として不可能です。


この時点で、氷山の一角がようやく表面化しました。乱数欠陥によって引き起こされたこのシステム的な脆弱性は、ビットコイン史上最大かつ最も広範囲に及ぶセキュリティインシデントの1つに発展しました。


技術的詳細:22万BTCウォレットへのブルートフォース攻撃の全プロセス


では、これらの22万BTCの脆弱なランダムウォレットはどのように生成されるのでしょうか?具体的な技術的探索プロセスを詳しく紹介しましょう [8]


ステップ1: 同じ疑似乱数生成器 (PRNG) MT19937 を選択して乱数を生成します。繰り返しますが、この PRNG には暗号セキュリティが全くありません。


ステップ2: 極めて低いエントロピーシード (0~2^32-1) を使用して MT19937 を初期化します。低いエントロピーシードが、これらの BTC ウォレット秘密鍵の急速な導出の主な原因です。


ステップ3: MT19937 はラウンドごとに 32 ビットの整数を出力しますが、そのすべてが使用されるわけではありません。上位 8 ビットのみが選択され、MT19937 はラウンドごとに 1 バイトを生成します。


ステップ 4: OFFSET 機能を導入して秘密鍵の範囲を拡張します。BTC の秘密鍵シードは 32 バイト (ニーモニック 24 個、つまり 256 ビットに相当) であることに注意してください。これらの 32 バイトは、(32 * OFFSET) から (32 * OFFSET + 31) までのラウンドから取得され、BTC 秘密鍵シードを生成します。BTC の秘密鍵シードは 32 バイトであることに注意してください。具体的には、次のようになります。


(1) 0 から 31 までをラウンドし、32 バイトの秘密鍵を出力します。


(2) 32 から 63 までをラウンドし、32 バイトの秘密鍵を出力します。


(3) 32 * 2 から 95 までをラウンドし、32 バイトの秘密鍵を出力します。


(4) 同様に、OFFSET の最大値は 3232 になります。


ステップ 5: 秘密鍵シードに基づいて、公開 BIP32 ウォレット導出アルゴリズムと導出パス m/49'/0'/0'/0/0 を使用して、子の公開鍵と秘密鍵のペアを導出します。


ステップ 6: 子の公開鍵に基づいて、プレフィックスが 3 の P2WPKH ネストされた P2SH タイプのウォレットアドレスを生成します。


ステップ 7: 生成されたアドレスがチェーン上に使用記録を持っている場合、弱い乱数ウォレットが正常に見つかったことを意味します。そのウォレットアドレスと対応する秘密鍵を記録します。上記の検索プロセス全体は決定論的です。唯一の変数は、低エントロピーシードの選択です。シードの選択肢は合計2^32通りで、これはBTC標準の秘密鍵空間である2^256よりもはるかに少ないです。そのため、総当たり攻撃によって22万個の弱ランダムウォレットとそれに対応する秘密鍵をすべて取得できます。 完全なストーリー:ストーリーの全容を振り返ってみましょう。数年前(2018年という早い時期)、いくつかのデジタル資産プロジェクトが、暗号的に安全でない疑似乱数生成器(PRNG)を誤って開発プロセスに組み込み、ウォレットの秘密鍵を生成するという極めて機密性の高いプロセスに使用していました。当時の開発者は暗号セキュリティについて十分な理解を持っていなかったため、このエラーは検出されず、その後の大規模な脆弱性の基盤を築くことになりました。残念ながら、時間の経過とともにこの問題は徐々に発見され、ハッカーによって悪用されました。Wintermute盗難事件、Trust Wallet乱数脆弱性事件、Libbitcoin脆弱ウォレット事件など、さまざまな攻撃グループが同じ原理に基づいて多数の注目を集めた攻撃を仕掛けてきました。これらの攻撃により、合計で数億ドルの資産損失が発生し、これまで見過ごされてきた技術的な詳細である乱数セキュリティが業界の焦点となりました。研究者らがこれらのインシデントの共通点を分析したところ、影響を受けたすべてのウォレットに類似した乱数性欠陥が見つかり、その関連性は以前のLubianマイニングプールの盗難事件にまで遡りました。さらに調査を進めたところ、Lubianで使用されていたウォレットも安全でない乱数生成メカニズムに依存しており、「脆弱なウォレット」のグループに属していることが確認されました。その後の体系的な分析により、さらに驚くべき事実が明らかになりました。ネットワーク全体で約22万個の脆弱な乱数ウォレットが見つかり、合計12万BTCが保管されていたのです。これは、これまでで最大かつ最も広範囲に及ぶ乱数セキュリティインシデントとなりました。Lubian.comの盗難事件の背後に米国司法省がいるという噂は、主に、ある微妙な事実に端を発しています。司法省が関連資産の取り扱いに正式に関与していた際、Lubianに関連する以前は休眠状態だったビットコインアドレスから突然、大規模な資金移動が発生したのです。この時点で重複していたオンチェーンアドレス間の直接的な相関関係から、多くのオブザーバーは、政府が関連する秘密鍵をブルートフォース攻撃で回収したのではないかと疑っていました。別の可能性として、米国政府が秘密鍵を直接ブルートフォース攻撃したのではなく、秘密鍵を保有する個人または団体をコントロールすることで、資金移動を容易にしたというものがあります。


これらのウォレットはハッキング可能な脆弱なランダムウォレットですが、理論上は技術的な手段で秘密鍵を複製することは可能です。しかし、現時点では、米国政府が対応する秘密鍵に対して「ブルートフォース攻撃」を主導したという、公に検証可能な証拠はまだありません。関係機関が技術的介入の事実を公式に公に認めない限り、事件全体の真の過程は謎に包まれたままです。


暗号的に安全な乱数を取得するには?


安全な乱数の重要性を認識した上で、実際の開発・応用において安全な乱数を正しく取得するにはどうすればよいでしょうか。以下の原則に従う必要があります。


(1) オペレーティングシステムが提供するセキュリティインターフェースを優先的に使用し、システムエントロピープールに基づいて乱数を生成します。


(2) 条件が許せば、Intel SGX CPU のハードウェア乱数命令など、安全なハードウェアエントロピーソースを使用します。


(3) MPC シナリオでは、Linux システムエントロピープールと Intel SGX CPU のハードウェア乱数を組み合わせるなど、複数のエントロピーソースを統合して全体的なセキュリティを向上させることができ、単一のエントロピーソースが故障したり予測されたりするリスクを回避できます。


(4) libsodium、BoringSSL、OpenSSL などの広く検証された暗号化ライブラリの安全な乱数生成インターフェースを使用します。


(5) シードエントロピーが 128~256 ビット以上であることを確認し、タイムスタンプやプロセス番号などのエントロピーの低いソースをシードとして使用することを禁止します。


(6) メルセンヌツイスター (MT19937)、Math.random()、rand() などの暗号的に安全でない疑似乱数生成器 (非 CSPRNG) の使用は固く禁じられています。


MPC のマルチソースエントロピー融合の利点


一方的なシステムと比較して、MPC には自然なエントロピー融合の利点があります。各参加者が独立してランダムエントロピーソースを提供でき、最終的なランダム結果はすべての当事者によって生成されます。いずれかの当事者が正直である限り、システム全体のランダム性を予測または操作することはできません。このマルチソースランダム構造により、システム全体のセキュリティと改ざん耐性が大幅に向上し、MPC プロトコルのコアセキュリティ上の利点の 1 つとなっています。


Safeheronは、MPCとTEE技術に基づくデジタル資産セキュリティ管理プロトコルを構築しました。このソリューションでは、MPCプロトコルの各参加者が、LinuxシステムのエントロピープールやTEEハードウェアエントロピーソース(Intel SGXハードウェア乱数命令など)を含む、複数の独立したセキュアエントロピーソースを活用します。このマルチソースエントロピー融合メカニズムは、システムのセキュリティ境界を強化するだけでなく、信頼できる実行環境(TEE)と分散署名システムを構築するための、より高いセキュリティベースラインを確立します。


結論


一見不可解な「12万ビットコイン盗難」事件は、特定のアルゴリズムが侵害されたのではなく、初期の開発者が秘密鍵生成時に暗号学的に安全でない乱数アルゴリズムを誤用し、システム全体のセキュリティを根本的に弱体化させたことを示しています。


暗号資産のセキュリティは、最終的には暗号実装の厳密さにかかっています。エンジニアリングにおけるわずかな見落としは、ハッカーに悪用され、最終的にはデジタル資産の所有権を決定づけてしまう可能性があります。信頼できるエントロピーソースと実績のある暗号ライブラリを用いて、乱数発生源からのセキュリティを確保することによってのみ、「ランダム性」を本来の意味である予測不可能かつ改ざん不可能な状態に戻すことができます。


Safeheron Labについて


SafeheronのチーフサイエンティストであるMax He氏が率いるSafeheron Labのチームは、暗号とセキュリティの国際的な専門家を集め、ブロックチェーンセキュリティや信頼できるコンピューティングといった最先端分野の基礎研究に重点を置いています。Safeheron Labは、Turing AI Research Instituteなどのパートナーと連携し、研究成果と産業用アプリケーションの商業化を促進し、デジタル資産セキュリティのための革新的なソリューションを提供しています。


参考文献


[1] 米国が押収した150億ドルは、イラン/中国のビットコインマイナーによる「盗難」によるもの

[2] 暗号取引会社Wintermuteが1億6000万ドルのハッキング被害に遭った経緯


[3] 暗号チームのハードコア分析:Wintermuteのハッキングによる1億6000万ドルの損失の背後にある暗号技術の詳細な説明


[3] href="https://safeheron.com/blog/how-profanity-caused-wintermute-to-lose-160m/" target="">不適切な言葉遣いがWintermuteに1億6000万ドルの損失をもたらした経緯を深く掘り下げて解説


[4] Trust Wallet: CVE-2023-31290の詳細


[5] Libbitcoin Explorer: CVE-2023-39910の詳細


[6] CZ: Trust WalletとBinance Walletは、ニーモニックを生成するためにLibbitcoin Explorerを使用していません


[7] アップデート #7 - 数十億ドル規模のウォレットが空に


[8] アップデート #13 - 224,000 以上の新しいウォレットを発見


[9] アップデート #14 - Lubian.com へのハッキング疑惑に関する詳細情報


この記事は投稿記事であり、BlockBeats の見解を代表するものではありません。


BlockBeats の公式コミュニティに参加しよう:

Telegram 公式チャンネル:https://t.me/theblockbeats

Telegram 交流グループ:https://t.me/BlockBeats_App

Twitter 公式アカウント:https://twitter.com/BlockBeatsAsia

ライブラリを選択
新しいライブラリを追加
キャンセル
完了
新しいライブラリを追加
自分のみが閲覧可
公開
保存
訂正/通報
送信