专利名称:一种真随机数生成方法及发生器的制作方法
技术领域:
本发明涉及加密技术领域,尤其涉及一种真随机数生成方法及发生器。
背景技术:
在密码学的各种应用的中,随机数更是必不可少的。随机数最重要的特性是它在产生时,后一个产生的数与前一个产生的数毫无关系。通常采用一个固定的、可以重复的计算方法产生随机数,这种人为得到的随机数被称为伪随机数。但是在一些加密系统的应用中,已经证明有很多途径可以攻击用伪随机数加密的系统,所以必须使用真随机数,才能保证系统的安全。现有技术中通常利用电子元件噪声引起的数字逻辑中的随机晃动来产生真随机数,其中应用最为广泛的是振荡器采样法,通常使用独立工作的高频振荡器进行异或采样, 但是必须要上百组的振荡器进行异或才能得到随机性较好的随机数,占用较大的资源。
发明内容
有鉴于此,本发明提供一种真随机数生成方法及发生器,其具体方案如下所述一种真随机数生成方法,包括利用多个独立的高频振荡环产生多路输出信号;从所述多路输出信号中选择采样时钟信号,分别采样其他路输出信号;将所述采样结果进行异或,得到真随机数组。优选的,还包括利用固定频率时钟对所述真随机数组进行采样。优选的,还包括对所述真随机数组进行纠偏后处理。优选的,采用循环编码的基于异或的后处理方法对所述固定频率采样后的真随机数组进行纠偏后处理。一种真随机数发生器,包括高频振荡环组、第一采样器和异或模块,其中所述高频振荡组内包含多个环独立工作的高频振荡环,用于产生多路输出信号;所述第一采样器用于,利用所述从多路输出信号中选择采样时钟信号,分别采样其他路输出信号;所述异或模块用于,将所述采样结果进行异或,得到真随机数组。优选的,还包括第二采样器,用于利用固定频率时钟对所述真随机数组进行采样。优选的,还包括纠偏后处理模块,用于对所述固定频率时钟采样后的真随机数组进行纠偏后处理。优选的,所述振荡环由依次串接的奇数个反相器和一个与门构成。优选的,所述第一采样器包括与所述被采样的其他路输出信号数量相同的子采样器,分别针对每一路输出信号进行采样。优选的,所述子采样器包括计数器和两个D触发器,所述采样时钟与所述计数器和第一 D触发器的时钟信号端相连,被采样输出信号与所述第一 D触发器的输入端相连,所述第一 D触发器的输出与第二 D触发器的时钟信号端相连,所述计数器的输出与所述第二 D触发器的输入端相连。本发明实施例公开的真随机数生成方法,采用多个独立工作的高频振荡环产生多路输出信号,选择其中输出信号作为采样时钟信号,对其他的输出信号进行采样的方式获得真随机数,增加了随机数的随机性,不需要利用现有技术中的上百组振荡器,简化了系统结构和复杂度,并且易于实现。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例1公开的真随机数生成方法流程图;图2为本发明实施例2公开的真随机数生成方法流程图;图3为本发明实施例3公开的真随机数生成方法流程图;图4为本发明公开的真随机数发生器结构示意图;图5为本发明公开的振荡环结构示意图;图6为本发明公开的振荡环与子采样器的连接结构示意图;图7为本发明公开的子采样器的结构示意图;图8为采样过程中波形示意图;图9为纠偏后处理模块结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明公开了一种真随机数的生成方法,采用多个独立工作的高频振荡环产生多路输出信号,选择其中输出信号作为采样时钟信号,对其他的输出信号进行采样的方式获得真随机数,增加了随机数的随机性,同时简化了系统的结构。该方法可以基于FPGA (Field-Programmable Gate Array,现场可编程门阵列)实现,也可以使用单立电子元器件来实现。只是采用在FPGA中实现的方式会更方便的实现, 并且易于扩展。其具体的实现方式如下所述实施例一本发明实施例1公开的真随机数生成方法的流程如图1所示,包括步骤S11、利用多个独立的高频振荡环产生多路输出信号;振荡环本身的晃动是由于电子的热噪声引起的,具有随机性。使用频率接近的振荡环可以很容易地将这种随机性采样出来,因此本实施例中采用频率非常接近的振荡环产生多路输出信号。同样也可以选用其他频率的振荡环。步骤S12、从所述多路输出信号中选择采样时钟信号,分别采样其他路输出信号;从多路输出信号中选择一路或者多路信号作为采样时钟信号,分别对其他路输出信号进行采样。步骤S13、将所述采样结果进行异或,得到真随机数组。将采样得到的结果进行异或,得到一组真随机数,作为真随机数组。本实施例公开的真随机数生成方法,采用利用多路输出信号中的一路或者多路采样其他路输出信号的方式,增加了输出信号的随机性,获得了随机性较好的真随机数。本实施例中,可以根据实际情况设定采样时钟信号为一路或者多路,采样时钟越多,采样次数越多,真随机数的性能就越好,但是,其耗费的时间也就越多。所以,可以根据实际情况设定采样信号的路数,采样的次数,已达到最佳效果。实施例二本实施例公开的真随机数生成方法的流程如图2所示,包括步骤S21、利用多个独立的频率非常接近的高频振荡环产生多路输出信号;步骤S22、从所述多路输出信号中选择一或多路作为采样时钟,分别采样其他路输出信号;步骤S23、将所述采样结果进行异或,得到真随机数组;步骤S24、利用固定频率时钟对所述真随机数组进行采样。本实施例中加入了对真随机数组进行固定频率时钟采样的过程,通过该过程可以实现从真随机数中按照一定的频率选择出真随机数用于后续处理。实施例三本实施例公开的真随机数生成方法的流程如图3所示,包括步骤S31、利用多个独立的频率非常接近的高频振荡环产生多路输出信号;步骤S32、从所述多路输出信号中选择一或多路作为采样时钟,分别采样其他路输出信号;步骤S33、将所述采样结果进行异或,得到真随机数组;步骤S34、利用固定频率时钟对所述真随机数组进行采样;步骤S35、采用循环编码的基于异或的后处理方法对所述固定频率采样后的真随机数组进行纠偏后处理。由于经过固定频率采样后产生的随机数往往具有偏置的特性,所以本实施例公开的真随机数产生方法中,增加了对采样后的真随机数进行纠偏后处理的步骤,对原始随机数序列进行纠偏后处理。本实施例中并不限定采用循环编码的基于异或的后处理方法对数据进行纠偏后处理,同样也可以采用基于异或的纠偏处理方法,或者其他的纠偏处理方法, 只是相对于基于异或的处理方法,本实施例中使用的采用循环编码的基于异或的后处理方法具有更好的纠偏效果和更高的处理速率。同时,本发明公开了一种真随机数发生器,其结构如图4所示,包括高频振荡环组41、第一采样器42和异或模块43,其中所述高频振荡环组41内包含多个频率非常接近的高频振荡环,每个振荡环独立工作,产生多路输出信号;所述第一采样器42用于,利用所述从多路输出信号中选择采样时钟信号,分别采样其他路输出信号;所述异或模块43用于,将所述采样结果进行异或,得到真随机数组。此外,还包括第二采样器44,用于利用固定频率时钟对所述真随机数组进行采样;纠偏后处理模块45,用于对所述固定频率时钟采样后的真随机数组进行纠偏后处理。 其中,纠偏后处理模块45可以为采用循环编码的基于异或的后处理方法对数据进行纠偏后处理的处理器,也可以为采用基于异或的处理方法对数据进行纠偏后处理的处理器。上述各个模块的工作过程如上述实施例所述,在此不再赘述。本发明公开的真随机数发生器的实现方式有多种,下面就其以FPGA为基础实现的方式进行详细说明。真随机数中振荡环利用FPGA中具有一定的延时功能的反相器来完成,这些反相器的延时很接近,但是又不完全相同,所以在FPGA中要完成频率接近的振荡环,只需要把相同的振荡环在不同的位置实现即可,具体的振荡环的结构如图5所示,包括依次串接的奇数个反相器51、一个与门52和使能端53。使能端53和与门52的一个输入端相连,与门 52的输出端与第一个反相器的输入端相连,最后一个反相器的输出端作为输出信号的端口,同时将信号返回给与门52的另一个输入端。每个振荡环的反相器个数相同,并进行手动布线,使得相邻的反相器在相邻的位置上且不同振荡环之间的频率差异细微,在系统使能端53给出使能信号之后,振荡环开始工作。由于振荡环是利用数字电路中时钟信号存在的抖动现象来产生随机信号,而时钟的抖动是由于电子的热噪声引起的,因此其产生的随机数为真随机数。振荡环的个数和长度可以根据实际情况来设定,可以选用11个反相器连接成一个振荡环,选用四个振荡环产生输出信号。当然也可以为其他组合,只是振荡环长度为11,个数为的4的情况下,其得到的随机数的随机性能较好。为了增强随机性,第一采样器采用一路振荡环同时采样多路振荡环的方式,第一采样器包括多个子采样器,每一个子采样器分别与其对应的振荡环相连,其结构图如图6 所示,包括振荡环组61和子采样器组62,子采样器的数量比振荡环的个数少1,分别根据从所述第η个振荡环的输出信号分别对其他n-1路输出信号进行采样。每一个子采样器的结构如图7所示,包括第一 D触发器71、第二 D触发器72和计数器73。其中,第η路振荡环的输出信号作为采样时钟74与所述计数器73和第一 D触发器71的时钟信号端相连,与该子采样器对应的被采样的振荡环的输出信号75与所述第一 D触发器71的输入端相连,所述第一 D触发器71的输出端与第二 D触发器72的时钟信号端C相连,所述计数器73的输出端与所述第二 D触发器72的输入端D相连。其采样过程中的波形图如图8所示。通过FPGA中的异或门,如图6中异或门63所示,对采样后得到的数据进行异或处理,得到真随机数组。第二采样器的具体实现时,其时钟信号为一固定频率的信号,根据此信号,从真随机数组中选取真随机数。纠偏后处理模块可以利用多个移位寄存器实现,其结构如图9所示,图中从第二移位寄存器开始,前一个的输出端与下一个的输入依次相连,采样时钟分别与每一个移位寄存器的时钟端相连,然后根据需要,分别引出不同位置移位寄存器的输出进行异或,得到不同的纠偏效果。通过纠偏处理后的数据位最终的真随机数序列。本发明公开的真随机数发生器,结构简单,只需要较少的振荡环就可以产生随机性高的真随机数,而且其产生速率也较高。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。 对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
权利要求
1.一种真随机数生成方法,其特征在于,包括利用多个独立的高频振荡环产生多路输出信号;从所述多路输出信号中选择采样时钟信号,分别采样其他路输出信号;将所述采样结果进行异或,得到真随机数组。
2.根据权利要求1所述的方法,其特征在于,还包括利用固定频率时钟对所述真随机数组进行采样。
3.根据权利要求2所述的方法,其特征在于,还包括对所述真随机数组进行纠偏后处理。
4.根据权利要求3所述的方法,其特征在于,采用循环编码的基于异或的后处理方法对所述固定频率采样后的真随机数组进行纠偏后处理。
5.一种真随机数发生器,其特征在于,包括高频振荡环组、第一采样器和异或模块, 其中所述高频振荡组内包含多个环独立工作的高频振荡环,用于产生多路输出信号;所述第一采样器用于,利用所述从多路输出信号中选择采样时钟信号,分别采样其他路输出信号;所述异或模块用于,将所述采样结果进行异或,得到真随机数组。
6.根据权利要求5所述的发生器,其特征在于,还包括第二采样器,用于利用固定频率时钟对所述真随机数组进行采样。
7.根据权利要求6所述的发生器,其特征在于,还包括纠偏后处理模块,用于对所述固定频率时钟采样后的真随机数组进行纠偏后处理。
8.根据权利要求5所述的发生器,其特征在于,所述振荡环由依次串接的奇数个反相器和一个与门构成。
9.根据权利要求5所述的发生器,其特征在于,所述第一采样器包括与所述被采样的其他路输出信号数量相同的子采样器,分别针对每一路输出信号进行采样。
10.根据权利要求9所述的发生器,其特征在于,所述子采样器包括计数器和两个D 触发器,所述采样时钟与所述计数器和第一 D触发器的时钟信号端相连,被采样输出信号与所述第一 D触发器的输入端相连,所述第一 D触发器的输出与第二 D触发器的时钟信号端相连,所述计数器的输出与所述第二 D触发器的输入端相连。
全文摘要
本发明公开了一种真随机数生成方法及发生器,包括利用多个独立的高频振荡环产生多路输出信号;从所述多路输出信号中选择采样时钟信号,分别采样其他路输出信号;将所述采样结果进行异或,得到真随机数组。本发明实施例公开的真随机数生成方法,采用多个独立工作的高频振荡环产生多路输出信号,选择其中输出信号作为采样时钟信号,对其他的输出信号进行采样的方式获得真随机数,增加了随机数的随机性,不需要利用现有技术中的上百组振荡器,简化了系统结构和复杂度,并且易于实现。
文档编号H04L9/22GK102375722SQ20101025354
公开日2012年3月14日 申请日期2010年8月9日 优先权日2010年8月9日
发明者崔珂, 张鸿飞, 梁昊, 王坚, 金革, 高原 申请人:中国科学技术大学