FIPSコンプライアンスの調査に最近関与しており、私のvm環境で/ dev/urandomコンプライアンステストを実行すると、次のようなデータが生成されるため、これは私の興味をそそりました。
[admin@xxx~]$ cat /dev/urandom | rngtest -c 5000
rngtest 2
Copyright (c) 2004 by Henrique de Moraes Holschuh
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
rngtest: starting FIPS tests...
rngtest: bits received from input: 100000032
rngtest: FIPS 140-2 successes: 4998
rngtest: FIPS 140-2 failures: 2
rngtest: FIPS 140-2(2001-10-10) Monobit: 0
rngtest: FIPS 140-2(2001-10-10) Poker: 0
rngtest: FIPS 140-2(2001-10-10) Runs: 1
rngtest: FIPS 140-2(2001-10-10) Long run: 1
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
rngtest: input channel speed: (min=2.210; avg=63.902; max=19073.486)Mibits/s
rngtest: FIPS tests speed: (min=2.477; avg=123.448; max=157.632)Mibits/s
rngtest: Program run time: 2277143 microseconds
これらの質問に欠けているのは、badがどのように悪いのかです。統計的コンプライアンスを規定する確固たる数値はありますか?
仮想マシンへの移行はエントロピーにどの程度悪影響を及ぼしますか?
使用するような統計テストできない特定のマシンで/dev/urandom
が良いか悪いかを検出します。
具体的には、/dev/urandom
は 暗号的に安全なPRNG を実行します。与えられた初期内部状態(「シード」)から、ランダムに見えるバイトの任意の長さのストリームを生成します。 PRNG暗号学的に安全であることは、攻撃者が実際に次のビットを1/2より高い確率で予測するには、正確な内部状態(最後のビットまで)を推測している必要があることを意味します)。 、彼は何も持っていません。
VMにおける/dev/urandom
のリスクは、状態がハードウェアソースとVMには真のハードウェアはなく、エミュレートされたハードウェアのみです。ただし、これにはPRNGがこの特定のマシンで/dev/urandom
によって使用されているものであることを完全に知っているインテリジェントな攻撃者が必要です、および攻撃者は、エミュレートされたハードウェアについて知っていること、およびOSがそのハードウェアから「ランダムシード」として抽出したものに基づいて、意図的に潜在的な内部状態を試みます。rngtest
は何も実行せず、基本的な統計テストを実行します100 Mbitsストリームにバイアスがあるかどうかを確認します。
要約すると、rngtest
は重要なことはテストしません。つまり、インテリジェントな攻撃者がシードを推測するのがどれほど難しいかということです。代わりに、rngtest
は、暗号的に安全なPRNGアルゴリズムが実際に暗号的に安全であるかどうかを測定します。それは基本的にそうです(最も明白なバイアス以外は何も見えません)。本質的に、rngtest
cannot/dev/urandom
を使用してVM関連の問題を検出します(それに対応して、それを実行してもまったく役に立ちません)。