间隙平均在线随机性测试的制作方法

文档序号:2391895阅读:169来源:国知局
专利名称:间隙平均在线随机性测试的制作方法
背景技术
1.发明领域 本发明涉及随机数生成器领域,具体来讲,涉及一种用于生成真二进制随机序列的数字数据处理设备和方法。
2.相关技术描述 在这个计算机时代中,随机数生成器是十分重要的。但是在实际应用中,很难生成真随机序列。例如,当随机数生成器在一定时间周期上生成1的和0的序列时,它的硬件部件中通常产生热量。生成1比特可以比0比特消耗更多功率。照此,如果生成1比特的长序列,那么电路将变热。这样,如果电路发热时生成1比特,那么会令该电路“闭锁(latch up)”,由此大部分是生成1比特而很少地生成0比特。如果当电路变热时生成0比特,可能会出现不同的效果。在该情况下,1比特的长子序列变得非常罕有,并且构成非随机的属性。在长的子序列偶而由0的或者1的相等比特组成的随机序列中,偏离的0/1频率误差将具有破坏安全性的灾难性结果。
因此,当进行随机性测试时,必须进行硬件篡改和部件故障的检测。常规的随机性测试对所生成的随机数通过大量的统计测试来执行,诸如X2测试、Δ测试等等。然而,由于这种测试需要大量的计算处理功率,因此实时执行这种测试是费用浩大的。
发明概要 本发明克服了上述问题,并且通过提供一种用于提供在线随机性测试以确保所生成的随机数对由未授权方不易进行加密分析的方法和设备,由此提供了额外的优点。
依照本发明的一方面,一种用于测试随机数流的随机性方法,包括以下步骤生成随机二进制比特的连续流;将所生成的随机比特应用于指数平均间隙计算,以计算完全相同比特模式的出现之间的平均间隙长度;以及,通过比较所述指数间隙运算的输出与预定验收范围(acceptance range),来确定所生成的随机比特是否是充分地随机的。所述方法还包括以下步骤当至少一个平均间隙长度重复地超出(fall outside)预定验收范围达到预定次数以上时,确定所生成的随机比特是不充分地随机的;当至少一个平均间隙长度重复地超出预定验收范围达到预定次数以上时,通知所生成的随机比特是不充分地随机的;以及,当至少一个平均间隙长度重复地超出预定验收范围达预定次数以上时,生成一个新的随机比特组,或者作为选择,当至少一个平均间隙长度重复地超出预定验收范围达预定次数以上时,拒绝所生成的随机比特用于后续的应用程序。在所述实施例中,完全相同比特模式包括来自于所生成的随机比特的固定数目的连续比特。
依照本发明的另一方面,一种用于评估由随机数生成器生成的随机数的方法,包括以下步骤(a)利用随机数生成器生成随机比特流;(b)把所生成的随机比特应用于间隙长度计算;(c)将间隙长度计算的输出应用于指数平均,以获得完全相同比特模式的出现之间的平均间隙长度;(d)比较平均间隙长度与预定验收范围;以及,(e)确定至少一个平均间隙长度是否超出预定验收范围达预定次数以上,并且如果是这样的话,则当任意平均间隙长度超出预定验收范围达预定次数以上时,确定所生成的随机比特是不充分地随机的。如果每个平均间隙长度在预定验收范围内时,重复步骤(a)-(e),直到至少一个平均间隙长度超出预定验收范围,并且当重复步骤(a)-(e)达预定次数以上时,通知生成了不充分地随机的数。在所述实施例中,如果步骤(a)-(e)被重复达预定次数以上,那么生成一个新的随机数组。
依照本发明的再一方面,一种用于评估由随机数生成器生成的随机数的设备,包括用于生成包括二进制比特的随机序列的装置;用于根据指数平均间隙长度运算来检测所生成的随机序列是否是不充分地随机的装置;以及,用于当确定所生成的随机序列是不充分地随机之时,为后续的应用控制所生成的随机序列流的装置,其中,执行指数平均间隙运算,以便计算完全相同比特模式之间的平均间隙长度,并且其中,如果至少一个平均间隙长度重复地超出预定验收范围达预定次数以上,则确定所生成的随机序列是不充分地随机的。所述设备还包括用于当至少一个平均间隙长度重复地超出预定验收范围达预定次数以上时,发送所生成的随机序列是不充分地随机的报警信号的装置,以及用于当至少一个平均间隙长度重复地超出预定验收范围达预定次数以上时,生成一个新的随机比特组的装置。
又一个方面在于本发明可以采用特定应用所希望的的硬件、软件或者硬件和软件的组合加以实现。
此外,本发明能够以简单、可靠并且廉价的设备来实现。
当结合附图阅读以下详细说明时,这些及其他优点将对所述领域技术人员变得更加显而易见。
附图简述

