秘密鍵生成におけるエントロピーソースの重要性

Author logo
Patrick Dike-Ndulue
Post image

ビットコインの秘密鍵が256ビットの数字であることをご存じですか?つまり、2の256乗もの組み合わせが存在し、その数は観測可能な宇宙に存在する原子の総数をもはるかに超えます。
秘密鍵は暗号資産のセキュリティの要であり、デジタル資産を守る「マスターパスワード」とも言えます。その安全性はランダム性、つまりエントロピーに大きく依存しており、このエントロピーはビット単位で測定され、システムのランダムさや不確実性の度合いを示します。

ランダム性の重要性を実感できる例として、エントロピーが不十分な秘密鍵生成が深刻な脆弱性やハッキングの原因となった事例があります。2024年には、秘密鍵の漏洩により2億3900万ドル以上の損失が発生し、高品質なエントロピーによる鍵生成の重要性が浮き彫りになりました。

では、ビットコインの秘密鍵が単なる数字だとしたら、スーパーコンピューターで総当たり攻撃(ブルートフォース)にどれほどの時間がかかるのでしょうか?この記事の最後でその答えを紹介します。

エントロピーとは?

エントロピーとは、ランダム性や予測不可能性の度合いを示す指標であり、安全な暗号鍵を生成するうえで不可欠です。この概念は情報理論に由来し、システム内の不確実性を定量化します。簡単に言えば、予測が難しいほどエントロピーは高くなります。

仮想通貨の秘密鍵では、高いエントロピーが不可欠です。これにより、鍵を推測したり総当たりで解読したりすることがほぼ不可能になります。ランダム性は、ハードウェアイベントや環境ノイズ、マウスの動きやキーボード操作など、さまざまな要素から得られます。OSはこうした予測不能なイベントを集約し、真にランダムな数値を生成して安全な秘密鍵の基盤とします。

十分なエントロピーがなければ、生成された鍵は予測されやすくなり、攻撃のリスクが高まります。たとえば、エントロピーソースに問題があると、同じような値が繰り返し生成され、攻撃者が秘密鍵を推測・再現できてしまう可能性があります。

このランダム性は極めて重要なため、クラウドプラットフォームや仮想マシンのような高度なシステムでも、暗号処理のために専用ハードウェアで高品質なエントロピーを確保しています。

エントロピーはどのように機能する?

ハードウェアウォレットでは、安全な秘密鍵を生成するためにエントロピーが極めて重要です。仕組みは以下の通りです。

エントロピーソース

Tangem Walletのようなハードウェアウォレットには、専用のハードウェア乱数生成器(HRNG)が搭載されています。これらのデバイスは、電子ノイズや熱変動などの物理現象を測定してランダム性を生み出します。この生のエントロピーが、予測困難な秘密鍵を作るために不可欠です。
一部のハードウェアウォレットでは、サイコロを振るなど、ユーザーが手動でランダムデータを入力してエントロピーに加えることもできます。ユーザー由来のエントロピーとハードウェア由来のエントロピーを混ぜても、エントロピーの度合いに大きな違いはない場合もありますが、楽しみの一つとして取り入れられています。

鍵の生成

十分なエントロピーが集まると、ウォレットはそれを使って秘密鍵を生成します。この過程では、SHA-256のような暗号アルゴリズムと組み合わせて256ビットの鍵を作ります。多くのハードウェアウォレットでは、BIP39規格に基づき、エントロピーから12〜24語のニーモニックフレーズ(復元用の単語リスト)を生成します。このフレーズは、必要に応じて秘密鍵を復元するために利用できます。

プロセスのセキュリティ

ウォレットのファームウェアは、エントロピーが十分に混ぜ合わされ、予測されにくい状態であることを保証します。その後、秘密鍵はデバイス内の耐タンパー環境に安全に保存されます。このため、多くのハードウェアウォレットにはCC認証済みセキュアエレメントが搭載されています。Tangemのファームウェアも、Kudelski SecurityやRiscureといった第三者機関による2度の厳格な監査を受けています。
一般的に、ハードウェアウォレットはエントロピー生成と鍵の保存プロセスを他の処理から分離し、マルウェアや外部脅威によるリスクを最小限に抑えています。

バックアップと復元

エントロピーから生成されたニーモニックフレーズは紙などに書き留めて安全に保管できます。このフレーズは、デバイスの紛失や故障時にウォレットを復元するために不可欠です。フレーズ自体が鍵生成に使われたエントロピーを含んでいるため、安全なバックアップ手段となります。

ハードウェアウォレットは高品質なエントロピーに依存し、生成される秘密鍵の安全性と攻撃耐性を確保しています。これが仮想通貨の保管方法として非常に安全とされる理由です。

エントロピーが重要な理由 

エントロピーとリカバリーフレーズは形式が異なるだけで同じ情報を含むため、エントロピーもリカバリーフレーズと同じくらい厳重に管理する必要があります。繰り返しになりますが、エントロピーにアクセスできる人は、あなたのウォレット全体にアクセスできてしまいます!

