NIST随机性检测方法及应用

合集下载

nist 标准参考数据集

nist 标准参考数据集

nist 标准参考数据集
NIST(美国国家标准与技术研究所)标准参考数据集是由NIST创建和维护的一系列标准数据集,旨在帮助科学家、研
究人员和工程师进行各种测试、评估和验证工作。

以下是一些常见的NIST标准参考数据集:
1. MNIST手写数字数据集:由60000个训练样本和10000个
测试样本组成,用于训练和测试机器学习算法的图像分类任务。

2. TIMIT语音数据集:包含630个说话人的被约束的英语语音,用于语音识别和语音处理任务。

3. NIST SP 800-22统计测试数据集:包含数百个文件,用于评
估随机性和偏差检测算法。

4. SRE(说话人识别评估)数据集:包含大量说话人的语音录音,用于评估说话人识别系统的性能。

5. NIST特征挑战测试数据集:用于评估音频、视频和图像处
理算法的性能。

这些数据集广泛应用于机器学习、模式识别、计算机视觉、语音处理等领域的研究和开发中,为科学家和工程师提供了标准化的测试和评估基准。

nist谱库用法

nist谱库用法

nist谱库用法
NIST谱库是一个包含了各种类型的光谱数据的数据库,可以通过以下方式使用:
1. 检索特定谱图:可以通过输入化合物的名称、CAS号或谱图的特征数据参数,从NIST谱库中检索特定的谱图。

2. 比对谱图:可以将实验得到的谱图与NIST谱库中的谱图进行比对,以确定化合物的结构和确定其标识。

3. 谱图库搜索:可以通过搜索NIST谱库来查找特定谱图类型的数据库,比如红外光谱、质谱或核磁共振谱。

4. 数据分析和解释:可以使用NIST谱库来解释和分析实验数据,比如通过与谱库中的数据对比,确定化合物的结构,进行质谱定量分析等。

5. 计算谱图:NIST谱库还可以用于计算理论谱图,并与实验数据进行比较,以验证结构和确定标识。

需要注意的是,NIST谱库可以从NIST官网上获得,并需要相应的许可证才能使用。

《混沌激光随机数发生器的随机性评估》

《混沌激光随机数发生器的随机性评估》

《混沌激光随机数发生器的随机性评估》篇一一、引言随着信息技术和密码学的发展,随机数在安全通信、数据分析、加密算法等领域中扮演着至关重要的角色。

混沌激光随机数发生器作为一种新型的随机数生成工具,因其具有高熵、难以预测的特性,在保障信息安全方面具有潜在的应用价值。

本文旨在评估混沌激光随机数发生器的随机性,分析其性能特点及潜在应用领域。

二、混沌激光随机数发生器的工作原理混沌激光随机数发生器是利用混沌激光系统的非线性特性来生成随机数的一种方法。

它通过特定的调制信号或物理刺激对激光系统进行控制,使激光系统产生混沌态输出。

由于混沌系统的非线性特性和对初始条件的敏感性,其输出序列具有高度的随机性。

三、随机性评估方法为了评估混沌激光随机数发生器的性能,我们采用了以下几种方法:1. 统计测试法:采用国际上通用的随机性测试标准,如NIST 统计测试套件,对生成的随机数序列进行统计分析,以检验其是否满足随机性要求。

2. 熵评估法:通过计算随机数序列的熵值,评估其混乱程度和不确定性。

熵值越高,说明随机数序列的随机性越强。

3. 预测性分析:利用混沌系统的特性,分析其输出序列的预测难度。

通过对序列进行建模和预测,检验其是否具有难以预测的特性。

四、实验结果与分析我们采用上述方法对混沌激光随机数发生器进行了实验评估。

以下是部分实验结果及分析:1. 统计测试结果:经过NIST统计测试套件测试,我们发现混沌激光随机数发生器生成的随机数序列在各项统计指标上均表现良好,未发现明显的规律性或周期性。

这表明其具有良好的随机性。

2. 熵评估结果:通过对随机数序列进行熵值计算,我们发现其熵值较高,说明其混乱程度和不确定性较强,具有较好的随机性。

3. 预测性分析结果:我们尝试对混沌激光随机数发生器的输出序列进行建模和预测,但发现其具有较高的预测难度,难以通过简单的模型进行准确预测。

这表明其输出序列具有难以预测的特性,符合随机数的定义。

