NIST随机性检测方法及应用_第1页
NIST随机性检测方法及应用_第2页
NIST随机性检测方法及应用_第3页
NIST随机性检测方法及应用_第4页
NIST随机性检测方法及应用_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、nist随机性检测方法及应用 本科教学工程大学生创新创业训练研究 1引言密码算法是构建安全信息系统的核心要素之一,是保障信息与数据机密性、完整性和真实性的重要技术。密码算法检测评估是密码算法研究的重要组成部分,它为密码算法的设计、分析提供客观的量化指标和技术参数,对密码算法的应用具有重要的指导意义.在密码算法的设计和评测过程中,需要从多个方面对其进行检测和分析。次一密(one-time pad)”是序列密码产生的思想来源,序列密码的核心是通过固定算法,将一串短的密钥序列扩展为长周期的密钥流序列,且密钥流序列在计算能力内应与随机序列不可区分。因此,分析秘钥流序列的随机性是密码算法安全性研究的重要

2、内容,利用nist检测方法对密码算法进行评测可以为理论分析提供大量参考数据,从而减少理论分析者的工作量,同时可以暴露出用现有的分析方法无法发现的安全漏洞。2 nist检测方法2.1 随机性检测随机性检测通常通过概率统计的方法考察被检测序列是否满足随机序列的某些特征以 判定其是否随机。从理论上讲,若被检测序列未通过某一随机性检测,可以肯定该序列不随机;但反之, 若被检测序列能够通过某一种随机性检测,却不能肯定这个序列是随机的,即通过随机性检测是序列具有随机性的必要非充分条件。因为各检测方法中的检测项目往往都是根据随机序列所表现出的某一方面的特征而设计的。事实上,任何一个由有限种检测项目组成的集合

3、都无法囊括随机性的所有方面。但在实际应用中,如果这个检测的设计对于随机序列使用时的具体要求而言是充分的,且被检测序列又能通过该检测,则认为该序列的随机性是“合格” 的。随机性检测利用概率统计的方法对随机数发生器或者密码算法产生序列的随机性进行 描述.不同的检测项目从不同的角度刻画待检测序列与真随机序列之间的差距.随机性检测通常采用假设检验 口的方法.假设检验就是在总体分布未知或者只知其形式 但不知其参数的情况下, 为了推断总体的某些性质而提出某些关于总体的假设,然后根据样本对提出的假设做出判断.随机性假设检验,就是已知真随机序列的某一方面符合一个特定 的分布,那么假设待检测序列是随机的,则该待

4、检测序列在这方面也应该符合这个特定的分 布.在实际应用中,常用来衡量随机性的方法是 p - value法,这里以测试统计量 x服从72 分布为例来说明。以随机序列的某种统计值 v符合自由度为n的卡方分布为例:原假设(零假设)ho :序列是随机的,待测序列的统计值v服从?2(n)分布;备择假设 hi :序列不是随机的,待测序列的统计值v不服从?2(n)分布.通过判断一个待测序列的统计值v是否服从?2(n)分布来确定是否接受原假设,从而判断该序列是否通过了该项随机性检测.在随机性检测中判断是否接受原假设通常采用p-value方法. p-value是一个序列比真 随机序列的随机性要好的概率.利用统计

5、值矿求出 p-value,并将p-value与显著性水平a比 较.如果p-value至a ,则接受原假设,判断该待测序列通过了该项随机性检测.作出?2分布的概率密度曲线,如图 2-1所示,先求出统计量x ,然后计算 从x到无穷的积分,将积分结果(即p-value)与a进行比较,进而确定拒绝还是 接受。本文中讨论的随机性测试即是通过选取的测试统计量来计算pvalue,将pmlb作为接受原假设的强度,其含义是:真随机数的随机性比待测序列差的 概率。如果其值为1,则是完全真随机的,如果值为 0,则是完全非随机的。对 于显著性水平0f ,如果p-value a ,那么原假设被接受,序列是随机的;反之

