Ledgerのリカバリーフレーズはどう作られるのか ── COLDCARD問題後に公式Xと技術資料を確認してみた

※この記事は2026年8月6日時点で確認できた情報を基にしている。製品仕様やセキュリティ情報は今後更新される可能性がある。

COLDCARDの乱数生成不備は、ハードウェアウォレットによる自己保管の安全性を改めて考えさせる問題となった。

私はこの問題を、他社製品だけのトラブルとして片付けることができなかった。

COLDCARDで問題になったのは、シードフレーズ(=リカバリーフレーズ)を作るための乱数生成だった。

利用者の画面には、一見すると何の異常もない12個や24個の英単語が表示されていた。

しかし、その単語の元になる数字が攻撃者に予測されやすい状態だったため、端末に触れなくてもリカバリーフレーズの候補を探せる可能性が生まれた。

ハードウェアウォレットがオフラインでも、同じ秘密鍵を外部で再現されれば、ビットコインを守れない。

この問題を知って、私の中に一つの疑問が生まれた。

「私がLedgerデバイスから受け取った24個のリカバリーフレーズは、どのように作られたのか」

私は現在、Ledgerデバイスを使ってビットコインを自己保管している。

Ledger公式は、COLDCARD問題の発覚後、Xや公式ブログで何度も説明を出している。

しかし、私はLedgerを使っているからこそ、Ledger公式による「うちは問題なし」という趣旨の声明だけで安心することはできなかった。

Ledgerは何を根拠に安全性を説明しているのか。

第三者による検証はあるのか。

利用者自身に確認できることと、確認できないことは何か。

初心者である私なりに、一つずつ確認してみることにした。

結論を先に書く:Ledgerの乱数生成設計はCOLDCARDとは仕組みが異なる

現時点で確認できた内容を先にまとめると、次のようになる。

  • Ledgerは、秘密情報を守る専用チップの中で乱数を作る設計だと説明している
  • その乱数を基に、24個のリカバリーフレーズを生成する
  • 現在判明しているCOLDCARDの不具合とは、乱数生成の仕組みが異なる
  • Ledgerの一部製品では、乱数生成を含むセキュリティ機能が第三者機関の評価を受けている
  • ただし、認証や専用チップがあっても、将来の不具合まで完全に否定できるわけではない
  • 2026年8月6日時点で、今回の問題を理由にLedger利用者へリカバリーフレーズの作り直しを求める公式勧告は出ていない


私は、今回の調査によってLedgerを絶対に安全だと思ったわけではない。

それでも、Ledgerが公表している乱数生成の設計は、今回COLDCARDで問題になった処理経路とは異なる。

また、一部のLedger製品では、乱数生成を含むセキュリティ機能が第三者評価の対象になっている。

そもそも「乱数」とは何か

ここでいう乱数とは、簡単にいえば「他人には予測できない数字」のことである。

ハードウェアウォレットは、最初に非常に大きな数字を一つ作る。

その数字を人間が記録しやすいように、24個の英単語へ変換したものがリカバリーフレーズである。

つまり、24個の単語を直接適当に選んでいるわけではない。

最初に作られた数字が安全性の土台になる。

仮に24個の単語が毎回違っていても、元になる数字の候補が少なければ、攻撃者に順番に試される可能性がある。

そのため重要なのは、単語の見た目ではない。

その単語の元になった数字を、攻撃者が予測できるかどうかである。

COLDCARD問題では、画面に正常な単語が表示されていたにもかかわらず、その前段階にある乱数生成に問題があった。

Ledgerは専用チップの中で乱数を作る

Ledgerの公式資料によると、Ledgerデバイス自身で新しいウォレットを作る場合、Secure Element内のTRNGを使って256ビットの乱数を生成する。

初めて聞くと分かりにくいので、言葉を分けて考える。

Secure Elementとは

Secure Elementとは、秘密情報を安全に保管するための専用チップである。

クレジットカードや電子パスポートなどでも使われる種類の技術で、普通のスマホやパソコンの記憶領域とは分けて秘密情報を扱う。

Ledgerの公表設計では、この専用チップが

  • 乱数を作る
  • シードを安全に保護する
  • シードから各暗号資産の秘密鍵を導き出す
  • 取引へ署名する

といった重要な処理を担当する。

Ledger Nano S Plusの第三者評価資料でも、シード生成や秘密鍵の導出、取引への署名をSecure Elementが担当する設計が示されている。

TRNGとは

TRNGは「True Random Number Generator」の略である。

日本語では真性乱数生成器などと呼ばれる。

計算式だけで数字を作るのではなく、チップ内部の物理的な揺らぎやノイズを利用して、予測しにくい数字を作る装置である。

イメージとしては、プログラムが決められた手順で数字を並べるのではなく、電子的なサイコロを振るようなものに近い。

Ledgerは、Secure Elementに搭載されたTRNGから256ビットの乱数を作ると説明している。

256ビットの乱数が24個の単語になる

