暗号学でいうエントロピーは、秘密の値を推測する攻撃者にどれだけ不確実性が残っているかを表します。Bitcoin ウォレットでは、鍵の基になる値を作る段階から重要です。文字が複雑に見えるかではなく、実際に何通りの結果があり得たか、それぞれの確率はどうだったか、攻撃者が生成過程をどこまで知っているかが問題になります。
ウォレットを作った日時から秘密を作る場合を考えてみましょう。符号化すると、長く入り組んだ文字列に見えるかもしれません。しかし、攻撃者がおおよその時刻と方法を知っていれば、試す候補は少なくて済む可能性があります。表記を長くしても、必ず攻撃が難しくなるわけではありません。そのため RFC 4086 は、予測できないことと、単にランダムに見えることを区別します。一つの鍵を眺めてもエントロピーは判断できません。作られ方を知る必要があります。 [3]
ビットはデータを記録する基本単位で、値は0か1です。ただし、ビット数だけでは攻撃者に残る不確実性は分かりません。 ウォレットが BIP39 に従って Seed Phrase を作るときは、まずランダムな入力が必要です。その後で入力を単語に変換します。12 語なら入力 128 ビットとチェックサム 4 ビット、24 語なら入力 256 ビットとチェックサム 8 ビットです。チェックサムは一部の書き間違いを見つける助けになりますが、既存の入力から計算するためエントロピーを増やしません。単語を増やしても、不適切に生成されたランダム性は修復できないのです。単語数だけでなく、バックアップがどのように作られたかが重要です。 [4]
ウォレットは、新しいバイト、つまり8ビットのまとまりごとに新たな物理測定をする必要はありません。秘密の初期状態から次々と値を作るアルゴリズム、DRBG という暗号学的生成器を使えます。適切に設計・使用されていれば、状態を知らない人には出力の予測が困難です。それでもアルゴリズムは決定論的で、同じ完全な状態と入力からは同じ続きが得られます。つまり、バイトを多く作っても、新しい物理的エントロピーが自動的に増えるわけではありません。初期入力の質と内部状態の保護の両方が大切です。 [2]
ハッシュ関数はデータから固定長の指紋のような値を計算し、その値はランダムに見えることがあります。しかし、入力を知る人は同じ結果を計算できます。すべて知られている入力が、これで秘密になるわけではありません。conditioning という技術用語は、偏りを減らし、すでにある不確実性を集約できる処理を指します。無から秘密を作るものではありません。複数の情報源のエントロピーも、単純には足せません。互いに関係し、同じ情報を提供している可能性があるからです。 [1] [3]
電子的なノイズ源は故障したり、周囲の条件で振る舞いが変わったりします。そのためNIST SP 800-90Bは、起動時と動作中に、後段の処理に入る前の生のノイズを検査するよう求めています。検査は故障の兆候を探すもので、すべての出力が安全だと証明するものではありません。開発者は供給源の性質、限界、依存関係を理解する必要があります。故障を検出したら、データを使うアプリケーションに通知しなければなりません。故障が継続する場合、供給源は出力を停止する必要があります。「乱数生成器」という名前のチップがあるだけでは不十分です。 [1]
攻撃者が DRBG の内部状態を得ると、その設計によっては後続の出力を予測できます。予測できない状態に戻すには、攻撃者の知らない新しい入力が十分に必要です。そのようなエントロピーの追加を reseeding と呼びます。計算を続けたり、既知の時刻を追加したりするだけでは、この保護は保証されません。また、生成器の修復と既存の資金の安全は分けて考えてください。生成器を回復させても、すでに漏れた鍵は無効になりません。 [2]
統計的なテストは、例えば不審な繰り返しを検出できます。しかし、攻撃者が秘密の入力や出力の予測方法を知っているかどうかを、確実には判定できません。NIST SP 800-22 もこの限界を明示しています。テストは評価の有用な一部ですが、生成器全体の分析に代わるものではありません。ランダムに見える数値で埋まったファイルだけでは、ウォレットの安全性は証明できません。 [5]
初心者がウォレットのエントロピーを手計算する必要はありません。むしろ、生成過程の説明と裏付けを確認することが役立ちます。ランダム性をどこから得て、どう処理し、故障にどう対処し、秘密をどう守るのでしょうか。NIST SP 800-90C は、まさにエントロピー源と DRBG を組み合わせた生成器全体を扱っています。ただし、規格や有名なチップへの言及だけでは、そのウォレットの特定バージョンが正しく使っている証拠にはなりません。重要なのは、実際の実装について確認できる性質です。 [1] [6]
理解を深めるには、この項目とあわせて次もお読みください Entropy Bit, CSPRNG, Dice Roll Entropy, Private Key. 次の項目からも参照されています BIP85, Dice Roll Entropy, Entropy Bit, Brute Force Search Space.