Nist
帶有偏見 PRNG 的 NIST 測試套件
有沒有一種直接的方法來使用 NIST 統計測試套件來測試有偏差的生成器(例如 0.6 機率為 1)?直截了當,我的意思是不需要重要的程式碼修改。
- 請注意,官方測試套件長期無人維護並且已知存在錯誤,與其文件不完全一致等。有一些重新實現(我可以推薦David Johnston 在 Python 中進行的重新實現,但也許其他一些更好)應該可能是要走的路。
- AFAIK 測試大多只是試圖驗證以給定方式使用的輸入數字在給定範圍內給出的結果大多是真正隨機數所期望的。您可能會使用完全相同的測試,只需放入另一個預期的結果範圍,因為有偏差的生成器的預期範圍是不同的。從程序員的角度來看,這是一個簡單的修改,但實際上計算(或只是從模擬中測量?)新的適當範圍可能會變成一項相當大的(數學?)工作。
- 當然,關鍵問題是您為什麼要實際使用測試套件以及為什麼您認為 NIST 選擇的測試應該用於評估生成器。今天的共識可能是“通用”測試套件在加密 RNG 方面的用途有限,因為它們中的任何一個都只能檢查有限數量的可能的非隨機模式。電池中包含的測試只是試圖涵蓋最常見的非隨機性,因此您可以毫不費力地證明許多設計不良的發電機確實很糟糕。一旦你嘗試更多的東西,比如證明某個生成器實際上是好的,或者試圖更好地理解某個生成器,情況就不同了。你應該已經知道關於你的生成器的一些非通用的東西(比如它是有偏見的,至少有一些假設為什麼它有偏見)並且您可能應該根據您的知識設計自己的測試並檢查 NIST 套件以獲取靈感。