樣本文件的 NIST STS 結果不正確
所以我想檢查一個硬體 TRNG 的結果,看看它的熵是否足夠好。我從 nist.gov 網站下載了統計測試套件的源文件,在我的 macOS 機器上使用 clang 編譯它們,並嘗試了一些範例數據文件作為輸入來檢查一切是否正常,然後再繼續下一步。但是,當我使用 data/data.pi 文件作為 STS 的輸入時,第一個結果 P 值不正確!
對於頻率測試,它是 0.534146,而 NIST 對應於該訴訟的論文指出 pi 的頻率 P 值應該是 0.578211(“樣本數據的附錄 B 經驗結果”,第 107 頁)。其他結果也不正確,不足為奇。我仔細檢查了選定的選項,但它們是相同的:10 個流用於 100,000 位,總共 1,000,000 位。我還檢查了defs.h文件中的配置參數,它們都與論文中的相應參數相匹配。
我首先擔心的是,在編譯過程中,編譯器會發出一些警告。它主要是對某些文件中將“fabs(x)”用於整數類型變數而不是“abs(x)”的某些用途不滿意。我更改了程式碼,但生成的 P 值仍然相同。
知道問題的根源是什麼嗎?其他範例文件的結果也不匹配。
謝謝!
別擔心 :-)
該文件是“修訂:2010 年 4 月”。最新的程式碼實現(正式)日期為 2014 年 7 月 9 日,並評論為*“此更新對原始碼進行了一些小的更正。第一個更改更正了非重疊模板測試,以使其在序列匹配時正確跳過位。第二個變化是糾正 $ \pi $ 重疊模板測試中的值。”*
NIST 程序員不是最好的,以後可能會對原始碼進行其他調整。我不知道有多少“少數”,他們也沒有說。我還沒有瀏覽所有單獨的源文件。修訂評論實際上是不存在的。您的編譯器錯誤可以忽略,它們只是警告,我(和其他人)對程式碼的經驗是,如果您的樣本足夠大,它就可以工作。100 萬位是一個很好的起始大小。
0.534146 的 AP 是一個很好的結果,並顯示 $ \pi $ 很好地通過了隨機性測試。其他測試文件( $ \sqrt{2} $ 等)也應該給你幾乎完美的分數,但可能與記錄的略有不同。
這只是一個小錯誤修復。