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压缩包中,解压后源文件中有上述的密码算法安全测试的源码,如下

NIST数字测试套件使用说明

若在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. 对包进行解压缩,解压在该目录下。NIST数字测试套件使用说明
  3. 进入到解压缩的该目录下(输入命令cd 文件名)
  4. 输入make进行编译makefile文件,得到assess文件(编译成功后该目录下会有assess文件)
  5. 在该目录下输入./assess <datalength>,datalength为测试的数据长度。

 

 

下面举例说明

NIST数字测试套件使用说明

  1. 进入软件界面后,有基本操作指示(生成器选项)

基本测试用matlab写一个随机数矩阵(x = randsrc(1,32e3,[0,1]);

)把数据复制到txt文本中,然后把随机数矩阵的文本array.txt复制到该目录下,

NIST数字测试套件使用说明

根据生成器提示选择0输入文件,输入array.txt,之后则是选择测试类型,即上面的15种测试类型。

NIST数字测试套件使用说明

  1. 或者测试全部,它有一个提示可以测试上述15种测试,即Enter Choice输入1NIST数字测试套件使用说明

  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位的二进制数据。

NIST数字测试套件使用说明

  1. 最后完成后的结果在该目录下的experiments/AlgorithmTesting下的某种测试目录下

NIST数字测试套件使用说明

  1. 每种算法目录下都有stats.txt 文件中描述的是P-value值,在ALPHA = 0.0100条件下(默认值),貌似这个值大于0.01就表示差不多随机,越大越好。

NIST数字测试套件使用说明

 

注意:使用所有测试时,参数设置如下,但是可能数据长度并不适合某些测试,所以最后只有13种统计测试完成。

 

 

测试方法参看:https://wenku.baidu.com/view/020b8df47c1cfad6195fa7e0.html

伪随机性是密码算法安全性的重要指标,用于评估密码算法的伪随机性,其原理一般是假设检验,一般要求接收水平Pv>0.01

比如看动向(Run)测试结果不符合统计量标准PI=0.280969

单比特动向测试是检测算法f的输出在0和1之间摆动的次数,其测试方法如下:

NIST数字测试套件使用说明

相关文章:

  • 2021-12-20
  • 2021-08-05
  • 2021-06-15
  • 2021-05-10
  • 2021-06-25
  • 2021-12-19
  • 2021-08-22
  • 2021-09-05
猜你喜欢
  • 2021-07-13
  • 2022-12-23
  • 2022-01-04
  • 2022-12-23
  • 2021-11-13
  • 2022-12-23
相关资源
相似解决方案