NIST 測試套件是由15個測試組成的統計軟件包,這些是爲了測試隨機(任意長度)由基於硬件或軟件的密碼隨機或僞隨機數生成器產生的二進制序列。測試關注於各種不同類型的已存在的非隨機序列。有些測試可以分成各種子測試。
15個測試主要是(屬於密碼算法安全測試方法):
- 頻率(單比特)測試
- 塊內頻數測試(Frequency Test within a Block)
- 動向(Run)測試
- 最大遊程檢測
- 二進制矩陣秩(Binary Matrix Rand)測試
- 頻譜測試
- 非重疊字匹配測試
- 重疊字匹配測試
- Maurer通用統計檢測
10、線性複雜度測試
11、系列(Serial)測試
12、近似熵測試
13、累積和測試
14、隨機遊程(Random Excursions)測試
15、隨機遊程變量(Random Excursions Variant)測試
這裏沒有依賴性(擴散與混亂)---完備性與雪崩效應測試、自相關測試和Lempel-Ziv壓縮測試。
下載的軟件sts-2.1.2壓縮包中,解壓後源文件中有上述的密碼算法安全測試的源碼,如下
若在windows下,由於該軟件是基於linux環境開發的,裏面的源文件由makefile控制,要想在windows下使用,則需要藉助另一軟件Cygwin。
Cygwin官網下載地址:http://www.cygwin.com/
安裝使用該軟件參考:http://www.programarts.com/cfree_ch/doc/help/UsingCF/CompilerSupport/Cygwin/Cygwin1.htm
上面有詳細講說,但對於這個隨機數測試包需要注意的主要是一下幾點:
1、下載安裝的時候一定注意要把組件都勾上,特別是gcc一定要勾上,如果不知道怎麼選,那就有gcc的地方全勾上吧。因爲需要gcc這個編譯器。
2、運行Cygwin,進入該軟件包sts-2.1.1中包含makefile文件的文件夾,輸入:make命令,該軟件就在安裝了,完後之後會發現多了一個文件(assess.exe),那個就是可執行文件了。有了它就安裝成功了。
還可以參考一下鏈接:https://wenku.baidu.com/view/dc0ada02eff9aef8941e0644.html
由於本機本身裝有虛擬機及ubuntu系統,所以直接在Linux操作系統下安裝。步驟如下:
- 打開已經安裝好的ubuntu系統,在管理員權限進入系統,把已經下好的數字測試套件包拷貝到Home目錄下
- 對包進行解壓縮,解壓在該目錄下。
- 進入到解壓縮的該目錄下(輸入命令cd 文件名)
- 輸入make進行編譯makefile文件,得到assess文件(編譯成功後該目錄下會有assess文件)
- 在該目錄下輸入./assess <datalength>,datalength爲測試的數據長度。
下面舉例說明
- 進入軟件界面後,有基本操作指示(生成器選項)
基本測試用matlab寫一個隨機數矩陣(x = randsrc(1,32e3,[0,1]);
)把數據複製到txt文本中,然後把隨機數矩陣的文本array.txt複製到該目錄下,
根據生成器提示選擇0輸入文件,輸入array.txt,之後則是選擇測試類型,即上面的15種測試類型。
- 或者測試全部,它有一個提示可以測試上述15種測試,即Enter Choice輸入1
- How many bitstreams? 輸入流個數;這個流個數和第一步中的文件位長度存在這樣關係:
位長度*bitstreamsnum=文件總位長度。一般隨機數文件在32M以內(2G內存支持),bitstreamsnum默認輸入1,第一步輸入文件總bit長度。如果文件超過32M那麼計算過 程中內從不足,因此需要第一步輸入文件總長度的1/8、1/16...,然後在此處輸入8、16,等價於把源文件劃分爲等長的幾條流,來做隨機性檢查。
- Bitstreams輸入默認1後,下面會問輸入文件的形式是ASCII類型的數據構成的序列(ASCII 中的0和1)還是8位的二進制數據。
- 最後完成後的結果在該目錄下的experiments/AlgorithmTesting下的某種測試目錄下
- 每種算法目錄下都有stats.txt 文件中描述的是P-value值,在ALPHA = 0.0100條件下(默認值),貌似這個值大於0.01就表示差不多隨機,越大越好。
注意:使用所有測試時,參數設置如下,但是可能數據長度並不適合某些測試,所以最後只有13種統計測試完成。
測試方法參看:https://wenku.baidu.com/view/020b8df47c1cfad6195fa7e0.html
僞隨機性是密碼算法安全性的重要指標,用於評估密碼算法的僞隨機性,其原理一般是假設檢驗,一般要求接收水平Pv>0.01
比如看動向(Run)測試結果不符合統計量標準PI=0.280969
單比特動向測試是檢測算法f的輸出在0和1之間擺動的次數,其測試方法如下: