一种混合式随机数发生器及其产生随机数的方法转让专利

申请号 : CN201510561349.7

文献号 : CN105005462B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 梁媛陈伟建潘晔赵思宇

申请人 : 电子科技大学

摘要 :

本发明公开了一种混合式随机数发生器及其产生随机数的方法,所述混合式随机数发生器包括:物理随机数源模块(1)、脱相关组合处理模块(2)、计算模块(3)和综合处理模块(4),实现了混合式随机数发生器及其产生随机数的方法生成序列质量较高,及成本较低的技术效果。

权利要求 :

1.一种混合式随机数发生器,其特征在于,所述混合式随机数发生器包括:物理随机数源模块(1)、脱相关组合处理模块(2)、计算模块(3)和综合处理模块(4),其中:物理随机数源模块(1)输出端与脱相关组合处理模块(2)输入端相连接,脱相关组合处理模块(2)输出端同时与计算模块(3)和综合处理模块(4)输入端相连接,计算模块(3)输出端也与综合处理模块(4)输入端相连接,综合处理模块(4)输出端为随机数发生器输出端;脱相关组合处理模块(2)包括:接收寄存器(5)、处理计算模块(6)与发送寄存器(7),其中,接收寄存器(5)输出端连接处理计算模块(6)输入端,发送寄存器(7)输入端与处理计算模块(6)输出端连接,计算模块(3)包括:种子寄存器(8)、主计算模块(9)、从计算模块(10)和乱序干扰模块(11),其中,种子寄存器(8)输出端同时与主计算模块(9)输入端和从计算模块(10)输入端相连接,主计算模块(9)输出端和从计算模块(10)输出端同时与乱序干扰模块(11)输入端相连接;所述的物理随机数源模块(1)包括两个独立并行输出的子模块I(12)和子模块II(13);所述的子模块I(12)包括:高频信号发生器I(14)、低频信号发生器I(15)和D触发器I(16);其中,高频信号发生器I(14)输出端连接D触发器I(16)数据输入端口,低频信号发生器I(15)输出端连接D触发器I(16)的时钟端口,D触发器I(16)输出端口为物理随机数源模块(1)的一个输出端口;所述的物理随机数源模块(1)中高频信号发生器I(14)和高频信号发生器II(17)通过噪声电阻(20)连接放大器(21),放大的热噪声通过压控振荡器(22)产生高频信号;所述的物理随机数源模块(1)中低频信号发生器I(15)和低频信号发生器II(18)通过放大器(24)对噪声电阻(23)的噪声进行放大,然后将放大后的噪声送入施密特触发器(25),最后通过反相器(26)输出低频信号。

2.如权利要求1所述的一种混合式随机数发生器,其特征在于,所述的子模块II(13)包括:高频信号发生器II(17)、低频信号发生器II(18)和D触发器II(19);其中,高频信号发生器(17)输出端连接D触发器II(18)数据输入端口,低频信号发生器II(18)输出端连接D触发器II(19)的时钟端口,D触发器II(19)输出端口为物理随机数源模块(1)输出端口的一个输出端口。

3.如权利要求1或2所述的一种混合式随机数发生器,其特征在于,所述的高频信号发生器I(14)与高频信号发生器II(17)频率不同。

4.如权利要求1所述的一种混合式随机数发生器,其特征在于,所述的物理随机数源模块(1)中高频信号发生器I(14)和高频信号发生器II(17)通过噪声电阻(20)连接放大器(21),放大的热噪声通过压控振荡器(22)产生高频信号。

5.如权利要求1所述的一种混合式随机数发生器,其特征在于,所述的物理随机数源模块(1)中低频信号发生器I(15)和低频信号发生器II(18)通过放大器(24)对噪声电阻(23)的噪声进行放大,然后将放大后的噪声送入施密特触发器(25),最后通过反相器(26)输出低频信号。

6.一种混合式随机数发生器产生随机数的方法,其特征在于,所述方法包括以下5条循环步骤:

S1:物理随机数源模块(1)不间断的随机输出的采样数据a和采样数据b,并不间断的并行输送至脱相关组合处理模块(2);

S2:接收寄存器(5)接受数据,脱相关组合处理模块(2)分别提取定长数据A和B,并将数据A前后顺序颠倒后与数据B做异或运算,得到数据C并依次发送至发送寄存器(7)进行存储;

S3:计算模块(3)向脱相关处理模块(2)周期性地请求发送数据,脱相关处理模块(2)接受请求并一次从发送寄存器(7)中提取3组定长数据发送至计算模块(3),计算模块(3)接收

3组数据并选择一组定长数据D并存储到种子寄存器(8);

S4:种子寄存器(8)将数据D的前半段送入主计算模块(9)进行超素数算法运算产生随机序列E,同时将数据D的后半段送入从计算模块(10)进行满周期线性同余算法运算产生满周期序列F,并发送序列E、序列F到乱序干扰模块(11),乱序干扰模块(11)根据满周期序列F,对随机序列E进行排列得到随机序列G,并对随机序列G 作哈希算法得到随机序列H;

S5:综合处理模块(4)对用户预设定状态和时钟进行判定并根据判定输出数据,当状态为C1时,直接输出脱相关处理模块(2)输出的随机数;当状态为C2时,直接输出计算模块(3)输出的随机数;当状态为C3时,判断时钟是否到期,若到期,则提取脱相关组合处理模块(2)中发送寄存器(7)里存储的所有随机数并输出,如未到期,则直接输出计算模块(3)输出的随机数。

7.如权利要求6所述的一种混合式随机数发生器产生随机数的方法,其特征在于,所述的S2中将数据A前后顺序颠倒为将数据前512bit和数据后512bit交换。

8.如权利要求6所述的一种混合式随机数发生器产生随机数的方法,其特征在于,所述的S3中计算模块(3)接收3组定长数据并根据第一组数据的前两位作为数组序号,并提取相应序号的那一组数据存入种子寄存器。

说明书 :

一种混合式随机数发生器及其产生随机数的方法

技术领域

[0001] 本发明涉及属于密码学中的随机数生成领域,具体地,涉及一种混合式随机数发生器及其产生随机数的方法。

背景技术

[0002] 随机数发生器在许多方面有着广泛的应用,如通信安全、模拟和测试、数学、神经网络的计算,随机性能的仿真,数字系统的内建自检测,游戏以及电子政务和电子商务系统等等。目前在密码学领域中随机数发生器的应用更加广泛。
[0003] 随机数在密码技术中是非常重要的,比如密钥管理、众多的密码学协议、数字签名和身份认证等都要用到随机数。比如:在计算机安全方面最权威的著作《应用密码学》中,共有61个密码学协议,用到随机数的协议就有40多个对于密码系统的安全性来说,每个组件都是很重要的。一个组件设计的失败可能使其他所有的组件崩溃。而密码随机数常常被用作密钥,补充信息,辅助信息和初始化向量。对每一个组件来说,使用一个好的随机数发生器是必要的。
[0004] 产生随机数的方法很多,如线性同余法、反馈移位寄存器法、斐波那契法、BBS法等伪随机数生成方法,其中线性同余法和反馈移位寄存器法至今仍广泛应用。2003年我国的李世刚、刘辉等人根据素数的一些特殊性质提出了超素数法用于产生随机数。法国的RADJA等研制的随机数发生器的本质就是一个线性反馈移位寄存器(LFSR)电路。它是利用晶振电路内的延迟元素在反馈回路中生成延迟变量,通过晶振电路形成比特流输入到采样电路,最后将采样电路的输出比特,输入到LFSR中,进而得到所需的序列。这种方法设计和制作的成本高,易受外部磁场影响,从而限制了使用的范围。
[0005] 当前技术的随机数发生技术存在一定的缺点,没有一个统计特性好,安全性高,且成本低廉的随机数发生器。无论是采用算法得到的随机序列,还是通过随机采样诸如采用热噪,声噪等真随机源得到的序列都或多或少的呈现出或是高成本高消耗,或是安全性不达标的特点。
[0006] 综上所述,本申请发明人在实现本申请实施例中发明技术方案的过程中,发现上述技术至少存在如下技术问题:
[0007] 在现有技术中,现有的随机数发生器及其产生随机数的方法存在生成序列质量较低,及成本较高的技术问题。

发明内容

