Randomness

FIPS 140-2 有什麼用?

  • November 7, 2016

我剛剛使用了在 rngtools 中實現的 FIPS 140-2 測試,即 rngtest。我在一個 12.3MB 的 pak8 壓縮 ASCII 文本文件上執行它。它通過了大部分測試,失敗率為 0.2%。Monobit 和 Continuous 執行測試實際上已完成,沒有任何失敗。

檢測隨機性似乎非常鬆懈。如果它(有效地)將高度結構化的 zip 文件作為高質量隨機數傳遞,那麼這個測試的​​意義何在?

這是詳細資訊…


cat /tmp/raw.txt.fp8 | rngtest

rngtest: starting FIPS tests...
rngtest: entropy source drained
rngtest: bits received from input: 98327312
rngtest: FIPS 140-2 successes: 4906
rngtest: FIPS 140-2 failures: 10
rngtest: FIPS 140-2(2001-10-10) Monobit: 0
rngtest: FIPS 140-2(2001-10-10) Poker: 1
rngtest: FIPS 140-2(2001-10-10) Runs: 1
rngtest: FIPS 140-2(2001-10-10) Long run: 8
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0

首先,嚴格意義上來說,通過統計檢驗來檢測隨機性是不可能的。只能檢測到隨機性的缺失。

其次,一個完美的壓縮算法應該生成一個與隨機數無法區分的輸出。一個揮手的論點如下:

如果輸出與隨機數無法區分,那麼它將包含一些剩餘的結構。這種結構可以用來進一步壓縮輸入。

這意味著,您可能唯一能做的就是對您的隨機數進行許多好的統計測試。它不能證明你的來源是真正隨機的,但它可以給你一些證據證明它沒有被破壞。

值得一提的第三點是 NIST 已經通過 Nist SP 800-90B 出版物的更全面的測試取代了 Fips 140-2 的簡單測試。

引用自:https://crypto.stackexchange.com/questions/41319