NIST數字測試套件使用說明

NIST 測試套件是由15個測試組成的統計軟件包,這些是爲了測試隨機(任意長度)由基於硬件或軟件的密碼隨機或僞隨機數生成器產生的二進制序列。測試關注於各種不同類型的已存在的非隨機序列。有些測試可以分成各種子測試。

15個測試主要是(屬於密碼算法安全測試方法):

  1. 頻率(單比特)測試
  2. 塊內頻數測試(Frequency Test within a Block)
  3. 動向(Run)測試
  4. 最大遊程檢測
  5. 二進制矩陣秩(Binary Matrix Rand)測試
  6. 頻譜測試
  7. 非重疊字匹配測試
  8. 重疊字匹配測試
  9. 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操作系統下安裝。步驟如下:

  1. 打開已經安裝好的ubuntu系統,在管理員權限進入系統,把已經下好的數字測試套件包拷貝到Home目錄下
  2. 對包進行解壓縮,解壓在該目錄下。
  3. 進入到解壓縮的該目錄下(輸入命令cd 文件名)
  4. 輸入make進行編譯makefile文件,得到assess文件(編譯成功後該目錄下會有assess文件)
  5. 在該目錄下輸入./assess <datalength>,datalength爲測試的數據長度。

 

 

下面舉例說明

  1. 進入軟件界面後,有基本操作指示(生成器選項)

基本測試用matlab寫一個隨機數矩陣(x = randsrc(1,32e3,[0,1]);

)把數據複製到txt文本中,然後把隨機數矩陣的文本array.txt複製到該目錄下,

根據生成器提示選擇0輸入文件,輸入array.txt,之後則是選擇測試類型,即上面的15種測試類型。

  1. 或者測試全部,它有一個提示可以測試上述15種測試,即Enter Choice輸入1

  1. How many bitstreams? 輸入流個數;這個流個數和第一步中的文件位長度存在這樣關係:

位長度*bitstreamsnum=文件總位長度。一般隨機數文件在32M以內(2G內存支持),bitstreamsnum默認輸入1,第一步輸入文件總bit長度。如果文件超過32M那麼計算過 程中內從不足,因此需要第一步輸入文件總長度的1/8、1/16...,然後在此處輸入8、16,等價於把源文件劃分爲等長的幾條流,來做隨機性檢查。

  1. Bitstreams輸入默認1後,下面會問輸入文件的形式是ASCII類型的數據構成的序列(ASCII 中的0和1)還是8位的二進制數據。

  1. 最後完成後的結果在該目錄下的experiments/AlgorithmTesting下的某種測試目錄下

  1. 每種算法目錄下都有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之間擺動的次數,其測試方法如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章