五、结论与展望通过对混沌激光随机数发生器的实验评估,我们发现其生成的随机数序列在统计测试、熵评估和预测性分析等方面均表现出良好的随机性。

国密随机数检测--215块内频数检测

国密随机数检测--215块内频数检测

国密随机数检测--215块内频数检测最近研究随机数检测,主要学习了⼀下NIST和国密检测,这⾥整理了国密15项检测规项⽬的原理,数学表达式以及python源码。

15项检测项⽬分别为单⽐特频数检测、块内频数检测、扑克检测、重叠⼦序列检测、游程总数检测、游程分布检测、块内最⼤“1”游程检测、⼆元推导检测、⾃相关检测、矩阵秩检测、累加和检测、近似熵检测、线性复杂度检测、 Maurer通⽤统计检测、离散傅⽴叶检测。

规定了商⽤密码应⽤中的随机性检测指标和检测⽅法,适⽤于对随机数发⽣器产⽣的⼆元序列的随机性检测。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------2/15 块内频数检测a) 将待检序列ε分成 N = |n/m| 个长度为 m 的⾮重叠⼦序列,将多余的⽐特舍弃。

本规范取m =100 。

b) 计算每个⼦序列中1所占的⽐例c) 计算统计量d) 计算igamc 为不完全伽马函数。

e) 如果 P-value ≥ α , 则认为待检序列通过块内频数检测。

原理:块内频数检测⽤来检测待检序列的m位⼦序列中1的个数是否接近m/2。

对随机序列来说,其任意长度为m位中⼦序列中1的个数都应该接近m/2。

参数要求:n>=100; m>=20不通过分析:m位⼦序列0、1分布不均衡测试demoimport mathfrom fractions import Fraction#from scipy.special import gamma, gammainc, gammainccfrom gamma_functions import *#ones_table = [bin(i)[2:].count('1') for i in range(256)]def count_ones_zeroes(bits):ones = 0zeroes = 0for bit in bits:if (bit == 1):ones += 1else:zeroes += 1return (zeroes,ones)def frequency_within_block_test(bits):# Compute number of blocks M = block size. N=num of blocks# N = floor(n/M)# miniumum block size 20 bits, most blocks 100n = len(bits)M = 20N = int(math.floor(n/M))if N > 99:N=99M = int(math.floor(n/N))if len(bits) < 100:print ("Too little data for test. Supply at least 100 bits")#return (FAIL,1.0,None)print (" n = %d" % len(bits))print (" N = %d" % N)print (" M = %d" % M)num_of_blocks = Nblock_size = M #int(math.floor(len(bits)/num_of_blocks))#n = int(block_size * num_of_blocks)proportions = list()for i in range(num_of_blocks):block = bits[i*(block_size):((i+1)*(block_size))]zeroes,ones= count_ones_zeroes(block)proportions.append(Fraction(ones,block_size))chisq = 0.0for prop in proportions: #chisq += 4.0*block_size*((prop - Fraction(1,2))**2)p = gammaincc((num_of_blocks/2.0),float(chisq)/2.0)success = (p >= 0.01)return success,p,Noneif__name__ == "__main__":#bit2='0111011010111101111101010000110100011000111011000101010111110001010100010011110110100111010000101010111000101' bits=[1,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,1,0,0,1,0,1,1,1,1,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,1,0,0,0,0,1,0,1,0,0,1,1,0,0,0,1,1,1,0,1,0,0,0,0,1,0,0,1,0,1,0,1,0,0,1,1,0,0,0,1,1,0,1,0,1,1,1,0,0,1,1,1,1,1,0,0,0]s1,s2,s3= frequency_within_block_test(bits)print(s1)print("p value is %s" %s2)。

NIST的“噪声测温计”提供了精确测量玻尔兹曼常数的新方法

NIST的“噪声测温计”提供了精确测量玻尔兹曼常数的新方法

NIST的“噪声测温计”提供了精确测量玻尔兹曼常数的新
方法
NIST的噪声测温计提供了精确测量玻尔兹曼常数的新方法
 新的结果对国际上重新定义温度测量单位做出了贡献。

该量子电压噪声源(QVNS)所生成的自准确电压信号可以与电阻器中电子产生的电压噪声相媲美。

研究人员通过测量电压噪声能够确定玻耳兹曼常数,而该常数可将系统的能量与温度联系起来。

Credit: Dan Schmidt/NIST
通过测量电阻器中电子的随机抖动,美国国家标准与技术研究院(NIST)的研究人员帮助实现了玻尔兹曼常数的新的准确测量,这个基本的科学常数表达的是系统能量与温度之间的关系。

