存在しながらも、 機能していなかった安全性チェック
すべての防御は、誰にも推測できない一つの数に懸かっている
ハードウェアウォレットにはいくつかの役割があります。感染したパソコンの画面を信頼するのではなく、実際に署名しようとしている内容をユーザーに表示すること、そして物理的な開封に耐えるよう構築されたチップの内部に秘密鍵を保持することです。これらすべての防御機能は、秘密鍵の生成元となった数字が予測不可能であることを前提としています。もし予測可能であれば、攻撃者はどの防御機能も迂回する必要がなくなります。 24単語のフレーズの組み合わせ元となるプールには、観測可能な宇宙にある原子の総数の約1000倍に相当する数の組み合わせが存在します。それほどの規模のプールを総当たりで検索することは不可能です。それがセキュリティモデルの全体像です。
12単語には128ビット、24単語には256ビットのエントロピーが含まれ、さらにそのエントロピーのSHA-256によるチェックサムが付加されます。BIP-39によってこの結果が拡張され、BIP-32のマスターキーが生成されます。
12単語には128ビット、24単語には256ビットのエントロピーが含まれ、さらにそのエントロピーのSHA-256によるチェックサムが付加されます。BIP-39によってこの結果が拡張され、BIP-32のマスターキーが生成されます。
COLDCARDはそのプールからの抽出をやめていました
2021年のファームウェア変更により、ウォレットは専用の乱数生成チップにその数字を求めることを密かに停止し、代わりに通常のソフトウェアに計算させるようになりました。これを並べて示したものが、インシデントの全容です:
これはセキュリティが3分の2に低下したという話ではありません。1ビット増えるごとに必要な作業量が倍増するため、88ビット減るということは、作業量が2の88乗分の1に縮小することを意味します。1兆という数字は人間にとっては大きなものですが、高性能マシンをレンタルして処理を行う者にとっては小さなものです。
シード生成処理が ckcc.rng_bytes() から ngu.random.bytes() に変更されました。Coinkite社は、Mk3では約40ビット、Mk4/Mk5/Qでは約72ビットの検索空間が残されていると見積もっています(128ビットのターゲットに対して)。Blockによる独立した分析でも同等の規模(2の40.7乗未満および2の73.3乗未満)が算出されており、さらに残存空間が大幅に減少する限定的な条件も特定されています。2
シード生成処理が ckcc.rng_bytes() から ngu.random.bytes() に変更されました。Coinkite社は、Mk3では約40ビット、Mk4/Mk5/Qでは約72ビットの検索空間が残されていると見積もっています(128ビットのターゲットに対して)。Blockによる独立した分析でも同等の規模(2の40.7乗未満および2の73.3乗未満)が算出されており、さらに残存空間が大幅に減少する限定的な条件も特定されています。2
ソフトウェアにはランダム性を持たせることができないため
コイントスが予測不可能である理由について考えてみてください。投げるときの力、重力、エアコンの風、地面の微細な揺れなど、名前を挙げられる要因も挙げられない要因も数十と存在します。誰もその軌道を計算できないため、誰も結果をあらかじめ言い当てることはできません。 ソフトウェアの動作は異なります。少数の初期値に対して固定の数式を実行し、固定の答えを生成します。今回のケースでは、それらの値とはチップのシリアル番号とデバイスの起動からの経過時間でした。レシピと材料を知っている攻撃者は、推測する代わりにその出力を再計算します。
ハードウェアRNGが無効化された状態では、rng_get() は MicroPython の Yasmarang PRNG にリンクされ、秘密ではない状態(UID、SysTick、RTC)からシードを取得していました。その後は新たなエントロピーが収集されなかったため、候補がオフラインで列挙されることになりました。Coinkite社は、50回以上の公正でプライベートなロールが混入されたシードについては、この問題単体によるリスクはないと見なしています(50 × log₂6 ≈ 129 ビット)。3
ハードウェアRNGが無効化された状態では、rng_get() は MicroPython の Yasmarang PRNG にリンクされ、秘密ではない状態(UID、SysTick、RTC)からシードを取得していました。その後は新たなエントロピーが収集されなかったため、候補がオフラインで列挙されることになりました。Coinkite社は、50回以上の公正でプライベートなロールが混入されたシードについては、この問題単体によるリスクはないと見なしています(50 × log₂6 ≈ 129 ビット)。3
そして、それを阻止するはずだったチェック機構は、間違った問いを立てていました
ビルド内には、ハードウェアジェネレーターを使用しないファームウェアの出荷を阻止するために特別に記述されたガードが存在していました。ただし、そのガードが確認したのは設定が有効かどうかではなく、設定が存在するかどうかでした。 設定は存在し、そしてオフになっていました。ガードは警告を発さず、ビルドはエラーを報告せず、ファームウェアはそのまま出荷されました。
#ifndef は定義の有無のみをテストします。ボード構成において MICROPY_HW_ENABLE_RNG は 0 として定義され、定義された上で無効化されていたため、#error がトリガーされることはなく、リンカは rng_get() をソフトウェアフォールバックに解決しました。3
#ifndef は定義の有無のみをテストします。ボード構成において MICROPY_HW_ENABLE_RNG は 0 として定義され、定義された上で無効化されていたため、#error がトリガーされることはなく、リンカは rng_get() をソフトウェアフォールバックに解決しました。3
ソースコードから引用した欠陥部分。3
5年間、何の問題もないように見えました
脆弱な復元フレーズは、強固な復元フレーズとまったく同じ見た目をしています。24個の通常の単語、正しいチェックサム、そして正常に動作するデバイス。画面上に警告が表示されることはなく、ビルドでエラーが発生することもありません。 ソースコードは常に公開されていました。それでもそれを確認するには、誰かがその特定のファイルを開く必要がありました。
出力の長さ、非ゼロ性、非重複性は脆弱なPRNGでもすべて満たされるため、通常の簡易テストでは検出できませんでした。
出力の長さ、非ゼロ性、非重複性は脆弱なPRNGでもすべて満たされるため、通常の簡易テストでは検出できませんでした。
そして、誰かが計算を実行しました
彼らは1台のデバイスにも触れることはありませんでした。自分のマシン上で可能性の高いフレーズを生成し、それぞれがどのBitcoinアドレスを生成するかを算出し、それらのアドレスを公開ブロックチェーンと照合しました。残高を持つすべてのアドレスが空にされました。 2022年以来引き出しにしまわれたまま電源が入っていなかったウォレットも、日常的に使用されていたウォレットと同等に露呈していました。
候補はBIP-39/BIP-32を通じてオフラインで導出されます。ネットワークにアクセスするのは最後の残高確認のみであるため、被害者側に事前のシグナルは一切残りません。3
候補はBIP-39/BIP-32を通じてオフラインで導出されます。ネットワークにアクセスするのは最後の残高確認のみであるため、被害者側に事前のシグナルは一切残りません。3
本稿は他社の失敗を非難するものではありません。
Coinkiteはこの欠陥を公表し、技術レポートを公開して修正プログラムを提供しました。COLDCARDはオープンソースであるため、外部の研究者が何が起きたのかを再構築することができました。
推定値に関する1つの注意点:これらはストップウォッチの時間ではなく、現在の前提のもとで攻撃者が直面する総当たり試行の規模を表しています。特定のウォレットが解読されるまでにどれだけの時間がかかるかを断定することは誰にもできません。2
他の何よりも先にお読みください
取るべき対応は、復元フレーズが最初に作成されたときに使用していたデバイスに基づきます。現在手元にあるデバイスではありません。
現在もこの被害が続いているものと想定してください。フレーズは2021年に予測可能な状態で作成され、その手法は現在公開されているため、誰でも同じ検索を実行できます。外部からこの問題を塞ぐパッチは存在せず、攻撃者が手を止める理由もありません。影響を受けている場合、あなたと攻撃者の間にあるのは時間だけであると安全側に倒して仮定してください。
Mk2およびMk3:今すぐコインを移動してください
影響を受ける範囲はファームウェア4.0.1から4.1.9です。バージョン4.2.0で新しいフレーズの生成方法は修正されましたが、すでに存在するフレーズに後からランダム性を追加できるアップデートはありません。信頼できるデバイス上で新しいウォレットを作成し、資金を移動させてください。1
Mk4およびMk5:ファームウェアのバージョンを確認してください
フレーズが5.6.0より古いファームウェア(Edgeビルドの場合は6.6.0Xより古いもの)で作成された場合は、アップデートを行い、アップデート後のファームウェアで新しくブランド独自のウォレットを作成した上で、資金を移動させてください。アップデートを行っただけでは、古いフレーズの安全性は修復されません。1
Q:同様、境界線は1.5.0Qです
1.5.0Q以降(Edgeビルドの場合は6.6.0QX以降)にアップデートし、新しいウォレットを作成し、バックアップを書き留めてテストを行い、少額のテストトランザクションを送信してから残りを移動させてください。1
COLDCARDのファームウェアをアップデートすれば、すでに持っているリカバリーフレーズを修正できますか?
自分のCOLDCARDのリカバリーフレーズがどのファームウェアで作成されたものかを確認する方法を教えてください。
自分のアドレスがこの影響を受けていないか確認するにはどうすればよいですか?
サイコロの目やパスフレーズはCOLDCARDのリカバリーフレーズを保護できますか?
Coinkiteの警告は、影響を受けるすべてのCOLDCARDを網羅していますか?
OneKeyのデバイスに影響はありません
当社が出荷したモデルには、該当するものは1つもありません。当社のファームウェアには libngu、Coinkite、COLDCARD、CKCC への依存関係が一切含まれていないため、問題となったコードパス自体が存在せず、その事実をご自身の目でリポジトリから確認していただけます。現在のハードウェアにおいて、鍵は認定されたセキュアエレメント内の真の乱数生成器から生成されており、メインプロセッサ上のソフトウェアから生成されることはありません。この置き換えこそが今回の障害の本質です。
当社はこの点についても言葉をうのみにしていません。このニュースが報じられた際、Anzen Labは当社の乱数生成の仕組みを最初から最後まで(生成元、呼び出し元、デバイスに到達するバージョンを決定するビルド設定に至るまで)追跡し、確認に使用した正確なファイルを公開しました。12
Anzen Labによる再検証レポートを読む同じことがOneKeyでも 起こり得たのか?
この障害が発生するには、3つの異なる条件が同時に成立する必要がありました。OneKeyではそのいずれも成立しておらず、その3つすべてをご自身で確認していただけます。
OneKeyの乱数は どこから生成されているのか?
EAL 6+認定チップの内部で生成
秘密鍵は、他のすべての処理を実行する汎用プロセッサではなく、耐タンパー性能を備えた専用チップの内部で生成および保管されます。EAL 6+は、決済カードや身分証明書カードで使用される保証レベルです。
自己監視を行う乱数生成
そのチップは実際の物理的ノイズから乱数を生成し、自身の出力を継続的にテストします。もし乱数の動作に異常が生じた場合、チップは静かに処理を続けず、その異常を検知します。
自社システムを再検証
COLDCARDのニュースを受け、Anzen Labは当社の乱数生成の仕組みを最初から最後まで(生成元、実際の呼び出し元、デバイス上のバージョンを決定するビルド設定に至るまで)独自に追跡し、確認に使用した正確なファイルを公開しました。11