Ledgerが公表している流れは、次のようになっている。

  1. Secure Element内で256ビットの乱数を作る
  2. 書き間違いなどを一部検知するための確認用情報を追加する
  3. 数字を24個のグループに分ける
  4. それぞれをBIP39の英単語へ置き換える


BIP39とは、乱数を12個や24個の単語として記録するために、多くのウォレットで使われている共通規格である。

難しい計算方法を覚える必要はない。

私たち初心者が理解しておくべきなのは、24個の単語は、巨大な数字を人間が記録しやすい形へ置き換えたものという点だ。

Ledgerでは、元になる数字の候補は2の256乗通りになる。

あまりにも大きな数なので、正しく乱数が作られていればすべての候補を順番に試すことは現実的ではない。

ただし、ここには重要な前提がある。

「本当に予測できない256ビットの乱数が作られていること」である。

BIP39を使って24単語を表示しているだけでは安全性は決まらない。

元になる乱数が弱ければ、見た目は正常な24単語でも安全とは限らない。

COLDCARD問題とは何が違うのか

COLDCARDでは、本来使う予定だったハードウェア乱数生成器が存在していた。

しかし、問題のあるファームウェアでは、シード生成処理が意図した乱数生成器へ正しくつながらず、別の疑似乱数処理が使われていたと分析されている。

つまり、良い乱数生成器が搭載されているかだけでなく、実際のシード生成処理が、その乱数生成器を正しく使っているかも重要になる。

Ledgerは、Secure Element内でTRNGによる乱数生成、暗号学的な後処理、シードの生成と保管を行うと説明している。

Ledger公式Xと公式ブログも、Ledgerは今回のCOLDCARD勧告の影響を受けておらず、24単語ごとにSecure Element内で256ビットの乱数を生成すると表明している。

現時点で公開されている設計は、今回COLDCARDで問題になった仕組みとは異なる。

ただし、仕組みが異なることと、Ledgerに将来も不具合が起きないことは同じではない。

Ledger CTOも、認証や検証があるからといって、Ledgerが不具合から完全に免れるわけではないと認めている。

認証名を暗記する必要はない

Ledger公式Xや公式ブログには、AIS-31、Common Criteria、CSPNといった難しい言葉が並んでいる。

私たち初心者が認証名をすべて暗記する必要はないと思う。

重要なのは、Ledgerだけで安全だと主張しているのではなく、外部の機関が一定の範囲を評価しているという点である。

AIS-31

AIS-31は、乱数生成器を評価するための基準である。

本当に予測しにくい物理現象を使っているか、乱数に異常がないかなどを確認する。

Ledger Nano S Plusの評価資料では、TRNGがAIS-31の方法で評価され、ソフトウェアによる追加処理も行われていると記載されている。

Common Criteria

Common Criteriaは、IT製品のセキュリティを国際的に共通する基準で評価する仕組みである。

EALは「Evaluation Assurance Level」の略で、どの程度厳密な設計資料、試験、検証を求めたかを示す評価保証の段階である。数字が高いほど評価で求められる保証要件は厳しくなるが、製品に脆弱性が一切ないことを意味するものではない。

CSPN

CSPNは、フランス政府のサイバーセキュリティ機関ANSSIが行う製品評価である。

Ledger Nano S Plusの特定ファームウェアに対する評価では、

  • 乱数生成
  • 正規品であることを確認する仕組み
  • PINによる本人確認
  • ファームウェアやアプリを安全に更新する仕組み

が評価対象に含まれている。

ただし、ここは誤解しない方がよい。

この認証は、すべてのLedger製品とすべてのファームウェアを永久に保証するものではない。

特定の製品と特定のバージョンを、決められた範囲で評価したものである。

ANSSI自身も、認証によって製品に悪用可能な脆弱性が一切ないことを保証するものではないと明記している。

私はLedger Nano Gen5を使っているが、今回確認したNano S PlusのCSPN資料をそのままNano Gen5の認証として扱うことはできない。

「Ledger製品だからすべて同じ認証を受けている」と考えない方が正確である。

ても、Ledgerやチップメーカー、評価機関への信頼を完全になくしたわけではない。

Recovery Checkで分かること、分からないこと

Ledgerには、手元に記録したリカバリーフレーズ24単語が、現在のデバイスに設定されているものと一致するかを確認するRecovery Checkがある。

これは、リカバリーフレーズを書き間違えていないか確認するための機能である。

しかし、Recovery Checkを通過しても、

  • 乱数が本当に十分だったか
  • 意図したTRNGが使われたか
  • シード生成経路に未知の不具合がなかったか

までは確認できない。

Recovery Checkの役割は、手元に残した24単語が正しいか確認することであり、24単語を作った乱数の品質を検査することではない。

Genuine Checkで分かること、分からないこと

Ledgerには、接続したデバイスが正規のLedger製品かを確認するGenuine Checkもある。

これは、正規のSecure Elementと正規のLedger OSを搭載したLedgerデバイスであることを暗号学的に確認するための機能である。