シードフレーズがすべての秘密鍵やアカウントへのアクセスを許すのと同様に、エントロピーも同じ役割を果たします。そのため、エントロピーはできる限りランダムで、推測困難であることがセキュリティ上不可欠です。

もし誰かにエントロピーを推測されて資金にアクセスされたら困りますよね。だからこそ、この数字は推測が極めて困難でなければなりません。シーケンスを当てたり、同じ組み合わせに2度遭遇することが統計的に不可能なほど、十分にランダムである必要があります。

エントロピーが簡単に推測できる場合、ハッカーに悪用されて資金を奪われるリスクが高まります。したがって、こうした点を重視する仮想通貨ウォレットを選ぶことが非常に重要です。
 

エントロピーとシードフレーズの理解

シードフレーズのランダム性は、セキュリティ維持の要です。単語を自分で選んだり、予測しやすいパターンを使ったりすると、ウォレットの防御力が大きく低下します。Tangemが採用するエントロピーベースの方式は、さまざまな仮想通貨攻撃にも耐えうる十分なランダム性を確保しています。

Tangemは安全なエントロピー生成のためのツールを提供しますが、シードフレーズの管理はご自身の責任です。この情報は誰にも、Tangemのスタッフにも絶対に教えないでください。シードフレーズはデジタル資産の鍵であり、その秘密性がウォレットの安全性を守ります。
 

Trust Walletの脆弱性:強力なエントロピーの重要性

仮想通貨ウォレットを選ぶ際は、そのウォレットがどのようにランダム性を生成しているかを重視する必要があります。2022年に発生したTrust Walletのセキュリティ侵害は、ウォレットのエントロピー生成が予測しやすかったことが主な原因でした。

SecBitは、この脆弱性についてブログ記事Trust Wallet's Fomo3D Summer: Fresh Discovery of Low Entropy Flaw From 2018で詳しく解説していますが、ここでは要点をまとめます。

Trust WalletのiOS版は、BIP39のニーモニックワード生成にtrezor-cryptoライブラリを利用していました。このライブラリには、本番環境で使用すべきでないサンプルコードが含まれており、実際の運用で使わないよう警告も記載されていました。

  1. コードは主にrandom32()とrandom_buffer()の2つの部分から成ります。
  2. random32():
    - この部分は乱数を生成しますが、安全性が十分ではありません。
    - 乱数生成の開始に現在時刻を利用します。
    - 問題は、生成時刻がおおよそ分かれば推測できてしまう点です。
    - さらに、2人が同じ秒に生成した場合、同じ「乱数」が得られてしまいます。
  3. random_buffer():
    - こちらはランダムなバイト列(データ単位)で領域を埋めます。
    - random32()を使うため、同じセキュリティ上の問題を抱えています。
  4. 根本的な問題:
    - このコードは、ユーザーの仮想通貨ウォレットにアクセスするシードフレーズを生成するのに使われていました。
      - ランダム性が真にランダムでなかったため、ハッカーがこれらのフレーズを推測するのが本来よりも容易になっていました。
      - 数百万通りの中から当てるのではなく、生成時刻に基づいて数千通りに絞り込めてしまいました。
  5. ミス:
      - Trust Walletはこの警告を無視してコードを使用しました。
      - その結果、ユーザーウォレットのフレーズ生成に使われたエントロピーが本来よりも再現しやすくなってしまいました。

Trust Walletで発生した最近のセキュリティ事故は、強力なエントロピー生成の重要性を改めて示しています。Trust Walletは問題解決のため、被害ユーザーに補償を行いました。

Tangem Walletのエントロピー生成

Tangem Walletは、エントロピー生成プロセスから暗号資産のセキュリティを強化しています。ウォレットには、独立した専門家によって徹底的に検証された認定済みのTrue Random Number Generatorが搭載されており、生成される数字は予測困難で、資産を攻撃から守ります。

ビットコインの秘密鍵を総当たりで解読するのにかかる時間は?

この疑問に答えるため、プロセスを分解して規模感を考えてみましょう。

ビットコインの秘密鍵は確かに単なる数字ですが、その大きさは桁違いです。具体的には256ビットの数字で、2の256乗通りの秘密鍵が存在します。

仮に現在最強のスーパーコンピューターを使っても、ビットコインの秘密鍵を総当たりで解読するには途方もない時間がかかります。宇宙の年齢をはるかに超えるスケールです。

 

仮にスーパーコンピューターが1秒間に1兆(10^12)個の鍵をチェックできたとしても、1つの秘密鍵を見つけるのに平均3.67 x 10^57年かかります。ちなみに、宇宙の年齢は約138億年(1.38 × 10^10年)です。

つまり、ビットコインの秘密鍵を総当たりで解読するのにかかる時間は、宇宙の年齢の約1.33 × 10^47倍にもなります。

私たちがこの若くて水に満ちた地球で、ここまでの技術を実現していることは驚くべきことです。

Author logo
著者 Patrick Dike-Ndulue

Senior editor covering crypto, onchain equities, and technology.

Author logo
レビュー担当者 Rukkayah Jigam

Writer & editor covering digital assets and product updates.