エントロピーは、TCPシーケンス番号や暗号化キー/パラメータ生成など、多くのセキュリティ機能にとって重要です。私が理解することは、cat /dev/random
悪意のあるスクリプトや誤って書かれたスクリプトに隠れるなどの簡単な操作でエントロピープールが枯渇することです。これは、攻撃者が権限のないローカルアカウントを管理し、システムに深く侵入しようとすることによっても実行できます。
ほとんどのシステムは暗号化されたセキュリティ疑似数値ジェネレータ(擬似数値ジェネレータ/dev/urandom
)を代わりに使用しているため、/dev/random
エントロピープールを枯渇させるとセキュリティにどのような影響があるのか疑問に思います。たとえば、新しく生成されたSSL証明書が低いエントロピープールで生成された場合、秘密鍵を推測する方が簡単ですか?私はそれについて読みましたman 4 random
が、システムがエントロピーをどのように処理するのかはまだわかりません。
答え1
この質問の誤りは、「エントロピーの枯渇」のようなものがないことです。 (何らかの意味で宇宙があなたが生きることができるすべてのエントロピーを消費するまで、エントロピーはなくなりません。)
暗号化用に設計されたランダムジェネレータには、エントロピーソースとエントロピーソースを「平滑化」する方法の2つの要素が必要です。エントロピーの源はいいえランダムビットのソースとして削除する偏見があります。無条件のエントロピーソースは暗号化には適していません。コンディショニング(つまり、エントロピーソースを均一なランダムビットソースに変換)は、次のように実行されます。暗号学的に安全な擬似乱数ジェネレータ(減らしてCSPRNG)。 CSPRNGに十分なエントロピーが注入されると、宇宙で少なくとも数回の寿命を達成できます。
Linux は/dev/urandom
定期的に追加エントロピーを再シードする CSPRNG を使用します。定期的に再シードすると、システム部品が損傷し、任意の方法でランダムジェネレータの内部状態が漏れるのを防ぎます。
Linux は/dev/random
定期的に追加エントロピーを再シードする CSPRNG を使用します。 (慣れ親しんでいますか?)Linuxは、CSPRNGアルゴリズムが深刻に破損し、エントロピーが急速に漏れてブロックされると仮定する内部計算を維持します/dev/random
。ただし、CSPRNGの背後にある暗号通貨を信頼しないと、/dev/random
最初に提供された暗号通貨や使用する他の暗号通貨も信頼できません。
したがって、エントロピーが不足しても、システムが何らかの方法でより脆弱になるわけではありません。
Linuxの唯一のリスク/dev/urandom
は、予測可能な出力を提供することです。種をきちんと振りかける前に。 「一般」デスクトップまたはサーバーシステムで日常的に使用している場合は、エントロピープールをディスクに保持するため、これは問題ではありません。新しくインストールされたシステムがある場合、または読み取り専用メディアからライブシステムが起動している場合、これは心配です。 (リアルタイムシステムは悪い長期キーが生成される場所! ) システムに十分なエントロピーがあると永遠に保たれます。
プロの暗号学者がこの問題についてどのように考えているのかを知りたい場合は、次を読んでください。トーマス・ボニンまたはトーマスフン。
^ 窒素エントロピービット数は2です。窒素それを調べるために数学をしてください。毎秒10億ビットを生成し、適切な安全レベルである128ビットから始めると、1つの宇宙生命は限界よりはるかに低い296ビットの約1兆ビットを生成する時間を提供します。
答え2
いいえ、常にランダムなビットを読み取っても、/dev/{u,}random}
システムの他の部分を攻撃する方が簡単になるわけではありません。 (つまり、攻撃者が出力からジェネレータの内部状態を予測できない限り、誰もそうすることはできないと見なされます。)
/dev/{,u}random
デフォルトでは、同じ後続の乱数ジェネレータがシードされている場合は、常に十分な「ランダム性」を使用できます。デバイスから多数のランダムビットを読み取っても、システム擬似数値ジェネレータの内部状態は変わらないため、生成された数値の品質が低下します。
引用するhttp://2uo.de/myths-about-urandom@roaimaはコメントで次のように言及しました。
エントロピーが低くなったらどうすればいいですか?
それは問題ではありません。
基本的な暗号化コンポーネントの設計により、まず十分なランダム性(別名エントロピー)がある限り、攻撃者は結果を予測することができません。 「十分」の一般的な下限はおそらく256ビットです。もう。