Randomness
隨機性測試的免費軟體
我有一個 0 到 100 之間的整數序列。有沒有像 Sage 這樣的免費軟體,我可以在其中測試這個序列的隨機性?我有Linux機器。
我有龐大的數據集。其實我有自己的發電機。我想測試它的隨機性。
僅使用數據作為輸入的隨機性測試可以證明非隨機性,但絕不是隨機性的可靠指示,除非其結果與對測試的隨機數據如何生成的分析相結合。沒有這樣的知識,這樣的測試會給出錯誤的通過或失敗。
說明:考慮輸出 512 位塊的 PRNG,在某個鍵下計算為前一個塊的 HMAC-SHA-512。對於不知道密鑰的人來說,它通過了任何隨機性測試,但通過該知識可以從過去的輸出中輕鬆預測。
在密碼學中,只有當我們有一個源模型被測試時,具有 PASS 結果的隨機性測試才有用。這是智能卡等真隨機數生成器通用標準評估的 AIS31 方法的核心;見那裡(在 AIS31 下;該頁面僅以德語存在 AFAIK,但具有指向許多英文文件的連結和統計測試的參考實現)。
根據 AIS 31 方法,它製作了一些與設備匹配的模型,並證明根據該模型,任何不引起警報的可能缺陷都不會導致使用明顯可預測的比特流。通常有:
- 基於某種模擬現象的 TRNG,例如雜訊源的採樣,提供可採樣用於測試目的的比特流;
- 在啟動和/或執行時測試該源的硬體或/和軟體,以檢查該源是否提供熵;包括,至少,如果有任何東西使該來源完全有缺陷(可能是用針頭、雷射、蒸發一些液化氣體的攻擊者……),就會引起警報;
- 將該源的輸出的硬體或/和軟體調節到另一個比特流中,即使該源只能通過也不會有明顯的偏差;該條件比特流可以用作例如 DPA 對策的隨機源或密鑰生成器。
- 可能是一個額外的測試,即調節按預期工作。