6、被拒绝,序列是非随机的。参数a也即是表2-1中犯第i类错误的概率,一般的, a的取值范围是0.001,0.01 0图1 72分布的概率密度曲线及p-value值美国国家标准与技术研究院(national institute of standards and technology , nist)直属美国商务部,从事物理、生物和工程方面的基础和应用研究,以及测量技术和测试方法方面的研究,提供标准、标准参考数据及有关服务,在国际上享有很高的声誉。美国国家标准与技术研究所提供的special publication800-22 测试包16(简称nist随机性测试)。nist测试程序是一个统计包,包括1

7、6种测试手段。这些测试手段可测试由用作保密随机或者伪随机数发生器的硬件和软件产生的任意长的2进制序列的随机性。这些测试手段主要致力于判定可能存在于序列中的多种多样的非随机性。其中一些测试又可以分解成多种子测验。这16种测试手段是: 1.频率检验,该检验主要是看 0和1在整个序列中所占的比例。检验的目的是确定序列中的1和0数是否与真正的随机序列中的1和0数近似相同。检验评定1码占1/2,也就是说,在整个序列中0和1的数目是一样的。其余别的检验手段都是在该检验成立的基础上进行 的,并且没有任何证据表明被测序列是不随机的。2. 块内频数检验,此检验主要是看m 位的子块中“ 1”码的比例。该检验的目的

8、是判定 m 位的子块内“ 1”码的频率是否像随机假设下所预期的那样,近似于 m/2。当m=1时,该检测相当于检测1位,即频数(一位)检验。3. 游程检验,此检验主要是看游程的总数,游程指的是一个没有间断的相同数序列,即游程或者是“1111”或者是“ 0000”。一个长度为k的游程包含k个相同的位。游程检测的目的是判定不同长度的 “ 1 ” 游程的数目以及“ 0 ” 游程的数目是否跟理想的随机序列的期望值相一致。具体的讲,就是该检验手段判定在这样的“ 0” “ 1”子块之间的振荡是否太快或太慢。4. 块内最长游程检验,该检验主要是看长度为 m-bits 的子块中的最长“ 1 ”游程。这项检验的目

9、的是判定待检验序列的最长“ 1 ”游程的长度是否同随机序列的相同。注意:最长“ 1”游程长度上的一个不规则变化意味着相应的“ 0 ”游程长度上也有一个不规则变化,因此,仅仅对“ 1 ”游程进行检验室足够的。5. 二元矩阵秩检验,该检验主要是看整个序列的分离子矩阵的秩。 目的是核对源序列中固定长度子链间的线性依赖关系。6. 离散傅里叶变换检验,本检验主要是看对序列进行分步傅里叶变换后的峰值高度。目的是探测待检验信号的周期性,以此揭示其与相应的随机信号之间的偏差程度。做法是观察超过95%阈值的峰值数目与低于5%峰值的数目是否有显著不同。7. 非重叠模块匹配检验,此检测主要是看提前设置好的目标数据串

10、发生地次数。 目的是探测那些产生太多给出的非周期模式的发生器。 对于非重叠模块匹配检验以及后面会谈到的重叠模块匹配检验方法, 我们都是使用一个m-bit 的窗口来搜素一个特定的 m-bit 模式。如果这个模式没有被找到,则窗口向后移动一位。 如果模式被发现, 则窗口移动到一发现的模式的后一位, 重复前面的步骤继续搜素下一个模式。8. 重叠模块匹配检验,该检验主要是看提前设定的目标模块发生地数目。 检验步骤同非重叠模块匹配检验方法大致一样,不同点在于,发现目标模块后,窗口仅向后移动1 位,而后继续搜索。9. maurer 的通用统计检验,检验主要是看匹配模块间的 bit 数。目的是检验序列能否在

11、没有信息损耗的条件下被大大的压缩。一个能被大大压缩的序列被认为是一个非随机序列。10. lempel-ziv 压缩检验, 本检测主要是看整个序列中不同模式积累的数目(单词数目) 。检验目的是判定待测序列能够被压缩到什么程度。 若序列不能被明显的压缩, 则该序列就是非随机的。 一个随机序列有特征数个不同模式。11. 线性复杂度检验,本检验手段主要是看线性反馈移位寄存器的长度。 检验的目的是判定序列的复杂程度是否达到可视为是随机序列的程度。随机序列的特点是有较长的线性反馈移位寄存器。一个线性反馈移位寄存器太小的话意味着序列非随机。12. 序列检验,本检验主要是看整个序列中所有可能的重叠m-bit