NIST在其位于科罗拉多州的博尔德实验室进行了一次测量,并与中国合作进行了另一次测量。

这些测量结果对于全球联手重新定义国际温度单位开尔文做出了贡献,并能帮助改进工业所用的测温计。

准确的温度测量对于任何需要特定温度的制造过程都是至关重要的,比如钢铁生产。

而这对于核电反应堆也更加重要,因为它不仅需要精确的测温计,还需要这些测温计不会遭受辐射破坏,也不需要人工定期更换。

参与这项新研究的NIST研究小组负责人Samuel Benz介绍说:我们的日常生活离不开温度测量,但目前用于定义开尔文的测量值的准确度还不到定义质量单位和电单位的测量值的1/100。

千克的准确度是10-9量级,而开尔文的准确度仅仅是1乘以10-6。

2018年底,来自世界各国的代表在法国举办的国际度量衡大会上就是否重新定义国际单位制(SI)进行了投票表决。

在2019年实施时,新的国际单位制。

NIST随机数测试标准

NIST随机数测试标准

2.4
块内最长游程检验
2.4.1 检验目的 该检验主要是看长度为 M-bits 的子块中的最长“1”游程。这项检验的目的是判定待检验序列的最长“1” 游程的长度是否同随机序列的相同。注意:最长“1”游程长度上的一个不规则变化意味着相应的“0”游 程长度上也有一个不规则变化,因此,仅仅对“1”游程进行检验室足够的。 2.4.2 函数调用 LongestRunOfOnes(n), n 表示一串序列的长度。 函数中用的其余的参数来源于待检验的码:
=0110011010,那么序列可分为三个子块,即 011,001 和 101.最后一
(2)确定每个 M 位的子块中“1”码的比例:
在本部分例子中, (3)计算检验统计量:

在上例中, (4)计算 P-值: ,

比如说,在本例中, 2.2.5 决策规则(当水平为 1%) 如果计算出来的P值小于0.01,则判定序列是非随机的。否则序列是随机的。 2.2.6 结论以及检测结果的解释 由于 2.2.4 部分中第四步计算得到的 P 值大于 0.01,所以该序列是随机的。 注意一个小的 P 值(小于 0.01)以为着至少在某一子块中“0”码和“1”码的比例与等比例的“0”、”1” 码之间有个大偏差。 2.2.7 输入序列尺寸建议 建议灭个待检验的序列至少要包含 100 位,即 n 要大于等于 100。注意 且 N 要小于 100。 2.2.8 示例 。M 应当大于 0.01n,并
NIST 随机数测试
(李璞 编译)
本文是根据 NIST 官方网站的说明书编译而成,仅为 学术交流之用,请勿用作它途。如转载请注明出处! 另因水平有限,欢迎批评指正。
联系方式: Email:lipu8603@ Address:太原理工大学光电工程研究所

NIST随机性检测方法及应用

NIST随机性检测方法及应用

NIST随机性检测方法及应用作者:张永强李顺波屈帅吕凯琳刘婵许肖茹来源:《电脑知识与技术》2014年第26期摘要:序列的随机性检测是密码学研究的一个重要课题,首先介绍了美国NIST测试标准,然后利用Linux系统下的makefile和sts软件两种方法对流密码ZUC生成的序列了进行随机性检测,16种测试结果表明ZUC的密钥流序列是随机的。

关键词:随机性检测;NIST;假设检验;P-Value;随机序列中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)26-6064-03Abstract: Randomness tests of sequence are an important tack in cryptography. First, the NIST test standard is introduced. Then, using two methods of makefile in Linux system and sts software, a random test is proposed for the sequence of ZUC stream cipher. Furthermore, the 16 testing results show that the keystream of ZUC is random.Key words: Randomness test;NIST;Hypothesis testing; P-Value, Random sequence密码算法是构建安全信息系统的核心要素之一,是保障信息与数据机密性、完整性和真实性的重要技术。

对算法的检测评估[1]是密码学研究的重要组成部分,它为密码算法的设计、分析提供客观的量化指标和技术参数,对密码算法的应用具有重要的指导意义。

“一次一密(One-Time Pad)”是流密码产生的思想来源,序列密码的核心是通过固定算法,将一串短的密钥序列扩展为长周期的密钥流序列,且密钥流序列在计算能力内应与随机序列不可区分。

随机数检测标准