[0008] 本发明提供了一种混合式随机数发生器及其产生随机数的方法,解决了现有的随机数发生器及其产生随机数的方法存在生成序列质量较低,及成本较高的技术问题,实现了混合式随机数发生器及其产生随机数的方法生成序列质量较高,及成本较低的技术效果。
[0009] 为解决上述技术问题,本申请实施例提供了一种混合式随机数发生器,其包括:物理随机数源模块、脱相关组合处理模块、计算模块和综合处理模块;物理随机数源模块输出端与脱相关组合处理模块输入端相连接,脱相关组合处理模块输出端同时与计算模块和综合处理模块输入端相连接,计算模块输出端也与综合处理模块输入端相连接,综合处理模块输出端为随机数发生器输出端;脱相关组合处理模块包括接收寄存器、处理计算模块与发送寄存器,其中接收寄存器输出端连接处理计算模块输入端,发送寄存器输入端与处理计算模块输出端连接,计算模块包括种子寄存器、主计算模块、从计算模块和乱序干扰模块,其中种子寄存器输出端同时与主计算模块输入端和从计算模块输入端相连接,主计算模块输出端和从计算模块输出端同时与乱序干扰模块输入端相连接,所述的物理随机数源模块包括两个独立并行输出的子模块I和子模块II,子模块I包含高频信号发生器I、低频信号发生器I和D触发器I,其中高频信号发生器I输出端连接D触发器I数据输入端口,低频信号发生器I输出端连接D触发器I的时钟端口,D触发器I输出端口为物理随机数源模块的一个输出端口,所述的子模块II包含高频信号发生器II、低频信号发生器II和D触发器II;其中高频信号发生器输出端连接D触发器II数据输入端口,低频信号发生器II输出端连接D触发器II的时钟端口,D触发器II输出端口为物理随机数源模块输出端口的一个输出端口。高频信号发生器I与高频信号发生器II频率不同,低频信号发生器I与低频信号发生器II频率不同。物理随机数源模块中高频信号发生器I和高频信号发生器II通过噪声电阻连接放大器,放大的热噪声通过压控振荡器产生高频信号。物理随机数源模块中低频信号发生器I和低频信号发生器II通过放大器对噪声电阻的噪声进行放大,然后将放大后的噪声送入施密特触发器,最后通过反相器输出低频信号。
[0010] 所述的低频信号发生器I(15)与低频信号发生器II(18)噪声电阻不同。
[0011] 一种混合式随机数发生器产生随机数的方法,其包括以下步骤:
[0012] S1:物理随机数源模块不间断的随机输出的采样数据a和采样数据b,并不间断的并行输送至脱相关组合处理模块;
[0013] S2:接收寄存器接受数据,脱相关组合处理模块分别提取1024bit的定长数据A和1024bit的定长数据B,并将数据A前512bit和数据后512bit交换后与数据B做异或运算,得到数据C并依次发送至发送寄存器进行存储;
[0014] S3:计算模块向脱相关处理模块周期性地请求发送数据,脱相关处理模块接受请求并一次从发送寄存器中提取3组定长数据发送至计算模块,计算模块接收3组定长数据并根据第一组数据的前两位作为数组序号,并提取相应序号的那一组数据存入种子寄存器;
[0015] S4:种子寄存器将数据的前半段送入主计算模块行超素数计算运算产生随机序列E,同时将数据的后半段送入从计算模块进行满周期线性同余算法运算产生满周期序列F,并发送序列E、序列F到乱序干扰模块,乱序干扰模块根据满周期序列F,对随机序列E进行排列得到随机序列G,并对随机序列G作哈希算法得到随机序列H;
[0016] S5:综合处理模块对用户预设定状态和时钟进行判定并根据判定输出数据,当状态为C1时,直接输出脱相关处理模块输出的随机数;当状态为C2时,直接输出计算模块输出的随机数;当状态为C3时,判断时钟是否到期,如到期,则提取脱相关组合处理模块中发送寄存器里存储的所有随机数,如未到期,则直接输出计算模块输出的随机数。
[0017] 所述的S2中定长数据A和定长数据B均为1024bit。
[0018] 本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0019] 本申请中的技术方案通过采样两个易于实现且噪声源不同的热噪声产生随机序列,通过脱相关组合处理产生降低序列的自相关性,并输出真随机数,同时以动态的方式从发送寄存器中取种子通过所述一系列计算取得高速输出且随机性强的序列,满足低能耗、高速输出的要求;且该发生器硬件电路简单,实现较为简单,计算便于移植,移植性好,通过了FIPS140-2标准测试,验证了本发明具有产生较高安全性随机序列的能力,能够在控制成本的同时提高加密和安全通信等领域的效率。

附图说明

[0020] 图1为混合式随机数发生器模块示意图;
[0021] 图2为混合式随机数发生器结构示意图;
[0022] 图3为物理随机数源模块结构示意图;
[0023] 图4为高频信号发生器结构示意图;
[0024] 图5为低频信号发生器结构示意图;
[0025] 图6为混合式随机数发生器产生随机数的方法流程示意图;
[0026] 图7为脱相关组合处理模块数据处理流程示意图;
[0027] 其中:1-物理随机数源模块,2-脱相关组合处理模块,3-计算模块,4-综合处理模块,5-接收寄存器,6-处理计算模块,7-发送寄存器,8-种子寄存器,9-主计算模块,10-从计算模块,11-乱序干扰模块,12-子模块I,13-子模块II,14-高频信号发生器I,15-低频信号发生器I,16-D触发器I,17-高频信号发生器II,18-低频信号发生器II,19-D触发器II,20-噪声电阻,21-放大器,22-压控振荡器,23-噪声电阻,24-放大器,25-施密特触发器,26-反相器。

