随机数发生器和用于生成随机数种子的方法

文档序号:6560419阅读:351来源:国知局
专利名称:随机数发生器和用于生成随机数种子的方法
技术领域
本发明一般涉及随机数发生器,尤其涉及使用振荡器阵列的随机数发生器。
背景技术
出于安全方面的原因,处理器使用了随机数发生器。在处理器每次加电的时候,它会产生一个随机数种子。该处理器会在外部数据传输中提供一个来自随机数种子的随机数,以便将特定处理器标识给外部处理器或数据处理系统。举例来说,该随机数种子包含了多个数字位,这些数字位是在处理器加电的时候被存储。然而,传送到外部源的随机数有可能是随机数种子本身,或者是随机数种子的变形。而安全方面的问题则在于特定处理器仅仅希望被数据传输中的一个或多个预定方所识别。如果外部方可以确定随机数种子,那么他们有可能侵入特定处理器。因此,随机数发生器在处理器每次加电的时候都为处理器提供了一个不同的随机数种子。在随机数序列中是不应该存在重复数字的,并且外部方应该无法对随机数种子进行逆向工程而入侵处理器。相应地,随机数发生器的最终目的是产生无法被逆向工程的真正随机的数字。
用于产生随机数的一种常规方法包括创建一个电路,该电路产生噪声并且将噪声放大到数字电平。然后,处理器对噪声发生器进行采样,以便拾取一个随机位。如果所述采样是间隔良好和不规则的,并且1和0的数字不具有相同的被采样概率,那么这种随机数发生器会很好地工作。另一种常规方法包括在时间上累积这些数字(digital number),以产生随机数。这种后处理可以通过进一步阻碍逆向工程来改进这种随机数发生器。被采样的硬件混沌电路是另一种形式的随机数机器。混沌电路具有各种平衡和相关性问题,并且可能无法与真正随机的信源紧密关联。这些技术的问题在于这些技术都是确定性的、可发现的以及不够随机的。如果可以发现所产生的随机数,那么将会出现安全问题。因此,明显的是,能够产生显示出更多的随机性以及更少的可发现性的随机数种子的随机数发生器会是对现有技术的一个重大改进。

发明内容
本发明提供了一种用于产生随机数种子的随机数发生器、方法以及计算机程序产品。在一振荡器阵列内部的每一个振荡器都在不同的频率上工作的。每一个振荡器的工作频率并不是谐波相关的,由此在任何两个振荡器的步骤之间不存在整数倍数。在一个实施例中,该振荡器阵列的输出与一个多输入锁存器相连。单输入锁存器的阵列可以替代该多输入锁存器。该多输入锁存器也接收一个采样信号,该信号是一个时钟信号。该时钟信号对振荡器阵列的输出进行采样,并且该多输入锁存器与随机数确定逻辑(“RNDL”)一起为该阵列内的每一个振荡器产生一个数字输出(0或1)。RNDL使用这些数字输出来创建一个随机数种子。相应地,所述随机数种子是一个二进制数,其中该随机数种子中的数字的数量与阵列内的振荡器数量相同。
在一个优选实施例中,该振荡器阵列包含了若干多级自由振荡的环形振荡器,其中每一个振荡器都在具有随机抖动的情况下工作。导致被测周期不同于振荡器固有周期的噪声成分被称为抖动。因此,每一个振荡器的抖动以及阵列内部任何两个振荡器之间的相对相位不确定性随时间累积。振荡器之间的频率差异也产生随时间增长的确定性的相位不确定性。这些特征导致相比于先前的随机数发生器随机数种子具有更大的随机性以及更小的可预测性。