すべてのOneKeyに4つの検証。 そのどれもが、他の3つを無条件には信頼しません
いずれか1つが見落とすことはあり得ます。重要なのは、4つすべてが同じ見落としをする確率がきわめて低いということです。COLDCARDでは、誰も検証しなかったビルド設定ひとつで事故が起きました。
実際に検証可能なオープンソース
当社のファームウェアとアプリは GitHub で公開されており、ビルドの再現性が確保されています。つまり、ご自身でコードを再ビルドし、デバイス上で実行されているソフトウェアと完全に一致することを確認できます。これこそが「正しいコードだが間違ったバージョン」という問題を阻止するためのステップです。
GitHub上のOneKey
外部機関による公式な監査
セキュリティ企業の SlowMist が当社を監査し、そのレポートを公開しています。OneKey Pro、Classic 1S、および当社の SDK はそれぞれ個別の評価を受けています。当社のセキュリティプラクティスは ISO/IEC 27001 の認証を取得しており、Pro および Classic 1S のラインはEUが指定した機関によって EN 18031 の認証を受けています。すべてが公開されており、自社評価のみに依存しているものは一切ありません。13
SlowMistの監査サマリーを読む自社製品をハッキングするために雇われた専門チーム
Anzen Lab は、ハードウェア、ファームウェア、アプリケーションのセキュリティエンジニアで構成される当社の社内セキュリティチームであり、外部の研究者と持ち回りで協力しています。彼らの任務は、出荷前の段階で自社製品を含むハードウェアウォレットの安全性を検証することです。今回の件が報じられた際、彼らはOneKey自身の乱数生成の仕組みを最初から最後まで再検証し、確認に使用した正確なファイルを公開しました。11
Anzen Labの分析を読む外部の第三者に報酬を支払い、脆弱性を発見してもらう
BugRap の公開プログラムまたは [email protected] 宛てに直接、誰でもプライベートに脆弱性を報告し、報酬を受け取ることができます。支払額は CVSS スコアに基づく深刻度によって決定されます。私たちの目的は、脆弱性を外部に売却するよりも、当社に報告することの方が得策となる環境を作ることです。15
BugRap上のOneKeyお手元のウォレットをテストする
entro.toolsは、ハードウェアウォレットから出力される実際の乱数を読み取り、標準的な統計的健康性テストを実行するための、無料のオープンソースツールです。ブラウザ内において、USB経由で動作し、どこにもデータがアップロードされることはなく、ファームウェアのアップデートも不要です。
検証可能なウォレットの一覧
外部の人間がデバイスの生の乱数を読み取ることができるかどうかを示しています。これは狭義の1つの側面であり、その下の注記も参照してください。
この件が他社製ウォレットに投げかける疑問
OneKeyはCOLDCARDのエントロピー障害の影響を受けますか?
COLDCARDのエントロピー障害は、どのハードウェアウォレットに影響しますか?
自分のウォレットの乱数のランダム性をテストできますか?
ハードウェアウォレットを信頼できるかどうかは、どのように判断すればよいですか?
複雑なことを、分かるまで説明するのが私たちの仕事です
参考文献
2026年8月6日時点の参照ソース。Coinkite自身の公式アドバイザリと技術レポートを筆頭に、独立したソースコードレベルの分析およびオンチェーンの会計データが含まれています。損失額は上方修正され続けており、Galaxy Researchは8月4日に1,596 BTCを確認し、疑われる損失額は約2,055 BTCに迫ると指摘しています。
- 1. Coinkite · COLDCARD Mk3 Seed Generation Security Advisory
- 2. Coinkite · Technical Deep Dive into the Entropy Issue
- 3. Block Engineering · Predictable RNG Fallback and 32-Bit Reseed in COLDCARD Firmware
- 4. CoinDesk · Bitcoin cold-wallet attack spreads to 4,500 addresses as losses near $89 million
- 5. CoinDesk · Major bitcoin wallet flaw drains 594 BTC in 25-minute sweep
- 6. Crypto Briefing (Galaxy Research) · Galaxy Research identifies 1,367 BTC drained in attacks on Coldcard addresses
- 7. The Crypto Times (Galaxy Research) · Coldcard hack losses hit $100M with 1,596 BTC stolen in ongoing attack
- 8. The Crypto Times (Galaxy Research) · 15 attackers exploit ongoing Coldcard hack as losses approach $130M
- 9. The Hacker News · Coldcard Hardware Wallet Flaw Linked to $70 Million Bitcoin Theft in 41 Minutes
- 10. Bitcoin Magazine · Coinkite Releases Fixed Firmware After Coldcard Bug
- 11. OneKey Anzen Lab · The COLDCARD Entropy Failure: How a Silent RNG Fallback Cost Users $38 Million
- 12. OneKey · Statement: OneKey devices are not affected by this issue
- 13. OneKey · OneKey has passed a security audit by SlowMist — separate reports cover the Pro, the Classic 1S and the SDK
- 14. SlowMist · SlowMist Audit Report — OneKey Pro
- 15. BugRap · OneKey Bug Bounty Program
- 16. entro.tools · Entropy Check — verify your hardware wallet's randomness (device support matrix)