具体实施方式

[0028] 本发明提供了一种混合式随机数发生器及其产生随机数的方法,解决了现有的随机数发生器及其产生随机数的方法存在生成序列质量较低,及成本较高的技术问题,实现了混合式随机数发生器及其产生随机数的方法生成序列质量较高,及成本较低的技术效果。
[0029] 为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
[0030] 下面结合实施例及附图,对本发明作进一步地的详细说明,但本发明的实施方式不限于此。
[0031] 如图1所示,一种混合式随机数发生器,其包括:物理随机数源模块1、脱相关组合处理模块2、计算模块3和综合处理模块4。如图2所示,物理随机数源模块1输出端与脱相关组合处理模块2输入端相连接,脱相关组合处理模块2输出端同时与计算模块3和综合处理模块4输入端相连接,计算模块3输出端也与综合处理模块4输入端相连接,综合处理模块4输出端为随机数发生器输出端。脱相关组合处理模块2包括接收寄存器5、处理计算模块6与发送寄存器7,其中接收寄存器5输出端连接处理计算模块6输入端,发送寄存器7输入端与处理计算模块6输出端连接,计算模块3包括种子寄存器8、主计算模块9、从计算模块10和乱序干扰模块11,其中种子寄存器8输出端同时与主计算模块9输入端和从计算模块10输入端相连接,主计算模块9输出端和从计算模块10输出端同时与乱序干扰模块11输入端相连接;
[0032] 如图3所示,物理随机数源模块1由两个结构大致相同独立并行输出的子模块I 12和子模块II 13构成,子模块I 12包含高频信号发生器I 14、低频信号发生器I 15和D触发器I 16,高频信号发生器I 14输出端与D触发器I 16数据输入端口相连接,低频信号发生器I 15输出端与D触发器I 16的时钟端口相连接,D触发器I 16输出端口为物理随机数源模块1的一个输出端口,子模块II 13包含高频信号发生器II 17、低频信号发生器II 18和D触发器II 19;高频信号发生器II 17输出端与D触发器II 18数据输入端口相连接,低频信号发生器II 18输出端与D触发器II 19的时钟端口相连接,D触发器II 19输出端口为物理随机数源模块1输出端口的一个输出端口。上述的高频信号发生器I 14与高频信号发生器II 17频率不同,低频信号发生器I 15与低频信号发生器II 18频率不同。物理随机数源模块(1)中高频信号发生器I 14和高频信号发生器II 17结构相同,如图4所示,高频信号发生器I 
14和高频信号发生器II 17均为通过噪声电阻20连接放大器21,放大的热噪声通过压控振荡器22产生高频信号。为了提高信号的独立性,本发明中输入D触发器I 16和D触发器II 18的时钟端口的两组高频振荡信号的频率不同。如图5所示,物理随机数源模块1中低频信号发生器I 15和低频信号发生器II 18结构相同,通过放大器24对噪声电阻23的噪声进行放大,然后将放大后的噪声送入施密特触发器25中,最后通过反相器26采样并产生低频时钟信号输出低频信号。
[0033] 如图6所示,一种混合式随机数发生器产生随机数的方法,其包括以下步骤:
[0034] S1:物理随机数源模块1不间断的随机输出的采样数据a和采样数据b,并不间断的并行输送至脱相关组合处理模块2;
[0035] S2:如图7所示,接收寄存器5接受数据,脱相关组合处理模块2分别提取1024bit的定长数据A和1024bit的定长数据B,并将数据A前512bit和数据后512bit交换后与数据B做异或运算,得到数据C并依次发送至发送寄存器7进行存储;
[0036] S3:计算模块3向脱相关处理模块2周期性地请求发送数据,脱相关处理模块2接受请求并一次从发送寄存器7中提取3组定长数据发送至计算模块3,计算模块3接收3组数据并将第一组数据的前两位作为数组序号提取其中一组数据D作为种子并存储到种子寄存器8;
[0037] S4:种子寄存器8将数据D的前半段作为种子送入主计算模块9进行超素数计算运算产生一个512bit随机序列E,同时将数据的后半段作为增量送入从计算模块10进行满周期线性同余算法运算产生满周期序列F,并发送序列E、序列F到乱序干扰模块11,乱序干扰模块11根据满周期序列F,对随机序列E进行排列得到随机序列G,并对随机序列G作哈希算法得到随机序列H,同时触发计算模块3向脱相关处理模块2继续请求发送数据;
[0038] S5:综合处理模块4根据用户预设定状态和时钟进行判定根据用户的需求来决定采取哪种输出方式。当状态为对于安全性能要求高C1状态时,由脱相关组合处理模块2直接输出随机数,当状态为对于能耗要求较低的C2状态时,由计算模块3输出随机数,当状态为对于速度要求高、数量大的输出的状态C3时判断时钟是否到期,如时钟到期输出脱相关组合处理模块2中发送寄存器7所存储的所有随机数,如未到期输出计算模块输出端口的数据。
[0039] 所述S4中,主计算模块9从种子寄存器8中提取种子,种子为8组随机数即数据D的前半段,每组前两位作为优选乘子在数组中的编号,选择乘子后,运行一次主计算,再通过奇偶校验输出,每组循环64次,得到64bit的数据,共计生成512bit随机序列送入乱序干扰模块11中并重新提取种子进行下一轮计算。
[0040] 本发明的主计算采用的是优选乘子的超素数算法,得到一组均匀性好的随机序列,生成序列算法的基本步骤为:
[0041] (1)生成初始种子,选定发生器的乘子λ;
[0042] (2)令i=0,数组S[i]=X0mod2,i++;
[0043] (3)令X1=λX0modM;
[0044] (4)令S[i]=X1mod2,i++,之后另X0=X1;
[0045] (5)重复步骤(3)-(4),不断产生序列。
[0046] 在优选乘子的超素数发生器中共包括两个参数:乘子和模。本发明中模M取超素数2
定值1048571,根据乘子优选的原则λ是超素数,且满足M1303、1381、1531、l543、1567、1621、1663、1697、1709、1777、1783、1789、1861、2017共22个,本发明中用这22个符合条件的乘子建立了一个数组,乘子只有22个,如果计数值大于22,则会出现空选现象,所以需要将数据对22求余运算,生成一个介于0到21之间的整数,并将该整数作为乘子在数组中的地址,对应地址选取乘子,这样选择乘子在满足乘子优选原则的同时,也使发生器本身具有了不确定性,进一步增加了预测生成随机序列的难度。
[0047] 从计算模块10从种子寄存器8中得到增量参数,运行一次满周期同余算法,得到一组满周期的序列送入乱序干扰模块中并重新提取增量参数进行下一轮计算;
[0048] 为了提高生成序列的周期,增强数据干扰的不确定性,从计算将增量参数设置成了动态变量,在完成对满周期数据的一次输出后,增量参数要进行重新赋值。增量参数的改变不仅会影响随机数在列中的前后顺序,还会改变生成序列的整体排序。
[0049] 要保证从计算模块输出的数据达到满周期T=M其参数必须满足如下原则:
[0050]
[0051] 本发明针对主计算产生的512bit序列,将从计算发设置为周期为512的满周期输出,Xn+1=(201Xn+c)mod512,其中X0=127,c为增量参数。
[0052] 乱序干扰模块11由乱序模块和发散模块构成。乱序算法完成一次排序的基本步骤如下:
[0053] 1、主计算得到的序列为T=(t1,t2,t3...t511);
[0054] 2、给从计算中的增量赋值,用满周期混合同余发生器生成一个随机数j1(0≤j1<512),k=0;
[0055] 3、令T[j1]=T’[k],k++;
[0056] 4、重复步骤(3)511次,完成对主计算输出的512个随机数的扰乱排序;
[0057] 5、将完成乱序的随机数送入发散模块中,跳转到步骤1。
[0058] 发散模块包括输入预处理、扩展存储、核心操作和输出四个部分。接收来自乱序模块11的数据,并将处理过后的数据送入综合处理模块4;SHA1发散模块数据输入端与扰乱排序模块的数据输出端相连接。输入预处理部分包括两个计数器和16个32位的寄存器,两个计数器分别为Length计数器与Counter计数器,通过计数器循环计数扩展存储,得到80个32位寄存器,输入预处理的数据输出到扩展存储后的寄存器中,核心操作接收寄存器的值,并通过四个串行移位相加,并行获得相加数据的方法,将产生的数据放到A,B,C,D,E五个寄存器中,输出端与并行函数发生器ft(B,C,D)的输入端相连接,模块最终数据存放到五个32位的散列值寄存器中,分别为HO,H1,H2,H3,H4;SHA1模块用于将扰乱排序得到的序列发散成不可逆的序列,增强序列的安全性。
[0059] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0060] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。