12、模式的频率,目的是判定2m 个 m-bit 重叠模式的数目是否跟随机情况下预期的值相近似。随机序列具有均匀性也就是说对于每个m-bit 模式其出现的概率应该是一样的。当 m=1 时等价于频数检验。13. 近似熵检验,同序列检验一样, 近似熵检验主要看的也是整个序列中所有可能的重叠m-bit 模式的频率。目的是将两相邻长度(m和m+1)的重叠子块的频数与随机情况下预期的频数相比较。14. 累加和检验,该检验主要是看随机游动的最大偏移。随机游动被定义为序列中调整后的 -1, +1 的累加和。检验的目的是判定序列的累加和相对于预期的累加和过大还是过小。 这个累加和可被看做随机游动。对于随机序列, 随

13、机游动的偏离应该在0 附近。 而对于非随机序列,这个随机游动偏离将会比 0 大很多。15. 随机游动检验,本检验主要是看一个累加和随机游动中具有k 个节点的循环的个数。累加和随机游动由于将关于“0” , “1”的部分和序列转化成适当的“-1”、 “+1”序列产生的。一个随机游动循环由单位步长的一个序列组成, 这个序列的起点和终点均是0 。 该检验的目的是确定在一个循环内的特殊状态对应的节点数是否与在随机序列中预计达到的节点数相背离。 实际上, 这个检验由八个检验(和结论)组成,一个检验和结论对应着一个特定的状态:-4, -3 , -2 , -1和 +1 , +2, +3, +4。16. 随机游

14、动状态频数检验。该检验主要是看累计和随机游动中经历的特殊状态的总数。 检验目的是判定随机游动中实际经历多个状态的值与预期值之间的偏离程度。该检验实际上是十八个检验(和结论) ,每个状态对应着一个检验和一个结论。这些状态分别是: -9 , -8, -7 , -6, -5 , -4, -3 , -2, -1 和 +1, +2, +3, +4, +5, +6, +7, +8。本文的随机性测试属于黑盒测试。 在测试中, 被测试的算法被看作一个黑盒,随机性测试并不深入算法内部, 也不关心算法本身的设计结构, 仅仅通过观察外部行为来确定算法的输出特性。本节中具体介绍了nist随机性测试相关理论。nist测

15、试套件有15个测试项,用来检测任意长度二进制序列的随机性,具中每项测试都是建立在假设检验基础上的,见表 4-1表4-1假设检验结论实际情况接受h0接受hih。:假设序列是随机的正确第i类错误(弃真)hi :假设序列是不随机的第ii类错误(存伪)正确nist测试套件的基本测试思想如下:对于每一个测试项,先给定一个显著性水平 a , a e 0.001,0.01 0再给出两 个假设:原假设h0(序列是随机的)和备择假设 也(序列是不随机的),然后根据 给定统计量的分布函数和统计结果返回一个 p -value ,将它与先前给定的0t进行 比较,从而判断随机性。其中 p-value是一个概率值,p-v

