追加読書

追加読書

私のシステムは/var/lib/systemd/random-seed起動時にそれをエントロピープールにロードし、新しいものと交換します。閉じるとエントロピーが保存されます。私はその間にそれを変えたものを見つけることができませんでした。

停電中にのみシャットダウンされるコンピュータがある場合、収集されたエントロピーはディスクに書き込まれません。そのため、停電復旧時にエントロピーを収集するのに時間がかかります。

通常の操作中(たとえば1日1回)、エントロピーがディスクに保存されないのはなぜですか?

答え1

これを「エントロピー」と考えることを止めるのに役立ちます。これはエントロピーとは何の関係もなく、エントロピーに関して疑似乱数生成を誤って考えるのは、このトピックに関する多くの誤解の原因です。だから「エントロピー」について考えないでください。

名前が示すように、これは種子擬似乱数ジェネレータ

PRNGについて覚えておくべきことの1つランダムではない。それらは完全に決定的です。初期入力値と特定のPRNGアルゴリズムを知っている場合は、将来の各「ランダム」出力値を決定できます。

この場合、アルゴリズムはよく知られています。結局、オープンソースカーネルの一部としてリリースされます。したがって、ランダム性の核心は種子。提供される「任意」レベルは次のとおりです。予測不可能、1つの出力から次の出力へ。アルゴリズムと以前の出力はわかりますが、シードは不明です。到達できない難しさ次のランダム出力が何であるかを予測します。 (これはPRNGの正式な定義でも完全な定義でもありません。暗号化で安全;ただし、この回答の目的のために限られた近似として使用されます。 )

これがLinuxで多く議論されている問題の根本的な原因です。/dev/urandom、ここでは簡単に説明します。ブートローダでは、シードは次のとおりです。返品誰もが知っているように。ランダム出力は完全に予測可能です。~までPRNGは再シーディングつまり、オペレーティングシステムのインストールランタイムに固有の(またはできるだけ近い)新しいシードが初めて提供されます。

/var/lib/systemd/random-seed(システムOS上)、/var/lib/urandom/random-seed(システムではなくLinux OS上)、および/var/db/entropy-file(FreeBSD / TrueOS上)、次回起動時に最初のリシッド値として適用できるリシド値をできるだけ早く保存してください。

重要なことは、一度ブートローダで使用するとまもなく他のシード値に置き換えてください。推測できるように、システムが完全にシャットダウンしないと、以前のブートローダと同じシード値で再起動されません。

だから変えてください〜サイ起動して閉じるのはかなり意味がありません。変わらなければならないすぐに読んで使用してください、そして交換秘密このオペレーティングシステムの実行のライフサイクル内で。ただし、その値が何らかの方法で公開されない限り、その間繰り返し更新する必要はありません。

シード値は蓄積された「エントロピー」ではありません。これは秘密。次のPRNG実行のシード値。 Trusted Computing Foundationの外部に露出してはならず、予測するのが難しいはずです。皮肉なことは予測できないこれは実際にPRNG自体の出力であり、実際にsystemd-random-seed次の起動時に次のシード値として使用するために再シードされたPRNGの出力を取得するなどのツールの場合です。

したがって、シャットダウン時に変更する理由は、OSの実行中に次のシード値が公開された場合、シャットダウン時にそれを置き換えると、攻撃者が次にPRNGが何であるかがわからなくなることです。

これは予測可能であるため露出を含む。理論的には、各シードが以前のシードに対してPRNGをすぐに実行して得られたことがわかっている場合は、どのシードを知っている場合でも、すべての後続のシードを決定できます。幸いPRNGは返品定期的にもっと遠くオペレーティング・システムが稼働している場合は、再シードしてください。その他シードソース、したがってPRNG出力から取得され、シャットダウン時に保存される次のシード値は、オペレーティングシステムで現在実行されているブートローダで使用されている以前のシードを知っていても予測できません。

この機密性は、中央公開イメージからシステムを「複製」するときにシステムを複製しないまで拡張されます。

要約すると、次のシード値は次のようになります。いいえ「エントロピー」。意味のある方法で蓄積されないため、どのような方法でもビルドしたり、実行時に「リフレッシュ」する必要はありません。種子の順序を確保するために、使用後すぐに交換する必要があります。彼ら自身予測不可能なシーケンス、そうでなければ、次のシードはPRNGの完全に予測可能な出力であり、最後のシードはPRNGが再シードされた後のある時点でPRNG出力で一度更新される必要があります。第二これは、オペレーティングシステムが起動とシャットダウンの間で独自に再シードを実行するため、このシャットダウン時間の良い(完璧ではない)近似です。

追加読書

関連情報