随机数检测标准

随机数检测标准随机数在现代计算机科学和信息技术中扮演着至关重要的角色。

正确生成和使用随机数是确保安全、可靠和高效的系统运行的关键因素。

为了确保随机数的质量,随机数检测标准被广泛采用。

本文将探讨随机数检测标准的相关内容。

一、概述随机数是在一定范围内无法预测和重现的数值序列。

在密码学、模拟实验、统计样本选取等领域中,随机数的生成和使用是非常重要的。

然而,由于计算机是基于确定性规则工作的,要生成真正的随机数是相当困难的。

因此,需要通过随机数检测标准来评估随机数的质量。

二、随机性测试1. 统计测试统计测试是最常用的随机性测试方法之一。

通过对生成的随机数进行统计分析,检查其分布是否均匀、频数是否满足期望等。

常用的统计测试包括频率分布测试、质因数分解测试和最长重复子序列测试等。

2. 线性复杂度测试线性复杂度测试旨在检测随机数序列中最长的线性相关性长度。

通过计算随机数序列中的线性复杂度,可以评估其随机性的质量。

典型的线性复杂度测试方法有线性复杂度模型、Baur-Strassen算法等。

3. 拓展测试拓展测试是更为严格和复杂的随机性测试方法。

它包括领域扩展测试和遗传扩展测试两种类型。

领域扩展测试要求随机数在不同的领域中都具有良好的随机性质量,比如一维、二维和高维分布等。

而遗传扩展测试则涉及到多个子序列之间的相互关系,以验证随机数生成算法的随机性。

三、随机性评估标准1. NIST标准NIST(National Institute of Standards and Technology,美国国家标准与技术研究院)提供了一套完整的随机性评估标准,包括统计测试、线性复杂度测试和拓展测试等。

这套标准被广泛应用于软件和硬件随机数生成器的评估与认证。

2. Diehard测试套件Diehard测试套件由George Marsaglia教授开发,包含了15种不同的统计测试,适用于评估随机数序列的质量。

这些测试涵盖了各种统计特性,包括均匀性、独立性、序列关联性等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

NIST 随机性检测方法及应用本科教学工程 大学生创新创业训练研究1 引言密码算法是构建安全信息系统的核心要素之一,是保障信息与数据机密性、完整性和真实性的重要技术。

密码算法检测评估是密码算法研究的重要组成部分,它为密码算法的设计、分析提供客观的量化指标和技术参数,对密码算法的应用具有重要的指导意义.在密码算法的设计和评测过程中,需要从多个方面对其进行检测和分析。

“一次一密(One-Time Pad)”是序列密码产生的思想来源,序列密码的核心是通过固定算法,将一串短的密钥序列扩展为长周期的密钥流序列,且密钥流序列在计算能力内应与随机序列不可区分。

因此,分析秘钥流序列的随机性是密码算法安全性研究的重要内容,利用NIST 检测方法对密码算法进行评测可以为理论分析提供大量参考数据,从而减少理论分析者的工作量,同时可以暴露出用现有的分析方法无法发现的安全漏洞。

2 NIST 检测方法2.1 随机性检测随机性检测通常通过概率统计的方法考察被检测序列是否满足随机序列的某些特征以判定其是否随机。

从理论上讲,若被检测序列未通过某一随机性检测,可以肯定该序列不随机;但反之,若被检测序列能够通过某一种随机性检测,却不能肯定这个序列是随机的,即通过随机性检测是序列具有随机性的必要非充分条件。

因为各检测方法中的检测项目往往都是根据随机序列所表现出的某一方面的特征而设计的。

事实上,任何一个由有限种检测项目组成的集合都无法囊括随机性的所有方面。

但在实际应用中,如果这个检测的设计对于随机序列使用时的具体要求而言是充分的,且被检测序列又能通过该检测,则认为该序列的随机性是“合格”的。

随机性检测利用概率统计的方法对随机数发生器或者密码算法产生序列的随机性进行描述.不同的检测项目从不同的角度刻画待检测序列与真随机序列之间的差距.随机性检测通常采用假设检验[]的方法.假设检验就是在总体分布未知或者只知其形式但不知其参数的情况下,为了推断总体的某些性质而提出某些关于总体的假设,然后根据样本对提出的假设做出判断.随机性假设检验,就是已知真随机序列的某一方面符合一个特定的分布,那么假设待检测序列是随机的,则该待检测序列在这方面也应该符合这个特定的分布.在实际应用中,常用来衡量随机性的方法是P value -法,这里以测试统计量X 服从2χ分布为例来说明。