为了更全面地理解本发明以及本发明的优点,现在将结合附图来参考下面的描述,在附图中图1描述了包含随机数发生器的处理器的框图;图2描述了经过修改的随机数发生器的框图,该随机数发生器包括一个振荡器阵列以及随机数确定逻辑;图3描述了一个样本累积直方图,该直方图描述了振荡器内的随机抖动;图4描述了一个基于对数的图,该图表描述了基于自由振荡的振荡器经验数据的模拟结果;图5描述了示出了随机数生成过程的流程图;以及图6描述了一个数据处理系统的框图;具体实施方式
在下面的论述中阐述了大量的特定细节,以便提供关于本发明的全面理解。然而,本领域技术人员将会了解,本发明可以在没有这些特定细节的情况下实施。在其他情况中,采用了示意图或框图的形式来描述众所周知的部件,以免以不必要的细节混淆本发明。此外,在大多数情况下,省略了涉及网络通信、电磁信号传送技术等方面的细节,因为这些细节没有被认为是全面理解本发明所必需的,并且这些细节被认为处于相关领域的普通技术人员的理解范围之内。
此外还应该指出,除非另有说明,否则这里描述的所有功能都是既可以在硬件中也可以在软件中并且还可以在硬件与软件的某种组合中实现。然而,在一个优选实施例中,这些功能是在硬件中实现的,以便提供最有效的实现。作为另一种选择,除非另有说明,否则这些功能也可以由诸如计算机或电子数据处理器的处理器根据被编码为执行此类功能的代码来执行,所述代码例如是计算机程序代码、软件和/或集成电路。
图1描述了包含随机数发生器的处理器100的框图。如参考图6所示,处理器100可以与多个不同组件相连。控制逻辑102依照一组在处理器100内部运行的指令而将控制信号发送到处理器100内部的装置。因此,控制逻辑102将控制信号发送给主时钟104、振荡器阵列106、普及(pervasive)处理器108以及随机数确定逻辑110。主时钟104为处理器100提供全局时钟信号。此外,主时钟104将全局时钟信号馈送到控制逻辑102以及随机数确定逻辑110。
振荡器阵列106包含了多个振荡器,这些振荡器在不同的频率上产生信号。在本图中,振荡器阵列106示出在一个方框中,但在本发明的实现中,振荡器阵列可以被置于处理器100上的任何位置。振荡器阵列106的输出馈送到随机数确定逻辑(“RNDL”110)。RNDL 110则从振荡器阵列106的输出中产生随机数。RNDL 110将该随机数传送到普及处理器108(也称为维护处理器)。普及处理器108的应用是特定于实现的,但是它可以控制电源、随机数发生器、振荡器、以及片上时钟。通常,处理器100随需产生随机数种子。处理器100可以为每一次加电请求一个随机数种子,或者普及处理器108也可以为外部数据传输请求一个随机数种子。
在本图中,普及处理器108接收该随机数,并且将其传送到控制逻辑102,其中所述控制逻辑102可以将随机数提供给外部源。相应地,普及处理器108可以发出其自身的控制信号,但是在本图中,控制逻辑102发出控制信号。振荡器阵列106以及RNDL 110构成了随机数发生器。所述随机数发生器是独立的,并且可以处于处理器100内部的任何位置。本图则是处理器的一个示例,并且并未限制本发明的范围。
图2描述了经过修改的随机数发生器200的框图,所述随机数发生器包含了振荡器阵列以及随机数确定逻辑。振荡器阵列106涉及图1。如先前所述,振荡器220、222以及224不是必须像本图中显示的那样排列。振荡器阵列106的输出馈送到一个多输入锁存器202。该锁存器202可以是多输入的D触发器(flip-flop),也可以是常规的多输入锁存器。图2显示了多输入锁存器202,但是一个单输入锁存器阵列也可以替换多输入锁存器202。相应地,一个单输入锁存器与每一个相应的振荡器相连。因此,振荡器220经由输入线204来馈送输入D1,振荡器222经由输入线206来馈送输入D2,而振荡器224经由输入线208来馈送输入DN。这个多输入锁存器202为来自图1的RNDL 110提供了振荡器输出212、214、216。在本发明的不同实施例中,多输入锁存器202也可以处于RNDL 110上或是振荡器阵列106上。采样信号210是锁存器202的一个输入。在这种实现中,采样信号210是来自图1的主时钟104的时钟信号。时钟信号210对振荡器阵列106的输出进行采样。而时钟信号输入210不调整或校准这些振荡器。
锁存器202与RNDL 110一起提供了作为数字位(1或0)的振荡器220、222和224的输出。相应地,振荡信号从高电压振荡到低电压。锁存器202所进行的一个振荡信号采样显示一个高电压或一个低电压。在一个实施例中,RNDL 110为高电压分配1,为低电压分配0。锁存器202响应于时钟信号210而对数字位进行采样。举例来说,锁存器202可以在全局时钟信号的上升沿提供数字位。相应地,Q1212是振荡器220的数字位表示,Q2214是振荡器222的数字位表示,而QN216则是振荡器224的数字位表示。振荡器阵列106中的振荡器的数量决定随机数的位长度。在本图中,三个振荡器220、222和224与RNDL 110一起产生一个3位的随机数,例如“001”或“101”。随机数确定逻辑110将数字位输出Q1212、Q2214、QN216变换成一个随机数。为了提供还要更大的随机性,随机数确定逻辑110可以采用多种方式将这些数字位变换成一个随机数。举例来说,第一个随机数可以包括Q1212、Q2214以及QN216,第二个随机数可以包括QN216、Q2214以及Q1212,而第三个随机数可以包括Q2214、QN216以及Q1212。如先前所述,在本发明中,多个D触发器或锁存器可以替换锁存器202。举例来说,三个单独的锁存器可以提供Q1212、Q2214以及QN216。图2描述了一个多输入锁存器202,这是因为该实施例使得测试的复杂性减小。对测试而言,多输入锁存器202仅仅接收一个测试模式,并且结果可以从锁存器212、214以及216的输出中读取。而多个锁存器需要多个测试模式。
在一个优选实施例中,振荡器220、222以及224分别在不同的高频F1、F2以及FN上工作,由此没有两个频率是谐波相关的。因此,阵列106内的振荡器是相互独立的,并且在任何两个振荡器的频率之间不存在整数倍数。举例来说,图2中的三个振荡器220、222以及224可以分别在2.656GHz、1.713GHz以及.923GHz的频率上工作。高的谐波相关的频率可能导致相互紧邻的振荡器显现出注入锁定(injection locking)效应。注入锁定效应导致振荡器以协调一致的方式工作,而这会对随机数发生器的随机性产生不利影响。通过使用频率非谐波相关的振荡器,本发明使得能够以彼此紧邻的方式来包含这些振荡器,而不会显现出注入锁定效应。处理器100可以在提供了随机数之后断开随机数发生器200的电源,也可以使随机数发生器200继续处于通电状态。
在一个优选实施例中,振荡器阵列106包括N个多级自由振荡的环形振荡器,每一个振荡器都在具有随机抖动的情况下工作。一个振荡器产生具有固有的频率和周期(举例来说,处于2.656GHz的时钟信号具有大小为377ps的周期)的时钟信号。导致被测周期不同于振荡器固有周期的噪声成分称为抖动。抖动同时包含了确定性(例如电源噪声之类的特定原因)内容和随机内容。本公开集中在随机抖动上,这是因为相似的确定性抖动将会施加于阵列中的所有振荡器。抖动的随机部分则可以借助高斯分布统计来描述。
图3描述了一个样本累积直方图300,该直方图示出了振荡器内部的随机抖动。该直方图300显示了高斯分布统计的属性。该直方图300描述的是频率为2.565GHz并且周期为377ps的环形振荡器。y轴是为特定周期测得的命中数量。换句话说,该振荡器进行了很多次采样,并且测得的周期被记录为命中。相应地,对于一个周期的少量的命中表明这个特定周期是稀少的,而大量的命中则表明所述特定周期是普遍的。该直方图示出,由于振荡器的周期因为抖动而一直改变,因此,来自特定振荡器的一个采样是无法预测的。
因此,假设来自某个振荡器的随机抖动是均值为零的高斯抖动,那么Jrms=Ji√(M);
其中Jrms=M个周期之后的均方根(“RMS”)累积抖动Ji=本征RMS随机抖动M=周期数量举个例子,如果对RMS抖动(Jrms)为7.525ps的2.656GHz振荡器采样100毫秒的时间(这相当于M=265,000,000个周期)里,那么累积的抖动将是122.64ns(这相当于M=325.72个周期)。在一个优选实施例中,阵列中的每一个振荡器都具有不同的频率,并因此具有不同的周期值(M)以及累积抖动值(Jrms),即使本征随机抖动(Ji)相同。这表明随机数确定逻辑110中的每一个位(Q1、Q2或QN)都是与所有其他位值相独立的随机值。因此,这些位值(Q1、Q2或QN)适于创建可供处理器100使用的无法预测的随机数种子。
图4描述了一个基于对数的图表,该图表示出了基于自由振荡的振荡器经验数据的仿真结果。在一个优选实施例中,这些自由振荡的振荡器构成了一个振荡器阵列106。如果振荡器显现出高斯特性,那么log(Jrms)=log(Ji)+1/2log(n)其中n=以周期数表示的采样间隔这个等式表明对于显现出高斯属性的振荡器,log(Jrms)应该显示出与1/2log(n)的平行性。Y轴以psec为单位来度量RMS抖动(Jrms),而x轴度量与除数n相关的时间间隔。该图上的圆形表示在不同时间采样的振荡器的1/2log(n)结果,而三角形表示在不同时间采样的振荡器的log(Jrms)结果。每一个振荡器都具有固有的n值,所述n值相关于在特定数量的周期之后被采样的振荡器的随机抖动。因此,具有相同n值的圆形和三角形相关于在相同时间被采样的相同振荡器。从该图中可以看出,1/2log(n)的值以及log(Jrms)的值显然是平行的。这个经验数据证明自由振荡的振荡器显现出高斯分布。由于具有随机抖动特性,这些振荡器对本发明而言是理想的。如先前所述,这些自由振荡的振荡器将产生无法预测或确定的数字位值。
图5描述了示出了随机数生成过程的流程图。首先,在步骤502,控制逻辑102向普及处理器108以及RNDL 110发出请求随机数种子的控制信号。如先前所述,一个随机数种子可以变换成多个随机数种子。在步骤504,时钟信号经由多输入锁存器202而对振荡器阵列106进行采样。RNDL110将来自振荡器的输出变换成数字位,并然后变换成一个随机数506。在步骤508,RNDL 110将随机数作为数字位表示传送到普及处理器108。在步骤510,普及处理器108将随机数传送到控制逻辑102。在步骤512,控制逻辑102在处理器内部使用该随机数,和/或将其转发到外部设备。图5仅仅是本发明的随机数生成过程的一个示例,而没有将本发明局限于这种过程。
图6描述了依照本发明实施例的数据处理系统600的框图,该系统例如可实现为服务器、客户计算设备、手持设备、笔记本或其他类型的数据处理系统。数据处理系统600可以实现本发明的一些方面,并且可以是对称多处理器(“SMP”)系统,或是具有多个与系统总线606相连的处理器100和100的非均匀(non-homogeneous)系统。作为选择,该系统也可以包括单个处理器100。
存储控制器/高速缓存608提供了一个到本地存储器609的接口,并且与系统总线606相连。I/O总线桥610与系统总线606相连,并且提供了一个到I/O总线612的接口。如所示的,存储控制器/高速缓存608以及I/O总线桥610是可以集成在一起的。与I/O总线612相连的外设部件互连(“PCI”)总线桥614提供了一个到PCI局部总线616的接口。多个调制解调器可以与PCI局部总线616相连。典型的PCI总线实现将支持四个PCI扩展槽或附加连接器。调制解调器618以及网络适配器620提供了到那些经由附加连接器(未示出)连接到PCI局部总线的其他计算设备的通信链路。其他的PCI桥622和624为其他的PCI局部总线626和628提供了接口,从所述附加的PCI局部总线,其他的调制解调器或网络适配器(未显示)可以得到支持。这样,数据处理系统600允许到多个网络计算机的连接。如所示的,存储器映射图形适配器630以及硬盘632同样可以直接或间接地与I/O总线612相连。
相应地,图6中示出的硬件可以改变。举例来说,作为所述硬件的补充或是替换,光盘驱动器等其他外围设备也可以使用。所描述的示例并不意味着在体系结构上对本发明的限制。举例来说,数据处理系统500可以是运行高级交互执行体(“AIX”)操作系统、LINUX操作系统或其他操作系统的、位于纽约Armonk的国际商业机器公司的产品IBM Deep Blue系统、CMT-5系统、或其他多核处理器系统。
应该理解的是,本发明可以采取多种形式和实施例。相应地,在不脱离本发明的范围的情况下,可进行对本设计的多种改变。这里所概述的能力允许多种连网模型的可能性。本公开不应该被理解成优选任何特定的联网模型,相反,本发明针对的是在其上构建这些联网模型的基础概念。
在这里已参考本发明的某些优选实施例而对其进行了这样的描述,应该指出的是,所公开的实施例在性质上是示例性而不是限制性的,并且在上述公开中考虑到很多种变化、修改、变更和替换,此外在某些情况中,可以使用本发明的某些特征而没有相应地使用其他特征。基于上文中关于优选实施例的描述,本领域技术人员可能认为很多这种变化和修改是合意的。相应地,恰当的是以一种与本发明的范围相一致的方式来对所附权利要求进行宽泛的理解。
权利要求
1.一种处理器内的随机数发生器,包括振荡器阵列,其中每一个振荡器都在不同的频率上工作;锁存器阵列,其中每一个锁存器接收来自单独振荡器的输入,接收采样信号,并且响应于该采样信号而产生振荡器输出信号;以及随机数确定逻辑(“RNDL”),其中所述RNDL至少被配置成接收该锁存器阵列的输出信号,并且生成随机数种子。
2.权利要求1的随机数发生器,其中所述随机数发生器是在计算机系统或数据处理系统中使用的。
3.权利要求1的随机数发生器,其中所述振荡器阵列包括多个多级自由振荡的环形振荡器。
4.权利要求1的随机数发生器,其中每一个振荡器的工作频率不是谐波相关的,由此在任何两个振荡器的频率之间不存在整数倍数。
5.权利要求1的随机数发生器,其中所述锁存器阵列进一步包括与所述振荡器阵列相耦合的一个多输入锁存器或一个多输入触发器,所述锁存器或触发器至少被配置成为所述阵列内的每一个振荡器产生输出信号。
6.权利要求1的随机数发生器,其中所述锁存器阵列进一步包括与所述振荡器阵列相耦合的触发器阵列。
7.权利要求1的随机数发生器,其中所述采样信号是对来自所述振荡器阵列的输出信号进行采样的时钟信号。
8.权利要求1的随机数发生器,其中所述RNDL至少被配置成读取来自所述锁存器阵列中的每一个锁存器的数字输出(0或1);以及生成包含了这些数字输出的随机数种子。
9.权利要求8的随机数发生器,其中所述RNDL至少被配置成将所述随机数种子传送到所述处理器的其他区域。
10.一种在处理器中用于产生随机数种子的方法,包括配置振荡器阵列,以使每一个振荡器工作在不同的频率上;将锁存器阵列与振荡器阵列相耦合,以使每一个锁存器与单独的振荡器相耦合;生成采样信号;将该采样信号传送到该锁存器阵列;响应于该采样信号,生成来自该振荡器阵列的输出信号;以及从该振荡器阵列的输出信号产生随机数种子。
11.权利要求10的方法,其中该方法是在计算机系统或数据处理系统中使用的。
12.权利要求10的方法,其中该振荡器阵列包括多个多级自由振荡的振荡器。
13.权利要求10的方法,其中每一个振荡器的工作频率不是谐波相关的,由此在任何两个振荡器的频率之间不存在整数倍数。
14.权利要求10的方法,其中所述锁存器阵列进一步包括与所述振荡器阵列相耦合的一个多输入锁存器或一个多输入触发器,所述锁存器或触发器至少被配置成为所述阵列内的每一个振荡器产生输出信号。
15.权利要求10的方法,其中所述锁存器阵列进一步包括与所述振荡器阵列相耦合的触发器阵列。
16.权利要求10的方法,其中所述生成采样信号的步骤进一步包括生成时钟信号,所述时钟信号被设计成对来自所述振荡器阵列的输出信号进行采样。
17.权利要求10的方法,其中所述响应于采样信号而生成输出信号的步骤进一步包括配置所述锁存器阵列,以使它们响应于所述采样信号而产生来自所述振荡器阵列的信号的数字输出(0或1)。
18.权利要求10的方法,其中所述产生随机数种子的步骤进一步包括从所述锁存器阵列的每一个锁存器中读取数字输出(0或1);以及产生包含了这些数字输出的随机数种子。
19.权利要求18的方法,其中产生所述随机数种子还包括将该随机数种子传送到所述处理器的其他区域。
20.一种用于产生随机数种子的计算机程序产品,所述计算机程序产品具有其中包含了计算机程序的介质,其中所述计算机程序包括用于配置振荡器阵列。以使每一个振荡器工作在不同频率的计算机代码;用于将锁存器阵列与该振荡器阵列相耦合,以使每一个锁存器与单独的振荡器相耦合的计算机代码;用于生成采样信号的计算机代码;用于将该采样信号传送到该锁存器阵列的计算机代码;用于响应于该采样信号而生成来自该振荡器阵列的输出信号的计算机代码;用于从该振荡器阵列的输出信号中产生随机数种子的计算机代码。
全文摘要
提供了一种用于产生随机数种子的随机数发生器、方法以及计算机程序产品。振荡器阵列内的每一个振荡器都在不同的频率上工作。每一个振荡器的工作频率不是谐波相关的,由此在任何两个振荡器频率之间不存在整数倍数。在一个实施例中,振荡器阵列的输出与多输入锁存器相连。所述多输入锁存器还接收采样信号,该采样信号是时钟信号。所述时钟信号对振荡器阵列的输出进行采样,并且多输入锁存器与随机数确定逻辑(“RNDL”)一起为阵列内部的每一个振荡器产生一个数字输出(0或1)。RNDL使用这些数字输出来创建随机数种子。
文档编号G06F7/58GK1916838SQ200610108358
公开日2007年2月21日 申请日期2006年8月2日 优先权日2005年8月16日
发明者D·W·伯斯特勒, E·海卢, H·P·霍夫斯蒂, J·S·利伯蒂 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1