NIST 隨機性檢驗 p 值
我有一個長度的二進制序列 $ 2^{20} $ . 我正在使用 NIST 統計測試,評估。
- 在這個測試中
./assess
應該 採取什麼措施?How many bitstreams?
- 在最終的分析報告中,
p-values
應該有什麼才能通過這個測試?
一般來說,如果你從一個分佈中隨機抽取一個樣本 $ D $ ,並且您對原假設應用統計檢驗 $ D $ 產生一個 $ p $ -value,然後列印 $ p $ -value,四捨五入到 0.05 的倍數,就好像你擲了一個公平的 d20 在可能的結果中進行選擇。 (要獲得更精細的粒度,請滾動一個具有更多面的骰子。)僅此而已 $ p $ -值是。
有人可能希望測試的設計是這樣的,如果您從不同的分佈中抽樣 $ D’ $ 代替 $ D $ ,另一種假設,就好像您在其中一個面上滾動了一個帶有權重的 d20,因此它大部分時間都小於 0.05。那麼如果你在任何時候發出警報 $ p < 0.05 $ ,在您對原假設的檢驗中有 5% 的誤報率,而當出現問題並且您實際上是從 $ D’ $ .
在統計文獻中,此類測試的誤報率被混淆地稱為“顯著性水平”。真正的報警率稱為“統計功率”。誤報率僅取決於原假設 $ D $ , 不開 $ D’ $ ,而統計功效僅取決於備擇假設 $ D’ $ . 設計不佳的測試可能在 $ D $ 和 $ D’ $ , 在這種情況下,警報根本沒有任何意義 $ D’ $ 即使您的“顯著性水平”是 0.05。(設計極差的測試甚至可能在以下情況下具有較低的警報率 $ D’ $ .)
典型的“隨機測試”,如頑固派和 NIST SP 800-22 套件是均勻隨機分佈的零假設的統計測試集合 $ D $ 在位串上。它們具有很高的統計能力來檢測非常簡單的替代假設,例如具有 1/4 機會為 0 和 3/4 機會為 1 的 IID 位串。它們沒有*高統計能力來檢測替代假設,例如字元串 $ \operatorname{AES256}_k(0) \mathbin| \operatorname{AES256}_k(1) \mathbin| \cdots $ 用於統一隨機密鑰 $ k $ .
密碼學中真正重要的是您如何獲得樣本。 有兩種選擇:
- 您可以通過測量物理過程(例如在 Geiger-Müller 管中計數電離事件)獲得樣品。 在這種情況下,您應該有一個特定的機率物理模型,其中包含諸如Poisson過程之類的花哨詞:要測量此過程的密碼值,您需要研究該過程的物理和工程以確定其最小熵的下限在訓練有素的物理學家和工程師團隊的幫助下,找到可靠預測輸出的最佳方法。
NIST 測試在這裡無法為您提供幫助:他們對 Geiger-Müller 管一無所知。 2. 你通過在一個小的隨機輸入上計算一個難以反轉的函式來得到你的樣本。 在這種情況下,像 AES-256 這樣的難以反轉的函式應該由世界各地訓練有素的密碼學家團隊進行充分研究,並發錶帶有諸如差分密碼分析之類的花哨詞的論文,以確信它確實很難反轉。
NIST 測試在這裡無法幫助您:他們對密碼分析技術一無所知。
那麼NIST 測試能做什麼呢?不多,真的。 它們可能會給你一些關於分佈中特定不均勻性的提示,從而導致你產生關於 (1) 或 (2) 的想法,僅此而已。
但是,如果你想要千篇一律的問題答案……
- 在這個測試中
./assess
應該採取什麼措施?How many bitstreams?
將流中的位數傳遞給
./assess
. 指定 1 位流。
- 在最終的分析報告中,
p-values
應該有什麼才能通過這個測試?始終使用 p < 0.05,除非它是雙尾測試,在這種情況下使用 $ p < 0.025 $ 或者 $ p > 0.975 $ . 當心綠色軟糖豆。
其他工具(如 ent 和 NIST SP 800-90B 套件)將參數擬合到模型族併計算或估計結果模型的熵。許多概念是相同的,同樣,這些工具太笨了,無法了解(1) 中的物理過程或(2) 中難以反轉的函式。*