以随机序列的某种统计值V 符合自由度为n 的卡方分布为例:原假设(零假设) 0H :序列是随机的,待测序列的统计值V 服从2(n)χ 分布; 备择假设 1H :序列不是随机的,待测序列的统计值V 不服从2(n)χ分布.通过判断一个待测序列的统计值V 是否服从2(n)χ分布来确定是否接受原假设,从而判断该序列是否通过了该项随机性检测.在随机性检测中判断是否接受原假设通常采用P-Value 方法[].P-Value 是一个序列比真随机序列的随机性要好的概率.利用统计值矿求出P-Value,并将P-Value与显著性水平α比≥,则接受原假设,判断该待测序列通过了该项随机性检测.较.如果P-Valueα作出2χ分布的概率密度曲线,如图2-1所示,先求出统计量X,然后计算从X到无穷的积分,将积分结果(即P value-)与α进行比较,进而确定拒绝还是接受。

本文中讨论的随机性测试即是通过选取的测试统计量来计算P value-,将P value-作为接受原假设的强度,其含义是:真随机数的随机性比待测序列差的概率。

如果其值为1,则是完全真随机的,如果值为0,则是完全非随机的。

对于显著性水平α,如果P valueα-≥,那么原假设被接受,序列是随机的;反之被拒绝,序列是非随机的。

参数α也即是表2-1中犯第I类错误的概率,一般的,α的取值范围是[0.001,0.01]。

-值图1 2χ分布的概率密度曲线及P value美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)直属美国商务部,从事物理、生物和工程方面的基础和应用研究,以及测量技术和测试方法方面的研究,提供标准、标准参考数据及有关服务,在国际上享有很高的声誉。

美国国家标准与技术研究所提供的Special Publication800-22测试包[16](简称NIST随机性测试)。

NIST测试程序是一个统计包,包括 16 种测试手段。

这些测试手段可测试由用作保密随机或者伪随机数发生器的硬件和软件产生的任意长的 2 进制序列的随机性。

这些测试手段主要致力于判定可能存在于序列中的多种多样的非随机性。

其中一些测试又可以分解成多种子测验。

这 16 种测试手段是:1.频率检验,该检验主要是看0 和1 在整个序列中所占的比例。

检验的目的是确定序列中的 1 和0 数是否与真正的随机序列中的1和0数近似相同。

检验评定1码占1/2,也就是说,在整个序列中0和1的数目是一样的。

其余别的检验手段都是在该检验成立的基础上进行的,并且没有任何证据表明被测序列是不随机的。

2.块内频数检验,此检验主要是看M位的子块中“1”码的比例。

该检验的目的是判定M位的子块内“1”码的频率是否像随机假设下所预期的那样,近似于M/2。

当M=1时,该检测相当于检测1位,即频数(一位)检验。

3.游程检验,此检验主要是看游程的总数,游程指的是一个没有间断的相同数序列,即游程或者是“1111…”或者是“0000…”。

一个长度为k 的游程包含k 个相同的位。

游程检测的目的是判定不同长度的“1”游程的数目以及“0”游程的数目是否跟理想的随机序列的期望值相一致。

具体的讲,就是该检验手段判定在这样的“0”“1”子块之间的振荡是否太快或太慢。

4.块内最长游程检验,该检验主要是看长度为M-bits的子块中的最长“1”游程。

这项检验的目的是判定待检验序列的最长“1”游程的长度是否同随机序列的相同。

注意:最长“1”游程长度上的一个不规则变化意味着相应的“0”游程长度上也有一个不规则变化,因此,仅仅对“1”游程进行检验室足够的。

5.二元矩阵秩检验,该检验主要是看整个序列的分离子矩阵的秩。

目的是核对源序列中固定长度子链间的线性依赖关系。

6. 离散傅里叶变换检验,本检验主要是看对序列进行分步傅里叶变换后的峰值高度。

目的是探测待检验信号的周期性,以此揭示其与相应的随机信号之间的偏差程度。

做法是观察超过95%阈值的峰值数目与低于5%峰值的数目是否有显著不同。

7. 非重叠模块匹配检验,此检测主要是看提前设置好的目标数据串发生地次数。

目的是探测那些产生太多给出的非周期模式的发生器。

对于非重叠模块匹配检验以及后面会谈到的重叠模块匹配检验方法,我们都是使用一个m-bit 的窗口来搜素一个特定的m-bit 模式。