偽物や非正規のソフトウェアを検出する助けにはなるが、端末に加えられたあらゆる物理的な細工や、内部の未知の不具合まで否定する機能ではない。

Recovery Keyへ保存しても乱数は強くならない

私は、ウォレット復元手段の1つとしてLedger Recovery Keyも利用している。

Recovery Keyは、すでに作られたリカバリーフレーズを、PINで保護された別のカードへバックアップするための道具である。

Recovery Keyへ保存しても、元の乱数が強くなるわけではない。

仮に元のシードが弱い乱数から作られていた場合、Recovery Keyへコピーしても別の安全なシードに変わるわけではない。

紙や金属製バックアップも同じである。

バックアップには、リカバリーフレーズの紛失や破損に備えるという役割がある。

一方で、シード生成時の乱数を強くする役割はない。

この二つは分けて考える必要がある。

別のウォレットで作ったシードをLedgerへ入れた場合

LedgerのTRNGが関係するのは、Ledgerデバイス自身で新しいリカバリーフレーズを生成した場合である。

別のハードウェアウォレットやソフトウェアウォレットで作った24単語をLedgerへ復元入力しても、元の乱数は変わらない。

たとえば、影響を受けたCOLDCARDで作ったシードをLedgerへ入力しても、そのシードが安全になるわけではない。

Ledgerの専用チップ内で秘密鍵を管理できるようにはなるが、攻撃者が元のシードを外部から推測できる危険は残る。

必要なのは、古いシードをLedgerへ移すことではない。

問題のない環境で新しいシードを作り、新しい受け取りアドレスへビットコインを送ることである。

Ledger利用者はシードを作り直すべきなのか

2026年8月6日時点で、今回のCOLDCARD問題だけを理由に、Ledgerデバイス自身で生成したリカバリーフレーズを作り直すよう求める公式勧告は出ていない。

Ledgerは、今回の問題の影響を受けていないと説明している。

したがって、「Ledgerも危険かもしれないから、今すぐ全資産を移すべきだ」とは言えない。

不安だけを理由に急いでシードを作り直すと、

  • リカバリーフレーズの記録ミス
  • 受け取りアドレスの確認ミス
  • 古いバックアップの早すぎる破棄
  • 全額を一度に送ることによる送金ミス

といった別の危険が生まれる。

一方で、次のような場合は、現在使っているシードの生成元を確認した方がよい。

  • Ledger以外のウォレットで生成した
  • どの機器やアプリで作ったか分からない
  • Webサイト上のツールで作った
  • 第三者から渡された24単語を使っている
  • 初期設定済みの状態で届いた端末の24単語を使っている


特に、他人から渡された24単語を使ってはいけない。

Ledgerデバイスは、自分で未設定の状態から初期設定し、リカバリーフレーズがデバイスの画面上に表示されたことを確認する必要がある。

私の判断:絶対安全ではなく、確認できる仕組みで選ぶ

Ledgerは、現時点で分かっているCOLDCARDの不具合とは乱数生成の仕組みが異なる。

これは、私がLedgerを使い続けるうえでの安心材料になる。

しかし、だからLedgerは絶対に安全とは思わない。

利用者にはSecure Elementの内部を直接確認できない。

第三者認証も、特定の製品とバージョンを一定の範囲で評価したものである。

まだ発見されていない不具合が存在しないことまで証明するものではない。

ハードウェアウォレットを使うことは、他人を一切信用しなくなることではなかった。

取引所へ任せていたリスクを減らし、その代わりに、

  • 自分自身
  • ハードウェア
  • ファームウェア
  • メーカー
  • チップメーカー
  • 評価機関

へ信頼を分け直すことである。

私は、絶対に事故が起きない製品を探すことはできない。

それでも、

  • シードをどこで作るのか
  • どのような乱数生成器を使うのか
  • 秘密情報をどこで管理するのか
  • 外部の評価を受けているのか
  • 問題が起きたときに説明を出すのか

を確認し、より納得できる製品を選ぶことはできる。

私は今回、Ledgerを使い続ける判断を変えなかった。

Ledgerが絶対に安全だと証明されたからではない。

現在確認できる設計や第三者評価を総合すると、私が自己保管を任せる道具として納得できると判断したからである。

COLDCARD問題を知る前より、ハードウェアウォレットを無条件には信用できなくなった。

しかし、すべてのハードウェアウォレットが同じだとも思わなくなった。

「オフラインだから安全」という言葉だけではなく、「シードがどこで作られ、どこで守られ、誰が何を検証しているのか」まで見る。

それが、今回の問題後に私が持つようになった新しい判断基準である。

※この記事は、Ledgerを含む特定のハードウェアウォレットの安全性を保証するものではない。製品仕様、ファームウェア、認証状況、セキュリティ情報は変更される可能性があるため、必ず最新の公式情報も確認してほしい。

※当サイトは暗号資産の購入を勧めるものではない。暗号資産の購入、送金、保管、ウォレットの移行は、必ず自分で確認して自己責任で行ってほしい。

error: Content is protected !!