MSTR Cat

ブロックチェーン/レベル II · 仕組み/2.1 暗号技術/レッスン 5

エントロピーとランダム性

見えない基盤:なぜ鍵の強度は、それを生み出したノイズの強さによって決まるのか

用意するものサイコロ一式(任意。物理的なエントロピーを確かめるため)ノート

問い

  1. 真のランダム性は、人間の直感と何が違うのでしょうか?
  2. Linuxディストリビューションのソフトウェアバグは、どのようにして何千もの鍵をブルートフォース攻撃にさらしたのでしょうか?
  3. 12語のフレーズが、ちょうど128ビットのエントロピーにチェックサムを加えたものを表すのはなぜでしょうか?

探究

  1. ビットコインの秘密鍵は、1からn-1までのランダムな整数です。ここでnはsecp256k1曲線の生成点の位数です。この範囲には約1.158 × 10^77通りの値があります。離散対数攻撃に対して128ビットのセキュリティを目標とするには、鍵をこの範囲から一様に選ばなければなりません。選択プロセスが予測可能だったり偏っていたりすると、実効エントロピーが低下し、攻撃者に必要な作業量は理論上の最大値のごく一部にまで減ってしまいます。
  2. エントロピーは不確実性をビット単位で表す尺度です。12語のBIP39ニーモニックは、128ビットの真の乱数と、SHA-256から導出される4ビットのチェックサムをエンコードしています。24語のフレーズは256ビットを持ちます。最後の単語は部分的に誤り検出の役割を果たします。チェックサムが合わないため、ランダムに選んだ単語が有効なフレーズになることはまれです。この構造により、元のエントロピーが本物である限り、気づかれない転記ミスが減ります。
  3. 人間が生み出すランダム性は、弱いことで知られています。人が選ぶフレーズは、見た目よりもはるかに少ないエントロピーしか持ちません。人は馴染みのある単語や引用、パターンを好むからです。攻撃者はこれを悪用し、「ブレインウォレット」と呼ばれる、覚えやすいフレーズから導出された鍵に対して辞書攻撃を行います。Vasek、Bonneauら(2016年)は、攻撃者が可能性の高いフレーズの膨大なリストを試せたため、こうしたウォレットが日常的に、しばしば入金直後に空にされていた実態を記録しています。
  4. ソフトウェア実装の欠陥は、これまで何度も鍵生成を危険にさらしてきました。DebianによるOpenSSLへの変更(2006〜2008年に使用、DSA-1571で公表)では、プロセスIDがほぼ唯一の変動要因となり、鍵の種類とサイズごとに可能な鍵は約32,768通りしかありませんでした。2013年8月には、AndroidのSecureRandomの欠陥によって一部のビットコインウォレットが署名ノンスを再利用し、秘密鍵が露出して盗難が発生しました。これらの事例は、エントロピー源が暗号論的に安全で、システムの状態から独立していなければならないことを示しています。
  5. 2023年にUncipheredが公表した「Randstorm」により、BitcoinJS時代(およそ2011〜2015年)のウェブウォレットが弱い乱数生成器を使っており、ユーザーが鍵復元攻撃にさらされていたことが明らかになりました。現代のハードウェアウォレットは、初期化時に複数の内部ソースからエントロピーを収集し、生成されたニーモニックを1語ずつ表示します。書き留めたこれらの単語が資金に対する唯一の権限となり、失えばアクセスは永久に失われます。
  6. 良質なエントロピーは、OSの暗号論的乱数生成器(CSPRNG)、ハードウェアRNG、あるいはサイコロ振りのような物理的プロセス(偏りには注意が必要)から得られます。CSPRNGはシステムイベントやハードウェアセンサーのノイズを混ぜ合わせ、予測不可能なビットを生成します。出力が1からn−1の範囲内であれば有効な秘密鍵となり、そうでなければ生成器は新しい乱数データで再試行します。このループにより、曲線の位数全体にわたる一様な分布が保証されます。

重要な事実

  • ビットコインの秘密鍵は128ビットのセキュリティを目標としており、約1.158 × 10^77通りの値から一様に選択する必要があります。
  • 12語のBIP39フレーズは128ビットのエントロピーと4ビットのチェックサムをエンコードし、24語では256ビットをエンコードします。
  • DebianのOpenSSLバグ(2006〜2008年、DSA-1571)により、鍵空間は鍵の種類とサイズごとに約32,768通りまで縮小しました。
  • 2013年8月に明らかになったAndroidのSecureRandomの脆弱性により、一部のウォレットで署名用ノンスが再利用され、鍵が盗まれる危険が生じました。
  • 「Randstorm」(2023年公表)は、およそ2011〜2015年のBitcoinJS時代のウェブウォレットにおける弱いランダム性を特定しました。
  • 覚えやすいフレーズから導出された鍵(「ブレインウォレット」)は、攻撃者によって日常的に発見され、空にされていました。

演習 九・六・三・一

9集めるデジタルまたは物理的な乱数源を9つ挙げてください。それぞれの仕組み(例:システムクロックのジッター、熱雑音)と、関連する既知の歴史的脆弱性を記録してください。
6まとめる9つをエントロピーの質に基づいて6つのカテゴリーに分類してください:暗号論的に安全なCSPRNG、ハードウェアRNG、物理的プロセス、人間による生成、欠陥のあるソフトウェア実装、その他。
3絞り込む6つを、乱数源がビットコインの秘密鍵の生成に適しているかどうかを評価するための3つの基準に絞り込んでください。
1結晶化する曲線の位数nの全域にわたる一様分布が、鍵のセキュリティにとって譲れない条件である理由を、1文で説明してください。

事実確認

日付、数字、主張は、下記に記載された公表資料と照合して確認しました。

インタラクティブ版で開く →

EN PT ES ZH KO RU DE FR MS