Stone Man事件

8,999 BTCを失ったビットコインウォレットバックアップ問題の内幕

Stone Manは注意深いユーザーの指示通りwallet.datをバックアップしました。しかし1 BTC送金と再起動で欠陥が露呈。バックアップはあったが8,999 BTCお釣り鍵はありませんでした。

ブロックチェーンはコインを失いませんでした。

ウォレットはそれらを使う能力を失いました。

この違いは単なるUSB故障の話をウォレット設計の話に変えます。初期Bitcoinは将来鍵を一つの復元可能なシードから導出せず、バックアップはコピー時点の鍵のスナップショットに過ぎませんでした。

損失の夜

慎重なバックアップ、1 BTCの自己送金、そして再起動がもたらした影響

Stone Manは9,000 BTCを貯めDebianライブCD上のBitcoinクライアントに移しました。ライブシステムはメモリ上で動作し、シャットダウンでウォレットが消えます。先にwallet.datをフラッシュドライブにコピーしました。

  1. 01

    保護する

    ウォレットはバックアップ済み

    9,000 BTCのwallet.datはライブシステムからフラッシュドライブにコピーされました。

  2. 02

    自己送金

    Stone Manが約1 BTCを自分に送金

    別の支払いの確認を待つ間、Stone Manは約1 BTCを自分に送金しました。ウォレットは9,000 BTCの全出力を使い切り、残りの分の新しいお釣り用鍵を静かに作成しました。

  3. 03

    消去

    ライブシステムがシャットダウン

    新しいお釣り鍵を含むメモリ上のウォレットはバックアップ更新前に消えます。

  4. 04

    復元する

    古いバックアップが戻る

    ブロックチェーンは取引を示しますが、復元されたウォレットは8,999 BTCのお釣り出力を使えません。

“全残高が危険に晒されるとは夢にも思わなかった。”

Stone Man、BitcoinTalk、2010年8月11日— (翻訳済み)

Stone Manについて分かっていること

Stone Manとは誰か?

Stone Manの正体は不明です。BitcoinTalkのプロフィールはアカウント288でした。フォーラムでは、時間をかけて9,000 BTCを購入し、DebianのライブCDでBitcoinを使い、コンピューターをシャットダウンする前にwallet.datのコピーを保存したと述べています。

彼の本名、居住地、職業、スレッド後の状況は不明です。後の身元に関する主張も証明されていません。

失われた鍵の捜索

2010年に鍵の捜索が始まった

Stone Manが助けを求めてから数分後、別のユーザーが古いウォレットの確認を申し出ました。InstiはGavin Andresenの初期Bitcoinツールを使い取引を再構築しました。復旧には保存されたwallet.datにお釣り用アドレスの秘密鍵が含まれている必要がありましたが、2010年の分析ではそれがない可能性が高いと示唆されました。その鍵がなければ、ブロックチェーン上でコインの所在は分かっても、誰も動かせません。

2010年8月

鍵の最初の回復試み

フォーラムのユーザーは両方の取引出力を追跡し、Stone Manにウォレット内の鍵の一覧を求め、失われたお釣りのアドレスを発見しました。損失の説明はできましたが、鍵の回復はできませんでした。

2026年5月

2026年の新たな捜索

2026年、匿名のフォーラムユーザーがGPUで650万以上の可能な鍵を試したと報告しましたが、失われたアドレスには一致しませんでした。捜索を絞るにはStone Manと彼の古いウォレットの詳細が必要だと述べています。

取引の詳細解析

なぜ1 BTCの送金で9,000 BTC全てが動いたのか

Bitcoinは取引出力を単位ごとに消費します。Stone Manのウォレットは9,000 BTCの出力を使い、1 BTCを自身の選んだアドレスに送り、残り8,999 BTCをお釣りとして別の出力にしました。これは盗難ではなくお釣りです。

取引ID eb5b761c7380ed4c6adf688f9e5ab94953dcabeda47d9eeabd77261902fccccf
お釣りアドレス 167ZWTT8n6s4ya8cGjqNNQjDwDGY31vmHg

隠れた失敗

wallet.datは将来鍵の保証ではなくスナップショットだった

元のBitcoinウォレットは独立生成された秘密鍵を保存していました。新しいお釣りアドレスが必要な時、バックアップ後に新しい鍵を生成できました。古いファイルを復元すると古い鍵は戻りますが、後のランダム鍵は再生成できません。

ブロックチェーンの再スキャンで取引は再発見できる。8,999 BTCの行方も示せるが、失われた秘密鍵は作れない。可視化は制御ではない。

フラッシュドライブバックアップ 既知の鍵A 元の出力を認識し使用可能
バックアップ後に作成
消去されたライブウォレット 欠落したお釣り鍵B 8,999 BTC出力を使うために必要

警告が先にあった

Stone Manはお釣り問題の最初の被害者ではない

2010年7月14日、Stone Manの投稿のほぼ1か月前に別のユーザーが同様の小規模な失敗を報告。1.21 BTCのウォレットをバックアップし、0.01 BTCを寄付、古いファイルを復元したら残高がゼロになりました。

支払い前 1.21 BTCを一つの出力で
寄付 0.01 BTC
新しい鍵に隠れたお釣り 1.20 BTC