16、alue0,1 0若p-value至口,则接受原假设h。,即序列是随机的;若p-value”,则拒绝原假设h。,即序列是不随机的;当p -value =1时,表示待测序列是一个完美的真随机序列;当p-value = 0时,表示待测序列是一个完全不随机的序列。三、zuc算法祖冲之(zu。算法集是由我国学者自主设计的加密和完整性算法,包括祖 冲之(zuq算法、加密算法128-eea邵口完整tt算法128-eia3,已经被国际组织 3gpp推荐为4g无线通信的第三套国际加密和完整性标准算法。2010年12月2至3日由中国科学院信息工程研究所信息安全国家重点实验 室和中国科学院数据与通信保护研究教育中

17、心(dcs中心)联合主办的第一届 祖冲之算法国际研讨会 在北京召开。这次国际研讨会对于加强祖冲之算法研究 分析成果的国内和国际交流,扩大祖冲之算法的公开平评估范围, 加强祖冲之算 法的安全性评估力度,进而推进祖冲之算法 4g通信国际加密标准的进度产生了 重要的现实意义。2011年9月在日本福冈召开的第53次3gpp系统架构组会议上,我国祖冲 之算法(zu。被批准成为新一代宽带无线移动通信系统(lte国际标准7网。zuc算法是我国自主设计的一个面向字的序列密码,它用128位初始密钥k和128位的初始向量iv作为输入,输出32位字的密钥流(每32位称为一个密钥 字),密钥流可用于对信息进行加解密。

18、zuc算法逻辑上采用三层结构4910,即 线性反馈移位寄存器(lfsr)1、比特重组(br刘非线卜t函数(f),其整体结构如图 3-1所示:图3-1 zuc算法整体结构图l fs r本文选取上述15个测试项进行测试,若被测试序列能全部通过这15个测试, 我们就认为该序列是随机的,取显著性水平 a = 0.01。在密码学中,初始密钥和初始向量都为“ 0”时,算法生成密钥流的随机性 性最差23,这时如果能通过随机性检测,说明在其它情况也能通过测试。 所以这 里我们令初始密钥和初始向量都为“ 0”。1.运行zuc算法程序,进入主界面,选择“ 1”:2.输入初始密钥、初始向量和密钥字个数(如图),初始

19、密钥:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0初始向量:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0密钥字个数:40000现在我们已经得到了 40000m 32位的密钥流序列。运行后生成了两个密钥流 文件:zuc.txt和zuc1.txt,分别是以二进制和十六进制表示的。nist测试要求密 钥流序列是以二进制表示的,所以我们需要的文件是zuc.txt。0 0 0)已写入hug . txt 制,已写入nuc1 .txtto continues ” 进六k二十2(c a包用e四、随机性测试接下来我们对上面生成的密钥流序列进行随机性检测。 nist提供的随机性

20、检 测包需要在linux系统下运行,本文所用系统为在 vm虚拟机下安装的red hat linux系统。4.1 linux 系统下的makefile检测方法首先我们需要对测试包中的 makefile文件进行配置,修改gcc(linux系统的 c语言编译器)的位置和输入测试包所在目录,然后运行makefile文件,进行编译,编译结束后生成可执行文件 assess assess执行时需要输入序列长度,刚才 我们生成的序列长度为:40000 32=1280000。1 .运行assess并输入序列长度,如下图:/二加巴口4|.。肛-1二包二至24.1文件漏相如杳吊v终热转到帮助以dshuquloca

21、ihos t dhuqu$ cd /hont/dshuqu/s 15-2/s 15-2.1 a dshuquloca lhos t s t .j . i 3 jac 史“ 12k0udu2 .进入测试界面,输入“0;导入文件:dshuquloca ibost s 15-2 j i 5i ./assess )280000generator selection0 hpu t file2 qiadral ic chngrufniiai i4 qih ic gingrucn t ifl jfi mxlul rkponen l t iun8 h4ca i i-schnorrenter qlo i re;

22、 011 li ne r gnigruuii l iu i31 qiadrii i ic (hngrurn t iu i i i5j xck71 rlum-blluni-shub9 g using sh-1zuc.txt” :3 .输入4.2.1中生成的以二进制表示的密钥流序列文件kji te r :166 linear gnplex i ly tesi - block lenglh( m1 j50。seie cl te s t ( 0 to continue):6 .输入“0,ascii的0、1序列,也就是以二进制表示的序列:input f i ie form1 (:0 asci 1 a s

23、equence of asci i os and 1 si binary - each by te in djla file contains 8 bits of da lase kcl inpul mnle : 017.测试完成:i npu l file f- o r ira t:0 asci 1 - a sequence o f asci 0 s nd 1711 hina ry - ea ch by te m da ta f iif con ta ins s bits of da lase led inpui mule: flstat is tic3 i lesting 1n progre

24、ss.f.f.r , . ts t ui 1st i ca i te sling gonp ie ie!4.2 sts-2.1.1软件检测法该方法可以直接在 xp系统下运行sts-2.1.1软件进行随机性检查,方法如下, 1.安装cygin,选择与gcc有关的项目。cygwin setupcygwin net r画ease setup programthis setup program is used for the initial installation oj the cygwin environment as wel 曰& all subsequent lfidatss. make su

25、re to remember where you saved itthe pages that follow will guide you through the in就都讨icm. please rote that cygwin consists of a large number of packages spanning a wide variety of puiposec. we 0nm install a ti.ase set oj packages by default. you can always rum this program at ary time in the futur

26、e to add, femove, or upgrade packages 会 necessary.setup.exe version 2.850 (32 bit)copyright 2000-2013hh 口:),科“ 内一 cud 丽 n. coin/取消2.nist 包3.记事本打开makefile修改“ cc = (gcc所在位置)和“ rootdir =(安装包所在目录),如cc =/cygdrive/d/cygwin/bin/gcc.exerootdir = /cygdrive/d/cygwin/home/dshuqu/stst makefile -记事本tjfc |fx,文件任)

27、编辑 格式q)查看9 帮助卸cc =/cygdriue/d/ci|gwln/t)in/gcc .exelgccflfigs = -c -wall! rootdir = /cygdrlue/d/ctgwin/home/dshuqu/stslsrcdir = $(rdotdlr)/srclobjdlr - $(rq)tdr)/objlupath = src :obj :includehobj = $(dbjdir)/assess.o $(objdir)/frequency.o $(objdir)/blockfrequenc _o l s(objdir)/cusum.0 $(objdir)/runs

28、.o $(objdir)/longe5trunofones.o l $(objdrr)/serial,o $(oibjdik)/rank,o $(ubjdir)/dj.scretefouriertransformro l $(objdir)/nonouerlappi ngterplateiiatcliings .0 l$(0bjdir)/ouerlappingtenipldtel1atching5.0$(objdir)/universal.o l $(objdlr)/approxinateentropp .o $(objdir:)/randomexcurslons .0 m $( olbjdi

29、r) /rdndomexcursionsuariant -o $(objdir)/lineargoniplexit(i-o l $(objdir)/dfft.o4.运行“cygin”5.进入测试包所在目录厄 /cygdr ive/d/ cygin/hobe/dshuqu/st sdshuqud $ cd /cygdri ve/d/cygwi n/hcme/dshuqu/stsdshuqud /cygdrive/d/cygwi n/hoirie/dshuqu/sts6 .make f makefile 生成assess文件反 /cygdrive/d/cygwin/hobe/dhuqu/st s0

30、间区dshuqudd $ cd /cygdrive/d/cygwi n/home/dshuqu/stsdshuqud /cygdrive/d/cygwin/home/dshuqu/sts $ make -f makefi 1 e|7 .运行 assess但 / c yg dr ive/ d/ cyg i n/home/ d shuqu/ st sdshuquad $ cd /cygdrive/d/cygwi n/hoirie/bshljqlj/sts pshuqucl /cygdrive/d/cygwi n/home/bshuqu/sts$ */assess 10000008 .进入测试e/c

31、ygdrive/d/cygyin/ho&e/dshuqu/sts-xdshuqud $ cd /cygdrive/d/cygwi n/hotne/dshuqu/stsd5huqud /cygdrive/d/cyn/home/dehuqu/sts$ */assess 1q00000 generator selection1二input filequadrat! c congruerrti al culic congruent!al modular exponent!ation mi cali-5chrorrnj- = _=- 13 5 7 9li near congruential quadra

32、t! c gongruenti al ii xorbl uni-bl urn-shubg u5infl sha-1enter choice:8.测试结果及中间过程都写入了各自对应的目录中,经整理后检测结果如 表4-2所小:表4-2随机性检测结果测试项p-value频率测试(frequency)0.472934块内频率测试(block frequency)(m=128)0.666461累积和测试(cumulativesums)-forward0.494930累积和测试(cumulativesums)-reverse0.698499游程检测(runs)0.302109块内最长连续1测试(longe

33、strunofones)0.107293二元矩阵秩测试(rank)0.579405离散傅里叶变换测试(fft)0.119393非重叠模版匹配测试(nonoverlappingtemplate)(m=9,b=000000001)0.508413重叠模版匹配测试(overlappingtemplate)(m=9)0.739918全局通用统计测试(universal)0.338818近似嫡检测(approximateentropy)(m=10)0.112173随机偏移测试(randomexcursions)(x=+1)0.135938随机偏移变量测试(randomexcursionsvariant)(x=-1)0.429142线性复杂度检测(linearcomplexity)(m=500)0.454981串行测试(serial)(m=16)0.1071924

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论