書き写す前から犯人が知る12語|偽ハードウォレットの共有シード攻撃
取引所のリスクを理解し、セルフカストディに移行しようとした。ハードウォレットを注文し、届いた端末を起動し、「新規ウォレットを作成」を選んだ。画面に12語が現れ、一字一句丁寧に書き写した。翌日、少額のビットコインを送って動作を確認した。すべて正常だった。
しかし、その12語を書き写す以前から、攻撃者はすでに同じ12語を持っていた。
生成という行為が起きていない
正規のハードウォレットは、起動時に内蔵の乱数生成器を使ってシードフレーズを作り出します。このプロセスは端末内部でのみ行われ、生成された12語は外部に出ることなく画面に表示されます。数学的な根拠から、同じ組み合わせが他に存在する確率はほぼゼロです。
偽物は、このプロセスを最初から省いています。
攻撃者は端末の出荷前に、あらかじめ用意した12語を書き込みます。ユーザーが「新規作成」を押したとき、画面に表示されるのはランダム生成の結果ではなく、攻撃者が事前に決めた固定値です。ユーザーはそれを知らず「自分が生成した鍵」として丁寧に書き写します。
その瞬間、世界には同じ12語を持つ人間が二人います。一人は被害者で、もう一人は攻撃者です。
動作確認がすべて通る理由
偽ハードウォレットはセキュリティの欠陥品ではなく、完全に機能する端末です。電源が入り、受取アドレスを生成し、送金も問題なく処理されます。残高表示も正確で、標準的なユーザーが行う確認を、偽物はすべてパスします。
攻撃者は送金テストを恐れていません。少額の確認送金を被害者が行っても、引き出す必要がないからです。数百、場合によっては数千の端末に異なるシードを仕込み、それぞれのウォレットに残高が積み上がるのをただ待ちます。被害者が入金するたびに、攻撃者の「収穫待ちリスト」の金額が増えていきます。
攻撃者は何の操作も必要としません。タイミングは攻撃者が一方的に決めます。
「正しく管理した」が意味をなさない理由
シードフレーズの管理で一般的に言われる注意事項は、正しい内容です。
- 書き写しミスをしないこと
- 紛失しないこと
- 他人に見せないこと
- デジタルデバイスに保存しないこと
ただし、これらはすべて「そのシードが真のランダム生成によって作られ、世界で自分だけが知っている」ことを前提にしています。この前提が崩れている場合、管理がいくら完璧でも守られません。
正しく書き写した。安全な場所に保管した。誰にも見せなかった。それでも全額失う。偽ハードウォレットの被害者が陥る状況です。問題は手順の正確さではなく、シードが本当に「あなただけのもの」であるかという出発点にあります。
防衛の機会は購入時にしかない
シードの一意性を受け取り後に外部から確認する現実的な方法はほぼありません。偽物は動作確認の範囲内では本物と区別できないように設計されているからです。
公式サイトからの直接購入が第一の条件です。LedgerはLedger.com、TrezorはTrezor.io、ColdcardはColdcard.comからそれぞれ直販しています。Amazonや転売品を通じた場合、流通途中での端末入れ替えが起きる可能性があります。
届いた端末の外箱の封印を確認します。正規品には改ざんを示す破損証拠テープが貼られており、シールが破れていれば使ってはいけません。
大きな金額を移す前に、別のデバイスで復元テストを実施します。12語を別の端末に入力し、同じウォレットアドレスが生成されるかを確認します。これはシードの一意性を直接証明するものではありませんが、問題があった場合の損害を最小化する手段になります。
慎重であることが標的になる逆説
セルフカストディへの移行を決意した人ほど、この攻撃の被害に遭いやすいという逆説があります。取引所のリスクを理解し、正しい行動を取ろうとした人が、購入経路という最初の一点で損失を抱えることになります。
端末が正常に動くことと、その端末が安全であることはまったく別の話です。ハードウォレットの真正性を確認できる機会は、購入前後にしかありません。その機会を、選択肢がある間に使ってください。
あなたの12語が「あなただけのもの」であることを確かめる責任は、最終的にはあなた自身にあります。
※本記事は一般的な情報提供を目的としており、投資助言ではありません。
この記事が参考になったら、セルフカストディの具体的な始め方もチェックしてみてください。
LINE登録でセルフカストディの始め方を学ぶ 正しい手順を無料でお届けします