485 / 691MIX-H

Entropy Mixing

エントロピーの混合

Entropy Mixing は秘密値を生成するために入力を組み合わせます。効果は予測困難性、依存関係、具体的な仕組みに左右され、入力源の数やハッシュ長だけで安全性は決まりません。

エントロピーの混合は、複数の入力を共通の状態や出力に処理することです。投入データ、裏付けのあるエントロピー、その後の決定論的な拡張を区別します。インターフェース名が二つあっても、独立した入力源が二つあるとは限りません。

NIST SP 800-90B は、依存する入力源の結合エントロピーは推定が難しい場合があると指摘しています。パケット到着時刻とディスクアクセス時刻には関連があり得ます。文書化されたモデルなしに個別の推定値を単純に加算できません。 [NIST SP 800-90B — Additional noise sources]

RFC 4086 は単純な混合の例として XOR を使います。独立した一様な入力は結果の一様性を保ちますが、同じ入力のコピーでは X XOR X = 0 になります。依存関係の説明であり、ウォレットの設計手順ではありません。 [RFC 4086 — Mixing and randomness requirements]

強い混合は既存の不確実性を集約できますが、既知の入力の決定論的ハッシュは予測可能なままです。RFC 4086 は混合と拡張を区別します。出力長や既知の定数の追加は、同量の新しいエントロピーの証拠ではありません。 [RFC 4086 — Mixing and randomness requirements]

NIST SP 800-90B は追加ノイズを主入力源に連結し、認められた調整処理に渡すことを許容しますが、この方式では追加エントロピーを計上しません。これは評価上の規則であり、他の入力源が決して役立たないという主張ではありません。 [NIST SP 800-90B — Additional noise sources]

OpenSSL 3.5 の RAND_add() は num バイトを混ぜ、randomness はゼロから num までの範囲でエントロピーをバイト単位で推定します。バッファ長だけでは推定の根拠になりません。標準の生成器は通常、システム由来の入力で自動的に初期化・再シードします。 [OpenSSL 3.5 — RAND_add and FIPS reseeding]

OpenSSL 3.5 の文書によれば、FIPS モードのアプリケーションデータは追加入力であり、信頼されたエントロピー源ではありません。混合しても完全な再シードには数えられません。RAND_add() の呼び出しだけで、その更新は証明できません。 [OpenSSL 3.5 — RAND_add and FIPS reseeding]

RFC 5869 は HKDF-Extract と HKDF-Expand を区別します。前者は入力エントロピーを集約し、後者は必要な長さを導出します。info は出力をアプリケーションの文脈に結び付けますが、良質な初期素材の代わりでも、新しいエントロピーの証明でもありません。 [RFC 5869 — HKDF extraction, expansion and independence]

レビューでは入力の由来、依存関係、攻撃者の能力、具体的な仕組みを確認します。RFC 5869 は独立性とソルトの操作を明示的に扱います。入力源一覧やランダムに見えるかの試験だけでは、入力源の故障後も構造が安全とは証明できません。 [RFC 5869 — HKDF extraction, expansion and independence]

理解を深めるには、この項目とあわせて次もお読みください Cryptographic Entropy, CSPRNG, True Random Number Generator, Seed Generation. 次の項目からも参照されています Dice Roll Entropy, True Random Number Generator.

DOC · 001NIST SP 800-90B — Additional noise sources仕様 ↗DOC · 002RFC 4086 — Mixing and randomness requirements仕様 ↗DOC · 003OpenSSL 3.5 — RAND_add and FIPS reseeding文書 ↗DOC · 004RFC 5869 — HKDF extraction, expansion and independence仕様 ↗
一次資料を優先 · 投資助言ではありません