7月21日までに、古いバックアップは使用済み鍵は含むが新しいお釣り鍵は含まない可能性があるとユーザーが明確に警告していました。8,999 BTCの損失前に危険は公知でした。

Bitcoinの変遷

独立鍵から鍵プール、そして決定論的ウォレットへ

対応は一度の完璧な修正ではありませんでした。Bitcoinはまず将来鍵の安全バッファを作り、後のウォレット設計は一つのルートシードから鍵のファミリー全体を復元可能にしました。

  1. 失敗が確認された

    1.20 BTCの警告

    ユーザーが0.01 BTCの寄付後に古いウォレットを復元し、新たに作成されたお釣り出力へのアクセスを失いました。

  2. 提案された設計

    サトシは将来鍵のキューを説明

    事前生成アドレスは、ウォレットがまだ使っていない鍵をバックアップに含められます。

  3. 失敗が拡大

    Stone Manは8,999 BTCのお釣り鍵を失う

    同じ設計上の弱点はコミュニティが無視できないものになります。

  4. 安全バッファを導入

    Bitcoin 0.3.13.3で鍵プールが導入される

    デフォルトの100個の事前生成鍵プールは、バックアップの将来カバー範囲を限定します。

  5. 決定論的標準

    BIP 32は一つのシードから鍵のツリーを定義します

    ウォレットは無関係なランダム鍵を保存する代わりに、復元可能なルートから将来の受取・お釣り鍵を導出できます。

  6. デフォルトでHD対応

    Bitcoin Coreが決定論的鍵導出を採用

    新規作成のHDウォレットは正しいシード付きバックアップで派生鍵を再生成可能です。

実装記録 SVN r163 · Bitcoin 0.3.13.3
103849419a9c014a69c76b6f96e48b66cbc838ca

コミットは取引作成を変更し、取引構築時に鍵を生成する代わりに、デフォルトの100個の事前生成鍵プールからお釣り鍵を予約するようにしました。

今日の意味

現代のシードは復旧を変えたが、バックアップを不要にはしなかった

階層的決定論的ウォレットは一つのシードから多くの鍵を導出するため、正しいシードと導出情報があればStone Manのような失敗は起こりません。Bitcoin Coreは0.13でHDウォレットを導入しましたが、インポート鍵、旧非HDウォレット、不明な導出経路、パスフレーズ紛失、破損バックアップ、未検証の復旧手順は資金を失うリスクがあります。

01

自分のバックアップの種類を知る

シードフレーズ、ディスクリプターエクスポート、wallet.datファイル、ハードウェアウォレットのバックアップ、インポートされた秘密鍵は復元方法が異なります。

02

実資金を動かさず復旧をテスト

緊急時に推測を強いられる前に、復元ウォレットが期待通りの受取・お釣りアドレスを導出するか確認してください。

03

インポート鍵は別のリスクとして扱う

元のシードやバックアップ後にインポートした鍵は別途エクスポートが必要で、復旧フレーズから常に再生成できるわけではありません。

04

価値ある旧ウォレットは慎重に移行する

最新の復旧情報でウォレットを作成し、バックアップを検証、小額テスト送金後に残高を移動してください。

残る教訓

バックアップは鍵のモデル次第でしか完全にならない

Stone Manの損失はBitcoin暗号の破綻や未知の攻撃者によるものではなく、通常の取引で明らかになった復旧設計の失敗です。ネットワークは台帳を完璧に保持し、古いバックアップは誤った時点を保存していました。

オンチェーンで見えるコイン バックアップから復元可能な秘密鍵

よくある質問

Stone Manは本当に8,999 BTCを失ったのか?

公開取引は9,000 BTCの出力を使い、1 BTCと8,999 BTCの出力を作りました。Stone Manは8,999 BTCお釣りアドレスの秘密鍵が復元バックアップに無く、この記事検証時にそのアドレスは出力を使っていないと報告しました。

なぜStone Manのwallet.datバックアップはコインを復元できなかったのか?

バックアップはウォレットが新しいお釣りアドレスの秘密鍵を生成する前に作成されました。初期の非決定論的ウォレットは古い鍵やブロックチェーンから後のランダム鍵を再生成できません。

8,999 BTCの出力はハッキングか攻撃者への支払いか?

攻撃者は不要です。8,999 BTCはStone Manの1 BTC自己送金のお釣り出力で、失敗はそのお釣りを使う秘密鍵の紛失でした。

現代のシードフレーズでも同じバックアップ問題は起こり得るか?

正しく復元された決定論的ウォレットは正しいシードから受取用とお釣り用の鍵を導出できます。シードが誤っている、導出設定が不明、鍵が別途インポートされた、パスフレーズが欠落、バックアップ未検証の場合は復旧に失敗することがあります。

Stone Manに何が起きたのか分かっているか?

Stone Manはフォーラムで助けを求め、古いウォレットファイルをまだ持っていると伝え、技術的な質問にも答えました。その後投稿をやめましたが、理由や秘密裏に鍵の復旧を続けていたかは不明です。

調査を続ける

ウォレットセキュリティの他の失敗例を見る

Stone Manはバックアップ時に新しいおつり用鍵を保存しなかったため、アクセスを失いました。COLDCARD事件では鍵自体は存在していたものの、一部が弱い乱数から生成されていました。また、アドレスポイズニングでは、所有者が誤った受取人に署名してしまうケースもあります。