nist随机数检测中的频数与频率检测方法,代...

随机数的在线测试与后续处理—硕士毕业论文下载
广告载入中...
随机数的在线测试与后续处理
硕士博士毕业论文站内搜索
全站论文库
硕士博士论文库
普通期刊论文库
分类:→工业技术论文→→→→
随机数的在线测试与后续处理
[硕士论文]论文目录&摘要第1-4页 ABSTRACT第4-8页 第一章 绪论第8-12页   · 选题背景第8-9页   · 选题意义第9-10页   · 本文的结构第10-12页 第二章 随机数及其性能评估第12-26页   · 随机数的定义第12-17页     · 随机数的分类第12页     · 随机数的产生方法第12-17页   · 随机数的应用第17-18页     · 随机数在扩频通信中的应用第17页     · 随机数在密码学中的应用第17-18页     · 随机数在数学建模中的应用第18页     · 随机数在其他技术领域中的应用第18页   · 随机数的性能评估第18-23页     · NIST测试第19-20页     · ENT测试第20-22页     · DIEHARD测试第22-23页   · 本章小结第23-26页 第三章 随机数在线测试系统的设计第26-42页   · 在线测试原理第26-27页   · 在线测试硬件设计第27-36页     · 时钟电路设计第27-29页     · 串并转换器第29-31页     · DI/O卡第31-34页     · 器件的连接第34-36页   · 测试软件第36-41页     · NIST测试第36-39页     · DIEHARD测试第39-40页     · ENT测试第40-41页   · 本章小结第41-42页 第四章 随机数的后续处理第42-54页   · 后续处理原则第42页   · 对随机序列进行异或运算第42-45页     · 异或运算原理第42-43页     · 异或运算后续处理第43-45页   · 对随机序列进行冯·诺依曼校正第45-47页     · 冯·诺依曼校正算法第45页     · 冯·诺依曼校正后续处理第45-47页   · 对随机信号源进行小波去噪第47-51页     · 小波去噪原理第48页     · 小波去噪后续处理第48-51页   · 本章小结第51-54页 第五章 工作总结与展望第54-56页   · 工作总结第54页   · 工作展望第54-56页 参考文献第56-60页 致谢第60-61页 攻读学位期间发表的论文第61页
本篇论文共61页,。
更多相关论文
栏 目 导 航
广告载入中...
&&版权申明:制作三百多万篇硕士博士毕业论文目录,本站并未收录论文原文,如果你是作者,需要删除这篇论文目录,。
||||||||||
Copyright(C) All Rights Reserved
广告载入中...总结经验(1)
网上找到开源的的nist算法,make之后发现算法太专业,不知道怎么用,经过一段时间摸索,弄清楚的写下来。
源码目录:nist/sts-2.1.2/
我的随机数包是128M的二进制文件,执行所有运算大概耗时3个小时。
1.运行./assess &(128M位长度)
2.0 导入文件
3.输入随机数文件名
4.输入1选择15项全部测试
5.输入0默认参数
6.How many bitstreams? 输入流个数;这个流个数和第一步中的文件位长度存在这样关系:
位长度*bitstreamsnum=文件总位长度。一般随机数文件在32M以内(2G内存支持),bitstreamsnum默认输入1,第一步输入文件总bit长度。如果文件超过32M那么计算过
程中内从不足,因此需要第一步输入文件总长度的1/8、1/16...,然后在此处输入8、16,等价于把源文件划分为等长的几条流,来做随机性检查。
7.输入1选择二进制文件
8.测试结果在: & & &/experiments/AlgorithmTesting/results.txt 每种算法目录下都有results.txt 文件中描述的是P-value值,在ALPHA = 0.0100条件下(默认值),貌似这个值大于0.01就表示差不多随机,越大越好。
我测试128M随机数包,数据量太大,因此分成8条流计算,得出结果15条算法中满足12条,剩余3条部分不满足,这3条基本上都是分段检测随机性的,主要有:
NonOverlappingTemplate、OverlappingTemplate、RandomExcursionsVariant.
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4071次
排名:千里之外
评论:11条
(1)(2)(1)(2)(1)(1)(1)[伪随机数]如何评价一个伪随机数生成算法的优劣?_伪随机数-牛宝宝文章网
[伪随机数]如何评价一个伪随机数生成算法的优劣? 伪随机数
网友蒙面大侠对[伪随机数]如何评价一个伪随机数生成算法的优劣?给出的答复:@余天升给出了一个直观的答案,不过这只是一个非常特殊的特例,实际上绝大多数随机数发生器用这种方法根本看不出来质量。正确的方法应该是参考德国联邦信息安全办公室给出了随机数发生器质量评判的四个标准。PDF链接在这里https://www.bsi.bund.de/cae/servlet/contentblob/478152/publicationFile/30552/ais20e_pdf.pdf里面列出了四个判别随机数序列质量的准则K1 ― A sequence of random numbers with a low probability of containing identical consecutive elements.K2 ― A sequence of numbers which is indistinguishable from 'true random' numbers according to specified statistical tests.K3 ― It should be impossible for any attacker (for all practical purposes) to calculate, or otherwise guess, from any given sub-sequence, any previous or future values in the sequence, nor any inner state of the generator.K4 ― It should be impossible, for all practical purposes, for an attacker to calculate, or guess from an inner state of the generator, any previous numbers in the sequence or any previous inner generator states.大致翻译:K1――相同序列的概率非常低K2――符合统计学的平均性,比如所有数字出现概率应该相同,卡方检验应该能通过,超长游程长度概略应该非常小,自相关应该只有一个尖峰,任何长度的同一数字之后别的数字出现概率应该仍然是相等的等等K3――不应该能够从一段序列猜测出随机数发生器的工作状态或者下一个随机数K4――不应该从随机数发生器的状态能猜测出随机数发生器以前的工作状态我们一般用的随机数发生器至少要符合K1和K2,而用于加密等应用的随机数发生器应该符合K3和K4。@余天升的例子里,应该是PHP的随机数发生器不满足K2。这是一个非常巧的例子,只是PHP 5在Windows底下调用rand()函数的时候会有这样的情况,别的组合不会产生这么巧的图像。实际上PHP提供了一个质量高的多,非常好的随机数发生器mt_rand(),在涉及网页安全的时候请选用这个函数。关于mt_rand()的原理,可以参考这个关于梅森旋转算法的Wiki网站:梅森旋转算法/ Mersenne twister(英文)。网友余天升对[伪随机数]如何评价一个伪随机数生成算法的优劣?给出的答复:一个比较简单的方法,用随机数填充一个位图,下面是一个填充黑白图像的例子。这个是用C#的System.Random类生成的随机数填充的位图这个是用php的rand函数生成的随机数填充的位图哪个比较差一目了然。网友王洪城对[伪随机数]如何评价一个伪随机数生成算法的优劣?给出的答复:谈到随机性,这大概是一个令人困惑哲学问题吧。随机行为精确地说究竟指的是什么,最好是有定量的定义。Kolmogorov曾提出一种判定随机性的方法:对于无穷的随机数序列,无法用其子序列描述。J.N.Franklin则认为:如果一个序列具有从一个一致同分布的随机变量中独立抽样获得的每个无限序列都有的性质,则是随机的。这些定义都不是很精确,有时甚至会导致矛盾。可见数学家在谈到这个问题时是多么的审慎。随机数生成器只是一种产生符合特定分布的随机数的算法。这些所谓的随机数序列实际上是周期性的。从实用的角度出发,随机数生成器如果能够在尽可能多的场合中产生正确的结果,那么它就是好的。但是这个愿望无法完全实现。因为每一个生成器都会在特定的场合失效,比如说可能无法达到随机数的均匀性或者随机数之间隐藏着关联。已经有大量的随机数生成器,但是找到好的、易移植的、达到工业水准的随机数生成器是一个难以实现的目标。生成非均匀分布的标准方法是先产生均匀分布随机数,然后将其转化为特定分布的随机数。我在博客关于随机数的笔记中有简易介绍。Knuth曾经说. . . look at the subroutine library of each computer installation in your organization, and replace the random number generators by good ones. Try to avoid being too shocked at what you find.@余天升的答案测试的大概是随机数分布的随机性和周期性,即随机数的出现无规律,周期要足够长(这是我猜的,猜错了表打我)。这当然是一个很好的方法,图也很简单直白。但是也有其他一些因素需要考虑。对于不同的应用,这些因素的重要程度并不一样。比如说用物理方法产生的真随机数比由数学方法产生的伪随机数随机性更强,更难破解,但这并不能说明物理方法产生的随机数质量更高。假设我们并能够事先知道应用的场景,应该如何评价一个生成器的质量呢?我们并不知道采样的过程、样本的大小或者仿真中的维度。以下两点是很重要的:生成器只提供预测,不提供保证。这是因为我们产生的只是有限数量的随机数,并且转换成特定分布的方法并不是足够好。因此,在特定的场合即使可靠的生成器也会失效。尽管没有保证,但是有数学上的安全性测度。这意味着我们可以从理论上知道周期长度、一些结构性质以及关联性等。周期长度会限制样本的大小;结构信息可以是我们确定在仿真中是否存在副作用;关联性质则对随机模拟而言很重要。不言而喻,随机数生成的方法应是快速的,占用内存少的,实现简单,可移植,可并发执行,对于不同的参数都应当具有均匀的速度。更加重要的检测内容是对其统计性质的检测。统计检验又分为两类:一类是理论检验,另一类是经验检验。先来说说理论检验。顾名思义,理论检验是先验的检验,能够预先告诉我们这些检验的结果将会是如何。如前所述,理论检验主要是检验随机数的周期,内在结构和关联性。发展这一类型的理论十分困难,至今的得到的结果一般是对整个周期的统计检验。对于线性同余算法得到的随机数,周期长度的平方根是一个比较好的样本大小的上限。因此对于一个好的生成器,必须能够使得对于某些参数能够得到最大的周期长度,并且能够计算出这样的参数。比如对于线性同余算法而言,最好的乘数是,模是.这个观点在很多书籍和论文中都有推荐,但是随着计算机计算能力的提高,这个观点已经不合时宜啦。因为对于现代的计算机而言,这样的周期还是太短了,现在而言m不应小于.生成器的内部结构如栅栏结构和超平面点的分布也很重要。对于不同的生成器有特定的检测方法。结构检测用到最多的就是谱检验,谱检验就是基于相邻平行超平面之间最大距离的检验,该距离越大,生成器越差。如下图所示:上图中随机数主要保持在平面内。对于二维的情况如下图所示:图中我们可以用少量的平行线来全部覆盖它们,由许多不同的平行线族,它们将会碰上所有的点。平行覆盖线的数目是一个重要的指标。图中我们可以用少量的平行线来全部覆盖它们,由许多不同的平行线族,它们将会碰上所有的点。平行覆盖线的数目是一个重要的指标。将随机数生成器应用在并行进程中尤其要注意的是随机数之间是否关联,即独立性检测。比如用线性同余算法得到的均匀分布经Box-Muller转换成正态分布得到的点落在一条螺旋线上,如下图:从理论上可以证明所有的线性和非线性同余序列都存在长周期相关现象。如果几个并行处理器分别使用同一个同余序列的不同段落,分割时就应该避开具有强相关的分点。以上的3副图给人一种触目惊心的感觉,没想到我们平常用到最多的线性同余算法产生的随机数是如此的”不随机“,我想这种震撼类似于第一次用显微镜观察微生物发现一个不可思议的微观世界。的确,这类似于我们用超高分倍率的显微镜来观察我们得到的随机数,只有对于很精确的应用情境这种观察才是有价值的,否则只是杞人忧天、庸人自扰了。在这种情况下,简单的线性同余序列肯定是不适用的,应当使用具有更大周期的生成序列,尽管实际上只要生成这个周期中的很小的一部分。理论检验是不够的,我们还需要经验检验。经验检验性对较简单,且有很多的方法。比如:等分布检验:又称均匀性检验,将【0,1[】区间分成k个相等的子区间,落在每个子区间的伪随机数个数应该相等。常用的是检验。序列检验:相继的数偶独立一致分布。计算的是数偶对的出现次数。间隔检验:用来考察在某个范围内序列的出现的间隔长度。扑克检验:考虑5个相继整数组成的n个组,观察其出现模式。........经验检验还有很多,不一一赘述了。当然即使通过了所有的统计测试,这也不能证明什么,但是这提高了我们使用这个生成器的信心。对于实际应用中,应该对不同的应用场景选择合适的生成器。当然也有一些通用的测量方法来告诉我们该生成器是否有可能是一个好的生成器。对于并行应用来说,很多通常情况下很好的生成器都不合适。我们可以为k个进程选择k个生成器,虽然这也不是一个很好的方法。通用的方法如下:有一个比喻:随机数生成器就像抗生素,每一种都有副作用,没有安全的随机数生成器。好的随机数生成器应该是有理论检验的支持,充分的经验证据和良好的实际表现。遵循以下一些建议对于合理使用随机数生成器很有帮助:不要相信只由一个生成器得到的随机数序列,在使用前用不同的生成器检验它们的结果。不要在没有理论依据和经验支持的情况下将几种生成器结合起来或并行。在使用前了解生成器的特性。以上网友蒙面大侠对[伪随机数]如何评价一个伪随机数生成算法的优劣?给出的答复:nist随机性测试方法频数测试:测试二进制序列中,“0”和“1” 数目是否近似相等。如果是,则序列是随机的。[1]块内频数测试:目的是确定在待测序列中,所有非重叠的 长度为M位的块内的“0”和“1”的数目是否表现为随机分布。如果是,则序列是随机的。游程测试:目的是确定待测序列中,各种特定长度的 “0”和“1”的游程数目是否如真随机序列期望的那样。如果是,则序列是随机的。块内最长连续“1”测试:目的是确定待测序列中, 最长连“1”串的长度是否与真随机序列中最长连“1”串的 长度近似一致。如果是,则序列是随机的。矩阵秩的测试:目的是检测待测序列中,固定长度子序列的线性相关性。如果线性相关性较小,则序列是随机的。离散傅里叶变换测试:目的是通过检测待测序列的周期性质,并与真随机序列周期性质相比较,通过它们之间的偏离程度来确定待测序列随机性。如果偏离程度较小,序列是随机的。非重叠模板匹配测试:目的是检测待测序列中,子序列是否与太多的非周期模板相匹配。太多就意味着待测序列是非随机的。重叠模板匹配测试:目的是统计待测序列中,特定长度的连续“1”的数目,是否与真随机序列的情况偏离太大。太大是非随机的。通用统计测试:目的是检测待测序列是否能在信息不丢失的情况下被明显压缩。一个不可被明显压缩的序列是随机的。压缩测试:目的是确定待测序列能被压缩的程度,如果能被显著压缩,说明不是随机序列。线性复杂度测试:目的是确定待测序列是否足够复杂,如果是,则序列是随机的。连续性测试:目的是确定待测序列所有可能的m位比特的组合子串出现的次数是否与真随机序列中的情况近似相同,如果是,则序列是随机的。近似熵测试:目的是通过比较m位比特串与m-1位比特串在待测序列中出现的频度,再与正态分布的序列中的情况相对比,从而确定随机性。部分和测试:目的确定待测序列中的部分和是否太大或太小。太大或太小都是非随机的。随机游走测试:目的是确定在一个随机游程中,某个特定状态出现的次数是否远远超过真随机序列中的情况。如果是,则序列是非随机的。随机游走变量测试:目的是检测待测序列中,某一特定状态在一个游机游程中出现次数与真随机序列的偏离程度。如果偏离程度较大,则序列是非随机的。参考 http://zh.wikipedia.org/wiki/%E9%9A%8F%E6%9C%BA%E6%80%A7测试程序前面有人给过了,这里重复一下地址 NIST.gov - Computer Security Division类似的测试标准和程序还有diehard The Marsaglia Random Number CDROM including the Diehard Batteryof TestsGNU Crypto - GNU Project这个项目里面有开源的ENT测试。主要测试有五项。详细信息见链接 Ent (GNU cryptographic primitives and tools, version 2.0.0)网友DannyLi对[伪随机数]如何评价一个伪随机数生成算法的优劣?给出的答复:有一系列的测试可以判断一个随机数生成器的优劣。NIST发布了一个工具包专门用来做这件事情。http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html网页为英文,而且我不知道是否需要翻墙。网友杨勤荣对[伪随机数]如何评价一个伪随机数生成算法的优劣?给出的答复:据我所知,卡方检测是一个比较有效的方法;还有一个方法就是以该随机数发生器为基础,用蒙特卡洛方法求高维数值积分(例如n维球的体积和面积),如果随机数生成器足够好,积分结果应该能很好地逼近理论值。网友蒙面大侠对[伪随机数]如何评价一个伪随机数生成算法的优劣?给出的答复:发现上面都是程序达人=.=作为小策划的我不太懂程序,从我自己的角度去重新定义下对我在设计游戏时对随机数的需求题主问的是如何判断伪随机数生成算法的优劣,从我的角度认为,达到设计需求的随机就是优秀的无论它是真或假,是否满足那个k1234其它领域不熟就不说,就游戏领域,我认为游戏领域不需要优秀的真随机,需要的都是优秀的伪随机。酷跑,我需要随机拼接场景,道具,分值,以达到不单调重复的目的。但是我又需要控制游戏节奏,用户的体验节奏,因此我需要根据用户的得分情况,失误操作去设置一堆的阀值,来调整随机规则,让用户不断产生一种错觉,这只是失误,就差一点点,都是因为xxx同理可推,抽奖、掉落、攻击、爆击、合成等。个人以为,在实际应用领域,满足设计需求的伪随机比算法优秀的真随机优秀太多太多,当然一切前提是说明随即需求,很多时候设计者自己都说不清他的随机需求是啥,只是觉得需要随机。也许只有现实才是真随机,当然,也有可能我们一直生活在我们看不见的伪随机规则之内,突然想到四个字,道法自然网友蒙面大侠对[伪随机数]如何评价一个伪随机数生成算法的优劣?给出的答复:看《TAOCP》第二卷网友金山对[伪随机数]如何评价一个伪随机数生成算法的优劣?给出的答复:请阅读NIST SP800-22文档,共15个测试项。NIST还提供对应的测试套件。采集完随机数,用渣电脑单线程测试的话,要好几个小时。网友Xi Yang对[伪随机数]如何评价一个伪随机数生成算法的优劣?给出的答复:题主你直接用MT19337吧。这个方法的随机性和均匀性都非常好,只是不加密。你自己查一下Mersenne Twister,然后看看你要用的语言有没有这个实现(有些语言会用这个作为默认的随机数生成器)。网友大帝恩对[伪随机数]如何评价一个伪随机数生成算法的优劣?给出的答复:要看具体问题。有时候在蒙特卡洛模拟中,使用quasi-random number(比如Halton)序列来进行模拟,虽然牺牲部分随机数的“独立性”,但可以使得误差显著的减小。所以有时候不能单纯的说一组随机数的好坏,要根据具体问题来选择随机数的生成方法。网友蒙面大侠对[伪随机数]如何评价一个伪随机数生成算法的优劣?给出的答复:http://samples.sainsburysebooks.co.uk/3_sample_412468.pdf此书的1.5节可以作为部分参考。以下为引用第一段的内容:The quality of random number generators can be assessed in two ways. The first is to investigate the theoretical properties of the random number generator. Such properties include the period length of the generator and various measures of uniformity and independence. This type of random number generator testing is called theoretical, as it does not require the actual output of the generator but only its algorithmic structure and parameters. Powerful theoretical tests are only feasible if the generators have a sufficiently simple structure, such as those of linear congruential and multiple-recursive methods and combined versions thereof. A second type of test involves the application of a battery of statistical tests to the output of the generator, with the objective to detect deviations from uniformity and independence. Such tests are said to be empirical. 网友白喵黑咪对[伪随机数]如何评价一个伪随机数生成算法的优劣?给出的答复:由于随机数是密码学中最为重要的安全组件,你可以参考相应密码学文献来生成随机数和伪随机数。从理论上说,任何伪随机数的生成方案破解等同于求解一个数学难题,从然后实践上讲,首先应该通过李楠讲到的nist测试包。已经记不太清楚,大致需要通过20种不同的攻击测试。如果你是想用而已,可以使用一些现成的加密算法库来用。如果是想自己弄,建议还是到此为止。各类无线通信协议的安全漏洞首先都是从随机数中冒出来的。随机数是密码学的一个大坑,都搞了几十年了。不懂就别弄,后果很严重。网友匿名用户对[伪随机数]如何评价一个伪随机数生成算法的优劣?给出的答复:https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Zertifizierung/Interpretationen/AIS_20_Functionality_Classes_Evaluation_Methodology_DRNG_e.pdf?__blob=publicationFile欢迎您转载分享:
更多精彩:帐号:密码:下次自动登录{url:/nForum/slist.json?uid=guest&root=list-section}{url:/nForum/nlist.json?uid=guest&root=list-section}
贴数:1&分页:PanDong发信人: PanDong (PanDong), 信区: DataScience
标&&题: 请教随机性检测软件包的使用方法,如ENT、NIST STS、Die Harder
发信站: 水木社区 (Sat Mar 19 13:58:21 2016), 站内 && [size=9]产生了随机数序列,要对其进行随机检测,下载了ENT 程序包和NIST STS程序包,但不知道怎么使用,请问谁有这方面的资料,或者知道怎么用吗?[/size] && -- && ※ 来源:·水木社区 ·[FROM: 58.200.129.*]
文章数:1&分页:
抽奖到手软!将狂欢进行到底! 上传我的文档
 下载
 收藏
大部分资料来源于网络,仅供大家参考学习,版权归原作者。若有侵权,敬请留言告知,本人会及时删除侵权文档,谢谢!
 下载此文档
正在努力加载中...
基于不同产生机制的伪随机序列和DNA序列的随机性测量【论文分享】
下载积分:2000
内容提示:基于不同产生机制的伪随机序列和DNA序列的随机性测量【论文分享】,论文,测量,基于,随机序列,伪随机序列的,序列和,伪随机序列,随机性,论文伪随机序列,dna序列,dna序列分析,dna序列比对,dna序列测定
文档格式:PDF|
浏览次数:0|
上传日期: 11:22:28|
文档星级:
该用户还上传了这些文档
基于不同产生机制的伪随机序列和DNA序列的随机性测量
官方公共微信

我要回帖

更多关于 频数与频率 的文章

 

随机推荐