如果这个模式没有被找到,则窗口向后移动一位。

如果模式被发现,则窗口移动到一发现的模式的后一位,重复前面的步骤继续搜素下一个模式。

8. 重叠模块匹配检验,该检验主要是看提前设定的目标模块发生地数目。

检验步骤同非重叠模块匹配检验方法大致一样,不同点在于,发现目标模块后,窗口仅向后移动1位,而后继续搜索。

9. Maurer 的通用统计检验,检验主要是看匹配模块间的bit数。

目的是检验序列能否在没有信息损耗的条件下被大大的压缩。

一个能被大大压缩的序列被认为是一个非随机序列。

10. Lempel-Ziv压缩检验,本检测主要是看整个序列中不同模式积累的数目(单词数目)。

检验目的是判定待测序列能够被压缩到什么程度。

若序列不能被明显的压缩,则该序列就是非随机的。

一个随机序列有特征数个不同模式。

11. 线性复杂度检验,本检验手段主要是看线性反馈移位寄存器的长度。

检验的目的是判定序列的复杂程度是否达到可视为是随机序列的程度。

随机序列的特点是有较长的线性反馈移位寄存器。

一个线性反馈移位寄存器太小的话意味着序列非随机。

12. 序列检验,本检验主要是看整个序列中所有可能的重叠m-bit模式的频率,目的是判定2m个m-bit重叠模式的数目是否跟随机情况下预期的值相近似。

随机序列具有均匀性也就是说对于每个m-bit模式其出现的概率应该是一样的。

当m=1时等价于频数检验。

13. 近似熵检验,同序列检验一样,近似熵检验主要看的也是整个序列中所有可能的重叠m-bit 模式的频率。

目的是将两相邻长度(m和m+1)的重叠子块的频数与随机情况下预期的频数相比较。

14. 累加和检验,该检验主要是看随机游动的最大偏移。

随机游动被定义为序列中调整后的-1,+1的累加和。

检验的目的是判定序列的累加和相对于预期的累加和过大还是过小。

这个累加和可被看做随机游动。

对于随机序列,随机游动的偏离应该在0附近。

而对于非随机序列,这个随机游动偏离将会比0大很多。

15. 随机游动检验,本检验主要是看一个累加和随机游动中具有K 个节点的循环的个数。

累加和随机游动由于将关于“0”,“1”的部分和序列转化成适当的“-1”、“+1”序列产生的。

一个随机游动循环由单位步长的一个序列组成,这个序列的起点和终点均是0。

该检验的目的是确定在一个循环内的特殊状态对应的节点数是否与在随机序列中预计达到的节点数相背离。

实际上,这个检验由八个检验(和结论)组成,一个检验和结论对应着一个特定的状态:-4,-3,-2,-1和+1,+2,+3,+4 。

16. 随机游动状态频数检验。

该检验主要是看累计和随机游动中经历的特殊状态的总数。

检验目的是判定随机游动中实际经历多个状态的值与预期值之间的偏离程度。

该检验实际上是十八个检验(和结论),每个状态对应着一个检验和一个结论。

这些状态分别是:-9,-8,-7,-6,-5,-4,-3,-2,-1和+1,+2,+3,+4,+5,+6,+7,+8。

本文的随机性测试属于黑盒测试。

在测试中,被测试的算法被看作一个黑盒,随机性测试并不深入算法内部,也不关心算法本身的设计结构,仅仅通过观察外部行为来确定算法的输出特性。

本节中具体介绍了NIST随机性测试相关理论。

NIST测试套件有15个测试项,用来检测任意长度二进制序列的随机性,其中每项测试都是建立在假设检验基础上的,见表4-1。

NIST 测试套件的基本测试思想如下:对于每一个测试项,先给定一个显著性水平α,[0.001,0.01]α∈。

再给出两个假设:原假设0H (序列是随机的)和备择假设1H (序列是不随机的),然后根据给定统计量的分布函数和统计结果返回一个P value -,将它与先前给定的α进行比较,从而判断随机性。

其中P value -是一个概率值,[0,1]P value -∈。

若P value α-≥,则接受原假设0H ,即序列是随机的;若P value α-<,则拒绝原假设0H ,即序列是不随机的;当1P value -=时,表示待测序列是一个完美的真随机序列;当0P value -=时,表示待测序列是一个完全不随机的序列。

相关文档
最新文档