Coldcardの低エントロピーバグがビットコイン保有者にハードウェアウォレットの信頼を見直させる
重要ポイント
- •攻撃者はColdcardハードウェアウォレットの低エントロピー脆弱性を悪用し、秘密鍵をブルートフォース攻撃で破解することで、1億米ドル以上のビットコインを盗んだ。
- •この脆弱性は2021年3月にリリースされたファームウェアバージョン4.0.1に起因し、STM32ハードウェア乱数生成器がMicroPythonのYasmarang疑似乱数生成器に置き換えられていた。
- •Coinkiteの推定では、Mk2およびMk3デバイスは約40ビットのエントロピーでシードを生成し、Mk4、Mk5、Qモデルは約70ビットに達していたが、いずれも安全な12語のシードフレーズに必要な128ビットに遠く及ばない。
- •追加のダイスエントロピーを付加したユーザー、または非標準の導出パスと組み合わせたBIP-39パスフレーズを使用していたユーザーは、エクスプロイトから保護されていた。
- •Coinkiteは該当デバイスに対する公式のシード生成警告を発表し、ダイスロールや紙ベースのルックアップテーブルを含む複数の物理的エントロピー手法がより安全な代替案として推奨されている。

7月30日に始まった公に確認された盗難事案に関連した、Coldcardハードウェアウォレットの深刻な低エントロピー脆弱性の発覚を受け、ビットコイン保有者はセルフカストディ環境の信頼前提を見直し始めている。攻撃者はこの欠陥を悪用して秘密鍵をブルートフォース攻撃で破解し、1億米ドル相当のBTCの盗難を引き起こした。
Coinkiteが製造するColdcardは、ビットコインエコシステムにおいて最もセキュリティに特化したハードウェアウォレットの一つとして広く認識されており、エアギャップ設計とマルチシグやPSBTワークフローなどの高度な機能のサポートを特長として市場展開されてきた。この位置づけの崩壊は、ハードウェアウォレットベンダーが最もセキュリティ上重要なコードパスをどのように実装・保守しているかに対する精査を一段と強める結果となった。
Coldcardのエントロピー欠陥の仕組み
Coldcardデバイスには、物理プロセスに依存して推測不可能なシードフレーズを生成するよう設計されたSTM32「真の乱数生成器」(TRNG)が搭載されていた。しかし、Coldcardの開発者NVKが、プロジェクトをGPLライセンスのフリーソフトウェアモデルから読み取り専用モデルに移行するためのファームウェア書き換えを開始した際、重大な脆弱性が導入されたと見られる。
2021年3月にリリースされたファームウェアバージョン4.0.1以降、デバイスはSTM32ハードウェアRNGを適切に活用する代わりに、MicroPythonのYasmarang疑似乱数生成器(PRNG)を使用していた。この変更は事実上、ハードウェアベースのエントロピー源をバイパスするものであった。乱数生成はコンピュータサイエンスにおいて本質的に困難な問題であり、安全で推測不可能な秘密鍵の作成は常に、少なくとも部分的には外部の物理プロセスに依存しなければならない。GPLライセンスからの移行はまた、独立した開発者がファームウェアの変更をリアルタイムで監査する能力を低下させた — オープンソースハードウェアウォレットコミュニティがかねてからシステム的リスクとして指摘してきた緊張関係である。
アナリストはYasmarangの使用を広くプログラム済みのフォールバックと見なしていた。Coldcardの製造元であるCoinkiteは、最近のXの投稿でこの見解に異議を唱えた。
Coldcardが明らかに安全でないシード生成手法をデフォルトとしていた可能性は、この欠陥が意図的に仕込まれたバックドアではないかという憶測をX上で呼んだ。調査報道を行うビットコインジャーナリストのHodlnautは、このバグが杜撰な開発慣行と、恣意的なコード変更によるエラー抑制の試みに起因するものと推測した。
Coinkite自身の推定によると、Mk2およびMk3デバイスは約40ビットのエントロピーでシードを生成し、Mk4、Mk5、Qモデルは約70ビットに達していた。いずれの数値も、安全な12語のシードフレーズに必要な128ビットに遠く及ばない。
関連記事:Coldcardのハッカーが64 BTCと200 ETHを暗号資産ミキサーに送金
あるウォレットが侵害される可能性は、ユーザーが追加のダイスエントロピーを付加していたか、あるいは非標準の導出パスと組み合わせたBIP-39パスフレーズを使用していたかによって異なっていた。
James O'Beirneはその後、攻撃者がどのウォレット構成を効率的にスイープしているかを特定するためのハニーポットアドレスを展開するWebサイトcktripwireを立ち上げた。
Coinkiteはまた、該当デバイスに向けた公式のシード生成警告を公開している。
物理的エントロピーが一部のウォレットを保護した経緯
Coldcardのエクスプロイトは、ビットコインコミュニティの基本原則の一つである「信頼せず、検証せよ」を痛切に再認識させた。
最もセキュリティ上重要な段階でのエントロピー生成を不透明なハードウェアコンポーネントに委ねず、十分な回数の物理的なダイスロールを使用したユーザーは、このエクスプロイトから完全に保護されていた。サイコロを振ることは、一般ユーザーが自ら監査し直感的に理解できる、シンプルで視覚的に透明なプロセスである。一方、TRNGの検証には、デバイスの電子機器の詳細な物理的検査とファームウェアの徹底的な調査が必要となる。
一部のコメンテーターは最近の出来事をセルフカストディが根本的に欠陥している証拠として引用しているが、エントロピーのベストプラクティスを遵守していれば、リモート攻撃者が付け入る隙はほとんどない。シードフレーズがハードウェア依存のプロセスではなく物理的エントロピーを通じて生成される場合、ウォレット作成における最も重要な単一障害点が排除される。
シードから導出される拡張公開鍵(xpub)と受信アドレスは、シードを複数の独立したデバイスにインポートすることで相互検証できる。エアギャップを通じたナンスの持ち出しも、2つのデバイスが同一の未署名トランザクションを処理した際に同一のRFC 6979準拠署名を生成することを確認することで検出可能である。
安全なエントロピー生成は、したがって安全なウォレットの絶対的な前提条件である。Coldcardのエクスプロイトが公になった後、信頼できるエントロピー生成に向けた様々な手法や提案がX上で広く流通している。
最も人気のあるアプローチは、SHA-256ハッシュを適用することで、デバイスがダイスの面を正しくBIP-39シードフレーズに変換できるかを相互検証する方法である。100回以上のダイスロールを使用すれば、24語のシードに十分なエントロピーが生成される。
Bitboxが公開したルックアップテーブルなどのよりシンプルな紙ベースの手法は、BIP-39ワードリストを分割し、6回のダイスロールとコイントスの組み合わせで、電子デバイスを使用せずにシードワードを直接割り当てることができる。
codex32ダイス偏向補正ワークシートなどのより高度なツールは、フォンノイマン抽出器 — 手計算で完全に実行可能な手順 — を用いて、偏りのあるダイスであっても安全なシードフレーズを生成できる。
ダイスに代わる方法として、BIP-39の全ワードリストを印刷し、単語を均等な大きさの紙片に切り、完全にシャッフルしてからランダムに24語を引き抜く方法がある。SeedsticksやEntropiaなどの製品は、この手法をより便利で堅牢な形で提供している。
Frostsnapなどの専用ハードウェアは、エントロピー生成を複数のデバイスにわたって検証可能に分散することを試みている。一部のユーザーは、専用の電子ウォレットとほぼ同等の速度でシードフレーズを生成できる独自の物理エントロピーデバイスの設計を始めている。