エントロピーを生成するFreeBSDスクリプトに気づきました。
それ自体が刑務所内から実行されていることがわかった場合、保釈されます。
# uname -srm ## notice: install of mfsBSD (https://mfsbsd.vx.sk)
FreeBSD 11.2-RELEASE-p7 AMD64
# grep jail /usr/libexec/save-entropy
[ $(/sbin/sysctl -n security.jail.jailed) = 0 ] || exit 0
これの理由は何でしょうか?
ホストが刑務所にランダム性を持たせることは安全ではありませんか?
個々の刑務所がランダムな値のプールを共有することは安全ではありませんか?
これが原因で、刑務所内で実行されているプログラムのランダム性が損なわれることはありませんか?
ありがとう、
マイケル
tl; drエントロピープールはブートストラップ中にのみ使用されます。乱数を提供するカーネルは1つだけです。エントロピープールを1つだけ持つことで、刑務所からの使用パターンにより、より高度な非決定的な動作が保証されます。
/dev/random
で使用されるアルゴリズムを信頼する場合、複数のエントロピープールを使用しても利点はありません。共通プールをより早く使い果たしてから、新しい(再シード)を生成することをお勧めします。
ユーザーランドプログラムは、エントロピープールを直接使用しないでください。彼らは常にrandom(4) と友達を使うべきです。
引用符付きの長いバージョン:
/ dev/random デバイスは、5.0から10.0の間のYarrow実装を使用して実装されました。 FreeBSD 10ではFortunaに変更されました。メジャーアップグレードは2014年に リビジョン273872 で行われました。 HackerNews について少し議論があります。
rc.d/initrandom
はコメントとともに削除されました:
/ dev/randomデバイスのリファクタリング。主なポイントは次のとおりです。
ユーザーランドシードは使用されなくなりました。これは、PC /デスクトップセットアップの起動時に自動シードされます。これには、埋め込みボックスを設定する人々からの調整とインテリジェンスが必要になる場合がありますが、作業は最小限であると考えられています。
エントロピーキャッシュは(インストール中でも)/ entropyに書き込まれ、カーネルは次回の起動時にこれを使用します。
/ boot/entropyに書き込まれたエントロピーファイルは、loader(8)によってロードできます。
その場合、jailhostはシステムに対して1つのカーネルのみを実行し、次にjail内で選択したユーザーランドバイナリを実行していることに注意してください。同じカーネルが同じ刑務所にサービスを提供している場合、すべての刑務所のエントロピーを変更することが有利かどうかを尋ねる必要がありますか?
これは、変更が行われたときの ディスカッション のXin LIによってカバーされます。
A PRNGが機能する方法は、1つまたは複数のエントロピーソースを使用して内部状態を「フィード」し、PRFを介して内部状態から一連の疑似乱数を生成することです。
FreeBSDは、イーサネット、割り込み、ソフトウェア割り込みなどのいくつかのソース、およびシステムで使用可能なハードウェアRNGからエントロピーを収集し、これらすべてのエントロピーを使用してPRNGの内部状態を導き出します。
/ dev/randomから読み取る場合、基本的にランダムデバイスに供給されるエントロピーを消費し、最終的には再シードが発生します。理想的な世界では、これを潜在的な攻撃者から予測および制御できないようにする必要があります。
通常のアプリケーションは、/ dev/randomを少しずつ読み取る傾向があり、多くのプロセスが実行されていると仮定すると、離散的でほぼランダムな方法で読み取ります。一方、エントロピーの保存は、決められた時間に大きなチャンクで行われます。複数のjailが実行されていると、/ dev/randomデバイスから大量の大きなチャンク読み取りが発生し、その動作がより決定論的になり、悪い結果を招く可能性があります。
Random(4)デバイスは、刑務所ごとではなくカーネルごとであるため、これらのプロセスを刑務所で実行することはまったく役に立ちません。
https://mailing.freebsd.hackers.narkive.com/iq0HeCDX/save-entropy-in-jail-environment