图1举例说明了依照本发明实施例的随机数生成模块的简化框图; 图2示出了依照本发明实施例对随机数序列执行随机性测试的图表;以及, 图3是举例说明依照本发明实施例测试所生成的随机数统计量的操作步骤的流程图。
实施例的详细说明 在随后的描述中,为了说明的目的而不是限制,规定了特定细节,诸如特定体系结构、界面、技术等,以便提供对本发明的彻底的了解。然而,对于本领域技术人员显而易见的是,本发明可以依照脱离这些特定细节的其他实施例实施。为了简明并且清楚,省略了对众所周知的设备、电路以及方法的详细说明,免得因不必要的细节而使本发明的描述模糊。
图1举例说明了依照本发明示范性实施例的随机数生成系统10的简化框图。系统10包括随机数生成器(RG)12,用于生成一连串随机数,还包括检测器14和开关16。在此公开内容中,“随机数”表示任何二进制信号序列,高斯型曲线或者信号的任何其他分布,表示0和1之间的数的信号序列,表示十进制数的信号序列,或者包括所希望的随机性的任何其他形式。照此,此公开内容中的RG 12指的是任何可以生成信号的设备,所述信号可以依照任何常规的或者非常规的方式转换为二进制比特序列。开关16可以表示到加密系统,音频或者视频噪声生成器,计算机程序或者其他设备和处理的输入。
在操作中,当随机数生成器12生成随机数时,检测器14依照预定标准(稍后解释)检测所生成的随机数是否是真随机序列。如果确定它们是真随机的,那么开关16允许所生成的随机数用于后续的应用,诸如任何电路、系统、处理、游戏应用、模拟、统计抽样、Diffie-Hellman密钥交换等等,这些使用由RG 12提供的随机数。然而,当检测器14认为所生成的随机数是不充分地随机之时,开关16停止所生成的随机数流。作为选择,如果确定所生成的随机数是不充分地随机的,那么可以生成一个新的随机数组 现在,参照图2和3,就确定所生成的随机数是否是充分地随机的,而进行详细描述。参照图2,依照本发明实施例,当RG 12在运行中时,实时地测试随机数,以确保所生成的随机数是充分地随机的。当RG 12生成随机比特连续流时,检测器14计算相同比特模式的出现之间的平均间隙长度,然后将完全相同比特序列的平均间隙分布与理想的间隙范围或者预定验收范围相比,以确定生成的随机数序列是否是充分地随机的。由此,测试随机性的灵敏度可以通过放松或者紧缩验收范围来进行调节。如以下进一步讨论的,利用指数平均处理执行平均处理。应该注意的是,存在各种计算和平均法,它们可以依照本发明的技术实现;然而优选使用指数平均,如下所述。此外,通过以已知的、良好资源的随机数的大量的模拟,可以获得精确的验收范围。
如图2所示,每当生成新的随机比特时,将新比特附加到先前比特序列,直到收集了k个比特。图2出于图示的目的而举例说明了一组6比特作为k比特单位;然而,应该理解的是,本发明可以支持任何正整数数目的k个比特。由此,附图中的6比特分组不应该理解为对本发明范围的限制。为每个可能的bn模式(0≤n<2k)初始化指数平均累加器A。此外,当此比特模式最后出现时,记录时间。出现之间的间隙由最后出现和当时的记录的时间的差值定义。如图2所示,当模式出现在块b1、和块b3时,对应于模式“000000”的间隙是2。当模式出现在块b2、和块b6时,对应于模式“001100”的间隙是4。当模式出现在块b4、和块b7时,对应于模式“010100”的间隙是3。当确定相同比特模式出现之间的间隙时,更新平均间隙计数器。相应的累加器用当前比特模式bn来编制索引,其被当做二进制数。
应注意的是,连续地运行随机数生成器和随机性测试,如此表明何时特定比特模式出现的时间值不确定地增长。然而,10倍于所希望的间隙长度的间隙出现得非常少,1000倍长的间隙几乎从未出现。因此,k+6...10比特通常足够确切地计算间隙。从而,用于本发明的所存储的时间值的最低有效比特的优选数目介于k+6和k+10之间的范围。依照此数据表示方法,作为时间值差值的间隙长度需要根据循环次序来计算。
在所述实施例中,连续地运行间隙平均计数过程。照此,必须周期地清除计数器或者累加器A以避免溢出。为此目的,在本发明中使用了指数平均,其中在执行平均加法以前,累加器A以确定的0<α<1因子减少,因此它决不会变得很大。也就是说,为了节省存储和执行时间,在本发明中应用了指数平均以跟踪实际平均间隙长度。指数平均具有这样的属性,即每当在累加器A中更新平均数时,旧的平均值将具有减小效应。应该注意的是,存在各种计数法,它们可以依照本发明的技术实现;然而优选的是使用指数平均,如下所述。
所述指数平均依照下列方式工作。每当获得需求平均的数值b时,将0和1之间的因子α(0<α<1)乘到累加器A,然后将b与其相加Anew=α·Aold+b。在此应用中,b表示相同比特模式出现之间的间隙长度。为了具有有益的平均效应,选择α的值接近1,α=1-1/n,n>>1。在该情况下,logα≈1/n,并且平均数的半衰期是k≈n·log2≈0.30103·n。在n步骤之后,最旧的平均值的权重变成(1-1/n)n≈1/e≈0.367879。这里,e是自然对数的底数(欧拉常数),如此可以将项n称为平均值的自然寿命。如果要平均的全部值是1,那么累加器值是1+α+α2...=1/(1-α)=n,而如果全部比特是0,那么累加器值是0。应注意的是,指数平均的预期值是单个随机变量的期望值的指数平均。如果它们是均匀分布的二进制比特,那么预期值是1/2+1/2α+1/2α2+...=n/2。
如上所述,当累加器以确定的0<α<1因子减少时,指数平均用于清除计数器;由此,累加器在运算模式期间决不会变得太大。一旦为每个累加器执行指数平均,则将指数平均的值与预定验收范围相比较。也就是说,通过比较每个累加器的值与预定验收范围值,确定生成的随机数模式是否是充分地随机的。如果在平均处理期间、任意累加器的值都超出预定范围值,那么推断所生成的随机数就不是充分地随机的。这里,可以设置阈值,当测试重复地失败时通知用户。根据从以已知的、良好资源的随机数的大量模拟中获得的数据可以有选择地调节确切的边界,在所述随机数中可以获得理想的间隙分布。这种随机序列可以购买,并且例如可以从各种网络资源下载,包括“www.fourmilab.ch/hotbits”和“lavarand.sgi.com”。由此,操作者有选择地设置用于测试的实际范围,以便就所生成的随机序列是否可被未授权方预测而言,可以选择不同的灵敏度。
图3是举例说明依照本发明实施例测试随机序列统计质量的操作步骤的流程图。矩形单元表明计算机软件指令,而菱形单元表示影响由矩形方块表示的计算机软件指令的执行的计算机软件指令。作为选择,处理和判定块表示由功能等效电路执行的步骤,所述电路诸如数字信号处理器电路或者专用集成电路(ASIC)。应该注意的是,诸如循环和变量初始化的许多例行程序单元和临时变量的使用没有示出。本领域中普通技术人员将理解的是,在此除非另有说明,否则描述的步骤的特定顺序只是说明性的,并且可以变化,而不脱离本发明的精神。
如图3所示,在步骤100,当随机数生成器12生成随机二进制比特的连续流时,启动随机性测试。在步骤120,所生成的随机比特受到间隙平均测试,其中计算规定长度的完全相同比特模式之间的间隙分布。每当发现相同比特模式之间的间隙时,在步骤140,在每个累加器中更新一个指数平均间隙值的组。这里,全部的先前指数平均间隙值以因子α(0<α<1)减少,然后将新的间隙长度添加到相应累加器,如此使得旧的平均间隙值将具有减少效应。
此后,在步骤160,在受到指数平均运算之后的平均间隙值与预定验收范围或者各个预定验收范围相比较。如果每个累加器A中任何值超出预定验收范围,那么在步骤200确定已经检测到非随机的模式,并且计数器加1。否则,在步骤180重置计数器,并且返回到步骤100,以处理随机数。在步骤220,如果计数器的值大于阈值,那么在步骤240发送所生成的随机数不是充分地随机的通知。作为选择,可以使开关16无效,以为后续的应用停止随机数流。然后,可以丢弃所生成的随机数,并且可以开始生成新的随机数的整个过程。如果在步骤220计数器的值没有超过阈值,那么重复生成随机数的过程。
如上所述的各种步骤可以通过将它们编程为函数,且并入应用内来实现,并且本领域的普通程序员可以利用通常的编程技术来实现,例如使用C、Visual Basic、Java、Perl、C++等等来实现。在示范性实施例中,在图3中描述的方法可以如下构造(利用C程序设计语言)。为简单起见,我们利用浮点运算实现测试。
附录MS Visual C代码   /***************************************************\  * GapAvg.c  * GapAvg<#random words><bit generator type><bit<br/>generator param>  * 生成测试比特  * 对6比特字(不重叠的)执行GapAvg测试  * 循环16位计数器确定字出现之间的间隙  * 间隙的指数平均  * 打印测试统计  *  * 其他测试必须验证相等的字频率  *  * GapAvg 5e7 0 0.5  * 6比特字的指数间隙统计量的最大值最小值=58763.373812.8  *  * GapAvg 5e6 0 0.49  * 在6比特字间隙统计中在字66058的太大的偏置74003.8[5850074000]  *  * GapAvg 5e6 2 6 0 1 63[所有6比特字]   6比特字的指数间隙统计量的最小最大值=65536 65899.6  * GapAvg 5e6 2 6 0 1 57[58/64规律设置的字通过间隙减<br/>小但不波动]  * 6比特字的指数间隙统计量的最小值最大值=59392 65893.6  *  * GapAvg le6 2 6 0 1 56[57/64规律设置的字失败]  * 在6比特字间隙统计中在字236499的太大偏置58499.9[5850074000]<!-- SIPO <DP n="7"> --><dp n="d7"/>  *  * Vers.1.0 04/22/01由Laszlo Hars创建  *  \*******************************************************/  #include<stdio.h>  #include<stdlib.h>  //Multiplyer=1-1/2^10  #define W 0.9990234375  #define W0 6.59e4  #define LO 5.85e4  #define HI 7.40e4  #define WDLEN 6  #define WDNUM (1<<WDLEN)  #define MAX(A,B)((A)>(B)?(A):(B))  #define MIN(A,B)((A)<(B)?(A):(B))  #define MASK16((1<<16)-1)  typedef unsigned_int16 uint16;// 具有循环差的16位计数器  // 外部函数原型  void BitGenInit(int argc,char*argv[]);  unsigned int NextBit();<!-- SIPO <DP n="8"> --><dp n="d8"/>int main(int argc,char*argv[]){int d,i,k,wd,n=(int)atof(argv[1]);uint16 c[WDNUM];double s[WDNUM],smin=1e9,smax=0;if(argc<4){  printf(″UsageGapAvg<#random words><bit generator type><bit generatorparams...>\n″);  putchar(′\a′); // 振铃  exit(1); }BitGenInit(argc,argv);for(i=0;i<WDNUM;++i) // 初始化运行平均  s[i]=W0;for(i=0;i<9*WDNUM;++i){ // 初始化计数器  wd=NextBit();  for(k=1;k<WDLEN;++k)   wd=(wd<<1)+NextBit();  c[wd]=(i &amp; MASK16);}for(i=9*WDNUM;i<n;++i){  wd=NextBit();  for(k=1;k<WDLEN;++k)   wd=(wd<<1)+NextBit();  d=(i &amp; MASK16)-c[wd];  c[wd]=(i &amp; MASK16);  if(d<=0)d=d+MASK16+1; // 循环计数  s[wd]=s[wd]*W+d; // 指数平均  smax=MAX(s[wd],smax); // 微调验收范围<!-- SIPO <DP n="9"> --><dp n="d9"/>   smin=MIN(s[wd],smin);   if(s[wd]<LO‖s[wd]>HI){   printf(″Too large bias at word %d in 6-bit word gap statistics %g[%g%g]\n″,i,s[wd],LO,HI);   exit(2);}}printf(″Min Max of exponential gap statistics of 6-bit words=%g %g\n″,smin,smax);} 虽然已经举例说明并且描述了本发明的优选实施例,但是本领域技术人员可以理解的是,在不脱离本发明的真实范围的情况下,可以作出各种改变和修改,并且对本发明的单元进行等效代替。另外,在不脱离本发明的中心范围的情况下,可以作出许多修改来适用于特定情况和本发明的讲授。因此,不能将本发明限制为依照用于执行本发明的最佳方式公开的特定实施例,而是本发明包括属于所附权利要求书的范围内的所有实施例。
权利要求
1.一种用于测试随机数流的随机性的方法,所述方法包括以下步骤
生成随机二进制比特的连续流;
将所述生成的随机比特应用于指数平均间隙计算,以计算至少两个完全相同比特模式之间的平均间隙长度;并且,
通过比较所述指数间隙运算的输出与预定验收范围,来确定所述生成的随机比特是否是充分地随机的。
2.如权利要求1所述的方法,还包括以下步骤当至少一个平均间隙长度重复地超出所述预定验收范围达预定次数以上时,确定所述生成的随机比特是不充分地随机的。
3.如权利要求1所述的方法,还包括以下步骤当至少一个平均间隙长度重复地超出所述预定验收范围达预定次数以上时,通知所述生成的随机比特是不充分地随机的。
4.如权利要求1所述的方法,还包括以下步骤当至少一个平均间隙长度重复地超出所述预定验收范围达预定次数以上时,生成一个新的随机比特组。
5.如权利要求1所述的方法,其中所述完全相同比特模式包括来自于生成的随机比特的固定数目的连续比特。
6.如权利要求1所述的方法,还包括以下步骤当至少一个平均间隙长度重复地超出所述预定验收范围达预定次数以上时,拒绝所述生成的随机比特用于后续的应用。
7.一种用于评估由随机数生成器(12)生成的随机数的方法,所述方法包括以下步骤
(a)利用所述随机数生成器(12)生成随机比特流;
(b)将所述生成的随机比特应用于间隙长度计算;
(c)将所述间隙长度计算的输出应用于指数平均,以获得至少两个完全相同比特模式之间的平均间隙长度;
(d)比较平均间隙长度与预定验收范围;以及,
(e)确定至少一个平均间隙长度是否超出所述预定验收范围达预定次数以上。
8.如权利要求7所述的方法,还包括以下步骤当任何平均间隙长度超出所述预定验收范围达所述预定次数以上时,确定所述生成的随机比特是不充分地随机的。
9.如权利要求7所述的方法,进一步包括步骤
如果每个平均间隙长度在所述预定验收范围内,那么重复所述步骤(a)-(e),直到至少一个平均间隙长度超出所述预定验收范围。
10.如权利要求9所述的方法,还包括以下步骤当所述步骤(a)-(e)被重复达所述预定次数以上时,通知生成了不充分地随机的数。
11.如权利要求9所述的方法,还包括以下步骤当所述步骤(a)-(e)被重复达所述预定次数以上时,生成一个新的随机数组。
12.如权利要求7所述的方法,其中所述完全相同比特模式包括来自于所述生成的随机比特的固定数目的连续比特。
13.一种用于评估由随机数生成器生成的随机数的设备,包括
用于生成包括二进制比特的随机序列的装置(12);
用于根据指数平均间隙运算来检测所述所生成的随机序列是否是不充分地随机的装置(14);以及,
用于当确定所述生成的随机序列是不充分地随机之时,为后续的应用控制所述生成的随机序列流的装置(16),
其中,执行所述指数平均间隙运算,以便计算至少两个完全相同比特模式之间的平均间隙长度,并且其中,如果至少一个平均间隙长度重复地超出预定验收范围达预定次数以上,则确定所述生成的随机序列是不充分地随机的。
14.如权利要求13所述的设备,还包括用于当至少一个平均间隙长度重复地超出所述预定验收范围达所述预定次数以上时,发送所述生成的随机序列是不充分地随机的报警信号的装置。
15.如权利要求13所述的设备,还包括用于当至少一个平均间隙长度重复地超出所述预定验收范围达所述预定次数以上时,生成一个新的随机比特组的装置。
16.一种机器可读介质,其上存储有表示指令序列的数据,并且所述指令序列当由处理器执行时,令处理器执行
处理随机二进制比特的连续流;
将所述生成的随机比特应用于指数间隙长度运算,以计算至少两个完全相同比特模式之间的平均间隙长度;并且,
通过比较所述指数间隙计数的输出与预定验收范围来确定所述生成的随机比特是否是不充分地随机的。
17.如权利要求16所述的存储介质,其中当至少一个平均间隙长度超出所述预定验收范围时,确定所述生成的随机数是不充分地随机的。
18.如权利要求16所述的存储介质,其中当至少一个平均间隙长度超出所述预定验收范围时,所述处理器进一步操作用于处理一个新的随机比特组。
19.如权利要求16所述的存储介质,其中当至少一个平均间隙长度重复地超出所述预定验收范围达预定次数以上时,所述处理器进一步操作用于拒绝所述生成的随机比特用于后续的应用。
全文摘要
本发明是用于实时测试由随机数生成器生成的随机数的方法和设备。利用所述随机数生成器生成随机比特流,然后,所生成的比特流经受到间隙长度计算操作,其中识别具有完全相同比特模式的全部子序列,并且将由此产生的间隙长度应用于指数平均,以便获得完全相同比特模式之间的平均间隙长度。将平均间隙长度与至少一个预定验收范围相比较,由此如果至少一个平均间隙长度重复地超出预定验收范围达预定次数以上,那么确定所生成的随机比特是不充分地随机的。
文档编号G09C1/00GK1643492SQ03806858
公开日2005年7月20日 申请日期2003年2月26日 优先权日2002年3月26日
发明者L·哈尔斯 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1