CN103399726A - 一种流水线化的组合式伪随机数发生器 - Google Patents

一种流水线化的组合式伪随机数发生器 Download PDF

Info

Publication number
CN103399726A
CN103399726A CN2013102960576A CN201310296057A CN103399726A CN 103399726 A CN103399726 A CN 103399726A CN 2013102960576 A CN2013102960576 A CN 2013102960576A CN 201310296057 A CN201310296057 A CN 201310296057A CN 103399726 A CN103399726 A CN 103399726A
Authority
CN
China
Prior art keywords
module
sequence
random
input end
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2013102960576A
Other languages
English (en)
Other versions
CN103399726B (zh
Inventor
姚爱红
闫健
周文彬
雷磊
张建国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Engineering University
Original Assignee
Harbin Engineering University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harbin Engineering University filed Critical Harbin Engineering University
Priority to CN201310296057.6A priority Critical patent/CN103399726B/zh
Publication of CN103399726A publication Critical patent/CN103399726A/zh
Application granted granted Critical
Publication of CN103399726B publication Critical patent/CN103399726B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明属于伪随机数序列高速生成领域,具体涉及一种流水线化的组合式伪随机数发生器。流水线化的组合式伪随机数发生器,包括随机数据源模块,“0”、“1”序列生成模块,扰乱排序模块,SHA_1发散模块和伪随机序列存储器模块。本发明基于流水线化的组合式伪随机数发生器经过测试,验证了能够产生具有更好的统计特性和更高的安全性的随机数序列,并且设计成本较为低廉,能够提高应用于芯片加密以及计算机仿真等领域的效率。

Description

一种流水线化的组合式伪随机数发生器
技术领域
本发明属于伪随机数序列高速生成领域,具体涉及一种流水线化的组合式伪随机数发生器。
背景技术
在信息安全、加密芯片、数字电路自动测试生成和计算机仿真等应用中,都需要快速产生高质量的随机数序列。真随机数发生器易受外部电磁场影响,而且普遍存在着造价昂贵、实现复杂、产生随机数速率低等问题,只在信息安全领域中某些对数据随机性要求非常严格的特定方向有一定应用。伪随机数发生器不需要外部特殊硬件、实现简单、产生随机数的速度快等优点,克服了真随机数的弊端,在集成电路自动测试生成(ATPG,Automatic TestPattern Generation)、计算机仿真等对随机性要求不那么严格的应用领域中得到广泛应用。而且,通过对初始种子的优选并在随机数的产生过程引入一些不确定因素,可以增强伪随机数发生器的不可预测性,可以产生能够满足一定安全需求的具有良好的统计特性的随机数序。
伪随机数发生器一般使用给定的初始种子通过确定的算法计算出伪随机数序列。其随机性的好坏直接影响测试过程收敛速度或计算机仿真结果的优劣,即随机数发生器产生的随机序列的质量是至关重要的。伪随机数发生器生成的随机序列的质量可以通过国际的检验标准进行检验。例如FIPS140-2(Federal Information Processing Standards140-2)标准,它是美国商务部国家标准技术协会于2001年5月公布的随机序列测试标准,它具有较强的实用性,是应用比较广泛的随机性检测方法之一,提供了针对随机数序列随机性的检验方法。
当前有很多产生伪随机数发生器的方法,如线性同余法、反馈移位寄存器法、斐波那契法、BBS法、超素数法等伪随机数生成方法,其中基于线性同余法和反馈移位寄存器法的伪随机数发生器有较明显的不足,如高维度的不均匀性,占用的芯片面积较大,随机序列的生成速率随着反馈函数的复杂也会变得越来越慢。东芝公司研制的随机数发生器主要是利用放大器放大噪声信号与参考信号之间的差值来进行采样,之后将采样信号经过若干个二元模数转化电路转化为0、1的二元信号,最后经或门逻辑电路生成随机比特序列,这种方法易受外部磁场的影响,对产生随机数的环境要求过于苛刻。Alex Soohoo等人于互联网公司DT提出的基于振荡器采样法的随机数发生器设计,虽然能够产生具有较好统计特性的伪随机序列,但是设计与制作的成本太高,高昂的成本限制了振荡器采样法随机数发生器的应用范围。
现有技术存在的缺点是,还没有一个能够稳定输出具有较好统计特性和较高安全性的随机序列的伪随机数发生器,例如在申请号为201220194942.4,名称为一种带扰动的混沌双螺旋随机数发生器的专利申请中,易受外部磁场的影响,成本开销过大,很难被广泛的使用。
发明内容:
本发明的目的是提供一种提高执行效率的流水线化的组合式伪随机数发生器。
本发明的目的是这样实现的:
流水线化的组合式伪随机数发生器,包括随机数据源模块,“0”、“1”序列生成模块,扰乱排序模块,SHA_1发散模块和伪随机序列存储器模块。
随机数据源模块包括:时间设置输入端、计数复位输入端、系统时钟输入端;7个输出端,其中0至6输出端与“0”、“1”序列生成模块的生成随机种子模块的输入端相连接,0至6输出端还与扰乱排序模块的生成增量模块的数据输入端相连接,5至6输出端还与“0”、“1”序列生成模块的选择乘子模块的输入端相连接,输入端传递给随机数据源模块接收到输入端传递的时间设置信号、计数复位信号和系统时钟信号,由随机数据源模块中的计数器通过输出端输出计数值,计数器的秒位最高计数为1,用1个二进制数表示,其它6位要分别表示十进制的0到9,各用4位二进制数表示;系统时钟通过随机数据源模块中的分频系统进行分频,生成频率为106Hz的微秒时钟进行时钟计数,时钟计数时判断输入的计数复位是否有效,如果有效则对计数器进行清零复位,判断输入的时间设置是否有效,如果有效则进行时间设置,若无任何外部输入信号有效时,计数器在微秒时钟的作用下进入工作状态,开始翻转计数,每过1微秒,则微秒位加1,到9进位,当加到999后自动清零,同时毫秒位加1,到9进位,当加到毫秒位达到999后自动清零,同时秒位加1,当从秒到微秒的计数值达到1999999后,所有计数位清零,开始重新计数;计数复位用于时钟计数器清零;
在“0”、“1”序列生成模块包括7个输入端和1个输出端,其中随机种子生成器的输入端与随机数据源模块的7位输出端相连接,作为随机种子生成器的参量产生随机种子,输出到移位寄存器中,产生8组数据,与优选乘子选择的8个乘子进行并行的乘法运算,输出的乘积结果对超素数M取模,再通过奇偶判断器输出与“0”、“1”寄存器的输入端相连接,每组循环执行128次,通过移位寄存器,将8组生成的128bit,得到1024bit的“0”、“1”随机序列,并将这1204bit的“0”、“1”序列输出到扰乱排序模块,与扰乱排序模块中的一个移位寄存器相连接,作为此移位寄存器的数据输入;
扰乱排序模块,由两个增量生成模块、两个混合同余发生器、两个移位寄存器、一个1024bit的数据暂存器组成,两个增量生成模块的每个输入端都连接到随机数据源模块的输出端,每个输出端连接到对应的混合同余发生器的输入端,每个混合同余发生器对移位寄存器产生的前后各512bit“0”、“1”序列进行扰乱,每个混合同余发生器将扰乱后的512bit“0”、“1”序列输出与相应的移位寄存器的输入端相连接,经过移位运算形成1024bit“0”、“1”序列输出与数据暂存器的输入端相连接,扰乱排序模块的输出端与SHA_1模块的16组32位寄存器的输入端相连接;
SHA_1发散模块输入端与扰乱排序模块的输出端相连接,SHA_1发散模块中包含两个计数器和16个32位的寄存器,两个计数器分别为Length计数器与Counter计数器,通过计数器循环计数扩展存储,得到80个32位寄存器,数据输入到寄存器中,通过四个串行移位相加,并行获得相加数据,将产生的数据放到编号为A,B,C,D,E五个寄存器中,寄存器输出端与并行函数发生器ft(B,C,D)的输入端相连接,数据最终存放到五个32位的散列值寄存器中,编号分别为H0,H1,H2,H3,H4;
伪随机序列存储器模块由一个ROM存储器构成,该模块的输入端与SHA_1发散模块的输出端相连接,存放最终的输出,即得到了本发生器产生的伪随机序列的数据流。
本发明的有益效果在于:
本发明基于流水线化的组合式伪随机数发生器经过FIPS140-2标准的测试,验证了能够产生具有较好的统计特性和较高的安全性的随机数序列,并且设计成本较为低廉,能够提高应用于芯片加密以及计算机仿真等领域的效率。
附图说明
图1为根据本发明实施例的基于流水线化的组合式伪随机数发生器装置的结构框图;
图2为图1中的随机数发生器装置的结构示意图;
图3为本发明实施例中应用的SHA_1发散模块的结构示意图;
图4为本发明引入的各模块流水线化工作方式的说明图;
图5为本发明64位二进制串示意图。
具体实施方式
下面结合附图对本发明做进一步描述:
本发明的目的是提供一种流水线化的组合式伪随机数发生器,为了提高执行的效率,在模块中采用了并行结构的思想。基于可编程逻辑器件(FPGA),更好的利用FPGA芯片的可重配置特性来完成硬件平台的搭建。
为了实现上述目的,本发明在随机数发生器的设计中引入了三个新方法:
(A)利用参数动态变更的发生器进行组合,伪随机序列的生成过程中发生器的初始种子和相关参数总在根据序列的生成进程进行不断变化;
(B)利用随机数的奇偶性,在扰乱排序前将生成序列转换成为“0”、“1”序列;
(C)利用时钟计数器设计一个随机的数据源,将不确定的人为因素和高速变换性引入到发生器中,最后再使用安全散列算法对随机序列进行进一步地发散处理,就可以得到随机特性好且安全性高的伪随机序列。
本发明的实现由以下五部分组成:
随机数据源模块,由两部分组成,时钟计数器与分频系统。该模块包括三个输入端:时间设置输入、计数复位输入、系统时钟输入。该模块包括7个输出端,其中0-6输出端与“0”、“1”序列生成模块的生成随机种子模块的输入端相连接,作为生成随机种子的发生器的输入控制;5-6输出端与“0”、“1”序列生成模块的选择乘子模块的输入端相连接,作为乘子选择的输入控制;其中0-6输出端还与扰乱排序模块的生成增量模块的数据输入端相连接,作为生成增量的输入控制;
“0”、“1”序列生成模块,分为生成随机种子与选择乘子的超素数发生器、奇偶判断器和“0”、“1”序列暂存器三个部分。其中,随机种子生成器的输入端与随机数据源模块的7位输出端相连接,作为随机种子生成器的参量产生随机种子,输出到移位寄存器中,产生8组数据,与优选乘子选择的8个乘子进行并行的乘法运算。输出的乘积结果对超素数M取模,再通过奇偶判断器(对2取余运算)输出与“0”、“1”寄存器的输入端相连接,每组循环执行128次,最后通过移位寄存器,将8组生成的128bit,得到1024bit的“0”、“1”随机序列,并将这1204bit的“0”、“1”序列输出到扰乱排序模块,与扰乱排序模块中的一个移位寄存器相连接,作为此移位寄存器的数据输入;
扰乱排序模块,由两个增量生成模块、两个混合同余发生器、两个移位寄存器、一个1024bit的数据暂存器组成。两个增量生成模块的每个输入端都连接到随机数据源模块的输出端,每个输出端连接到对应的混合同余发生器的输入端,每个混合同余发生器对移位寄存器产生的前后各512bit“0”、“1”序列进行扰乱,每个混合同余发生器将扰乱后的512bit“0”、“1”序列输出与下一个移位寄存器的输入端相连接,经过移位运算形成1024bit“0”、“1”序列输出与数据暂存器的输入端相连接,扰乱排序模块用于打乱前面生成的“0”,“1”序列的原有顺序,按照一定的规则重新排序,破坏其原有的相关性,增强序列的随机性,并将结果输出到SHA_1发散模块中,输出端与SHA_1模块的16组32位寄存器的输入端相连接;
SHA_1发散模块,分为输入预处理,扩展存储、核心操作和输出四个部分。SHA_1发散模块数据输入端与扰乱排序模块的数据输出端相连接。输入预处理部分包括两个计数器和16个32位的寄存器,两个计数器分别为Length计数器与Counter计数器,通过计数器循环计数扩展存储,得到80个32位寄存器,输入预处理的数据输出到扩展存储后的寄存器中,核心操作接收寄存器的值,并通过四个串行移位相加,并行获得相加数据的方法,将产生的数据放到A,B,C,D,E五个寄存器中,输出端与并行函数发生器ft(B,C,D)的输入端相连接,模块最终数据存放到五个32位的散列值寄存器中,分别为H0,H1,H2,H3,H4。SHA_1模块用于将扰乱排序得到的“0”、“1”散列成不可逆的“0”、“1”序列,增强序列的安全性;
伪随机序列存储器模块,此模块由一个ROM存储器构成,该模块的输入端与SHA_1发散模块的输出端相连接,存放流水线化的组合式发生器最终的输出,即得到了本发生器产生的伪随机序列的数据流。
本发明采用流水线化设计,将上述的“0”、“1”序列生成模块、扰乱排序模块以及SHA_1发散模块组合为流水线化的工作方式,利用统一的模块运行周期T,当“0”、“1”序列生成模块执行了一个周期T时,接收其输出的扰乱排序模块与下一个周期的“0”、“1”序列生成模块同时执行,当流水线经过两个周期填充满后,吞吐率将明显提高,即提高了产生“0”、“1”序列的速率。
用户通过时间设置输入、计数复位输入、系统时钟输入三个输入启动随机数据源模块,将产生的输出分别传递给“0”、“1”序列生成模块与扰乱排序模块,生成的初始种子X0与选择的乘子λi通过乘法器相乘再移位,得到随机的“0”、“1”序列,然后再输出到扰乱排序模块中,得到经过扰乱后的“0”、“1”随机序列,输出到SHA_1发散模块中,此时的“0”、“1”序列为不可逆的加密序列。最终,输出的伪随机序列存放到伪随机序列存储器中。下面分别对每一部分做详细的说明。
(一)随机数据源模块
首先,用户通过三个输入端传递给随机数据源模块三个信号,分别为时间设置、计数复位、系统时钟。输出为计数器的计数值,秒位最高计数为1,用1个二进制数表示,其它6位要分别表示十进制的0到9,各用4位2进制数表示。
用户输入的系统时钟通过分频系统进行分频,生成频率为106Hz的微秒时钟用于时钟计数;时钟计数部分首先判断用户输入的计数复位键是否有效,如果有效则对计数器进行清零复位,然后判断用户输入的时间设置键是否有效,如果有效则进行时间设置操作,若无任何外部输入键位有效时,计数器在微秒时钟的作用下进入工作状态,开始翻转计数。其具体计数流程为:在微秒时钟的作用下,每过1微秒,则微秒位加1,到9进位,当加到999后自动清零,同时毫秒位加1,同样到9进位,当加到毫秒位达到999后自动清零,同时秒位加1,当从秒到微秒的计数值达到1999999后,所有计数位清零,开始重新计数。
计数复位用于时钟计数器清零;时间设置输入用于改变计数器的计数初始值,其数据宽度为7bit;7个输出共完成4项功能,其中输出0至输出6作为整体为“0”、“1”序列生成模块提供初始种子,输出5和输出6用于“0”、“1”序列生成模块选择乘子,输出1、2、3和输出4、5、6分别用作扰乱排序模块中2个扰乱发生器的增量。
(二)“0”、“1”序列生成模块
如图2所示,该模块包括7个输入端和1个输出端,其主要功能是生成“0”与“1”具有相同分布概率的随机序列。生成随机种子模块与选定乘子模块由一个超素数发生器构成,其输入端连接随机数据源模块的输出端。本实施例中模M取超素数定值1048571,根据乘子优选的原则,即λ是超素数,且满足M<Zi2,也就是
Figure BDA00003512808800061
考虑到对称性的问题一般取
Figure BDA00003512808800062
符合乘子条件的超素数有1033、1081、1097、1193、1217、1223、1259、1301、1303、1381、1531、l543、1567、1621、1663、1697、1709、1777、1783、1789、1861、2017共22个,发明中使用这22个符合条件的乘子建立了一个数组,依据时钟计数器提供的随机数据进行选择,选择得到的乘子为λ0、λ1、λ2、λ3、λ4、λ5、λ6、λ7。初始种子的选择在0到M-1(M为1048571)之间,利用八个乘法器进行并行乘法计算,每个种子通过一个乘法器与一个乘子进行乘法运算,得到的值经过奇偶判断(对2取余),然后将得到的“0”、“1”序列暂存到“0”、“1”寄存器中。此时,循环计数器的值加1,判断该值是否仍然小于128,如果是,则对M(1045871)取余,执行下一个种子与选择乘子的乘法运算。否则,已得到了完整的128位“0”、“1”序列,通过移位寄存器的移位运算,将八组“0”、“1”寄存器的值输出到1024bit的“0”、“1”序列中。根据用户的输入,生成“0”、“1”序列的详细过程如下:
(1)提取时钟计数器的计数值,生成初始种子X0,选定发生器的乘子λ;
(2)i为生成“0”、“1”序列的存储数组A[i]的索引下标,令i=0,数组A[i]=X0mod2,i++;
(3)令X1=λX0modM,X1为下一个种子,M为超素数1048571;
(4)令A[i]=X1mod2,i++,令X0=X1
(5)重复步骤(3)-(4),最终可得到存放于数组A中的“0”、“1”序列。
(三)扰乱排序模块
如图2所示,扰乱排序模块中的移位寄存器接收来自“0”、“1”序列生成模块输出的最终1024bit的“0”、“1”序列。通过移位寄存器将1024bit的“0”、“1”序列分为前、后各512bit的“0”、“1”序列。扰乱排序模块中的两个生成增量模块的输入端分别连接随机数据源模块的输出端1、2、3和4、5、6。扰乱排序的过程是以1024个数为单位对“0”、“1”生成模块输出的“0”、“1”序列进行处理,在扰乱排序的设计中选用了满周期的混合同余发生器,本发明设计中,在扰乱过程由两个不同的混合同余发生器共同完成,第一个混合同余发生器对前512bit进行扰乱排序,第二个发生器对后512bit进行扰乱排序。
本设计将混合同余发生器的一个参数设置成了动态变量,在完成对一组数据的一次重新排序之后,该参数要进行重新赋值。选定的混合同余发生器包含四个参量:乘子、增量、模、初始种子。满周期的混合同余发生器中模M必须等于2L(L为整数),而且要产生512随机数进行排序,所以本设计中两个发生器的模都固定设为512。初始种子主要影响单个随机数在序列中的前后顺序,但在其他3个参数确定的情况下,并不影响生成序列的排列数序。
例如,当初始种子取5时,生成的一个周期序列为5、0、3、14、1、12、15、10、13、8、11、6、9、4、7、2,当初始种子取11时,生成的一个周期序列为11、6、9、4、7、2、5、0、3、14、1、12、15、10、13、8,初始种子改变后随机数9由原来在序列中的第13位变成了第3位,但其前面和后面的数都没有发生变化。
乘子和增量既能影响单个随机数的排列顺序,又能影响生成序列的整体排列。
例如,当增量取3时生成的一个周期序列为5、0、3、14、1、12、15、10、13、8、11、6、9、4、7、2,当增量取5时,生成的一个周期序列为5、2、7、4、9、6、11、8、13、10、15、12、1、14、3、0,当增量c改变时除了第一个数之外,序列的整体顺序基本上都发生了变化。
基于上述原因,设计中增量作为了动态变量,其他三个参数都给出固定数值。要保证混合同余发生器达到满周期其参数必须满足:模M等于2L,乘子等于4α+1(α为正整数),增量等于2β+1(β为任意正整数)。根据上述原则,本设计将一个扰乱排序发生器设定为Xn+1=(201Xn+c1)mod512,其中初始种子X0=127、Xn表示发生器生成的第n个种子,将另一个扰乱发生器设定为Yn+1=(445Yn+c2)mod512,其中初始种子Y0=283、Yn表示发生器生成的第n个种子,c1、c2为动态变量由时钟计数器提供具体值,两个扰乱发生器在共同完成对一个长度为1024位序列排序后,变量参数进行重新赋值。本设计中,扰乱排序的执行过程如下:
(1)给第一个发生器的增量赋值,用第一个混合同余发生器生成一个随机数j(0≤j≤512),k为生成的随机数组T的索引下标,k=0;
(2)令T[j]=T[k],k++;
(3)重复步骤(2)511次,完成对前512bit伪随机数的扰乱排序;
(4)用第二个混合同余发生器生成一个随机数p(0≤p≤512);
(5)令T[p+512]=T[k],k++;
(6)重复步骤(4)-(5)511次,则完成了对后512bit伪随机数的扰乱排序,最终数组T为扰乱排序后所得到的1024bit伪随机序列。
(四)SHA_1发散模块
本发明所采用的SHA_1发散,可以通过数据填充、分割填充数列、设置初始散列值、分块处理消息四个步骤来完成,具体操作如下:
步骤1数据填充:设原始输入数列长度为L位,在数列尾部填充1位二进制数“1”,再填充K位二进制数“0”,使得填充后的数据长度(即:L+1+K)对512求余的结果为448。最后把一个表示原输入数列长度(L)的64位二进制数加在填充过的数列之后,使得数列长度为512的整数倍。例如输入字符串为“abcd”,由于在计算机中一个字符用8位ASCII码表示,所以字符串的长度为4*8=32,在字符串后加上1个二进制“1”,再添加448-32-1=415个二进制“0”。最后添加表示32的64位二进制串,如图5所示:
步骤2分割填充数列:将填充完毕的数列分割成512位为一组的数据块,每块表示为16个32位字,分别记作M0、M1……M15
步骤3设置初始散列值:SHA_1算法进行核心散列迭代计算之前,首先要设置好正确的初始散列值,它由5个32位的字组成,放在一个160位的缓冲区内,用5个32位的寄存器表示,分别标记为H0、H1、H2、H3、H4。初始化结果分别用8位16进制数表示为:
H0=0x67452301    H1=0xEFCDAB89
H2=0x98BADCFE    H3=0x10325476
H4=0xC3D2E1F0
步骤4分块处理消息:在进行SHA_1算法的核心内容散列值计算之前,还需设置计算过程需要的四个缓冲区,包括两个存储5个32位字的缓冲区、一个存储80个32位字的缓冲区、一个存储一个32位字的TEMP缓冲区。第一个5个32位字缓冲区分别标识为A,B,C,D,E;第二个5个32位字缓冲区标识为H0、H1、H2、H3、H4;80个32位字缓冲区标识为W0、W1……W79
下面开始算法核心内容散列值计算:
(1)将第一个512位数据块分成的16个字M0、M1……M15分别等于W0、W1……W15(W0为最左侧的字)。
(2)对于Wt(t=16至79),令Wt=S1(Wt-3⊕Wt-8⊕Wt-14⊕Wt-16),其中Sn(X)是位循环左移操作符,X是操作数,n是移位位数,⊕是位异或运算。
(3)令A=H0,B=H1,C=H2,D=H3,E=H4
(4)对于t=0至79,执行如下循环:
TEMP=S5(A)+ft(B,C,D)+E+Wt+Kt,E=D,D=C,C=S30(B),B=A,A=TEMP。
ft(B,C,D)是逻辑函数,Kt是常数。
(5)计算第一个5个字的缓冲区H0、H1、H2、H3、H4。令:
H0=H0+A;H1=H1+B;H2=H2+C;H3=H3+D;H4=H4+E。
当所有数据块都处理完毕后,就可得到原始数列的一个160位的散列值输出:H0、H1、H2、H3、H4
(五)伪随机序列存储器模块
该模块接收SHA_1发散模块输出的数据流,此时输入的数据流是经过加密的随机序列,可以通过FPGA的读写控制,将数据从存储器中读出。
本发明流水线化的组合式发生器具有以下特性:
1.利用并行的乘法器提高了产生“0”、“1”序列的速率,
2.将种子转化为“0”、“1”序列,再扰乱的思想,加强了生成序列的随机特性。
3.利用SHA_1发散加密算法,将扰乱后的“0”、“1”序列加密,提高了产生随机序列的安全性,使本发明设计可以应用在加密芯片等对安全性要求较高的领域中。
4.利用可编程器件FPGA实现流水线化的组合式发生器的硬件平台搭建,利用VerilogHDL语言的并行性及易综合性使硬件的实现简单。
下面将以一组具体的伪随机数产生过程为例。
(一)随机数据源模块
计数复位键置0,用户设置输入为00000H,系统时钟输入为5MHz,分频系统输出为50KHz
(二)“0”、“1”序列生成模块
第一个周期T:
生成第一个随机种子:X0=00005H
输入选择乘子的数据:05H
选择第一个乘子:索引下标为5λ0=1223即1001_1000_111
八个并行乘法器生成的“0”、“1”序列为(16进制表示的1024bit序列):
0组:d0f2929dbc4daf34e08c249dacab9f92
1组:55996e24e19346db158f463bd2e507a5
2组:defa1bf2c29550491b67230fa13cfc85
3组:53f527aaaa91e0d060ab76f806f144d6
4组:0ef27ee8b805fdbf764885cfe4db2a45
5组:6ab2ec38b65adde0277ab88a6b1fcacb
6组:d10acb20718c9ea52f2142c353df31a3
7组:1690e0526045ad26f0576d54d38fd34d
第二个周期T:
生成第二个随机种子:X1=00032H
输入选择乘子的数据:02H
选择第二个乘子:索引下标为2λ1=1097即1000_1001_001
八个并行乘法器生成的“0”、“1”序列为(16进制表示的1024bit序列):
0组:afbbeb3346235933116867eafa29489b
1组:816def2751280ebe75e19f803ba3d8dc
2组:6465f8733bb5125284068b5a87b9cf93
3组:59dbe68c4abb4addcf13d626c4fd42d3
4组:483b1c1a770090679e2b937dfa51a2a1
5组:43c0a59fdd404ab988c4ee664fa9ff2d
6组:7f4a8763eb533b17d9d4ae57422d30c9
7组:397d9d795dd827a8d5e3993d4f7f2bde
(三)扰乱排序模块
第一个周期T:
混合同余发生器1,扰乱前512bit(16进制表示的512bit序列):
29992e59a142a6d6004dbcbc415b5b30a992b0e2df89dd10b17a437b6af914c8984f220ba6a9d8fd53b23eef519e0dfdfd4a866aad9a2e3d7355e68e66a92369
混合同余发生器2,扰乱后512bit(16进制表示的512bit序列):
3b5be0b11261680474291b7f4b648ddacac5e06fa10e41faf81f5ec59e6480d99653d27215f5b62e0114b53d2f07bd04b6147a6685c641e773775b83efb874eb
第二个周期T:
混合同余发生器1,扰乱前512bit(16进制表示的512bit序列):
c2a3192fc9bedc76f77a8c45f9881ab4e1750bccbdf593ae918f351bd96283afbef2f9f5dd6b3d37e6e0d64ef233e3c1d0ff42134f24e26c50bc81ee797e5924
混合同余发生器2,扰乱后512bit(16进制表示的512bit序列):
b0d6d6fb5bc4bda9e2a0b7d7ba5c8d669027bd3c1d1d5a169e2e3e6d75df9db0002982113d61f5046edd86e0e9e619940603df90bbd369d0d23aee3a209f5e8d
(四)SHA_1发散模块
第一个周期T:
Figure BDA00003512808800111
第二个周期T:
Figure BDA00003512808800122
Figure BDA00003512808800131
(五)伪随机序列存储模块
SHA_1模块每个周期T输出的1024bit伪随机序列,作为输出流存储在存储
模块中。
最后,本发明将上述的“0”、“1”序列生成模块、扰乱排序模块以及SHA_1发散模块组合成一个流水线的工作方式,如图4,本质是通过一个时钟周期使三个子模块能够并行执行,同时克服了流水线的数据相关性,提高整体工作负载的吞吐率。例如,图4所示,输出N(N为自然数)个1024bit的随机序列,每个模块的执行周期为T秒,采用顺序工作方式吞吐率为1024/3T(位/秒),而采用3级流水线方式,吞吐率则为1024N/(N+2)T(位/秒)。得出采用3级流水线工作方式,显著提高了“0”、“1”序列生成的速率。

Claims (1)

1.一种流水线化的组合式伪随机数发生器,包括随机数据源模块,“0”、“1”序列生成模块,扰乱排序模块,SHA_1发散模块和伪随机序列存储器模块,其特征在于:
随机数据源模块包括:时间设置输入端、计数复位输入端、系统时钟输入端;7个输出端,其中0至6输出端与“0”、“1”序列生成模块的生成随机种子模块的输入端相连接,0至6输出端还与扰乱排序模块的生成增量模块的数据输入端相连接,5至6输出端还与“0”、“1”序列生成模块的选择乘子模块的输入端相连接,输入端传递给随机数据源模块接收到输入端传递的时间设置信号、计数复位信号和系统时钟信号,由随机数据源模块中的计数器通过输出端输出计数值,计数器的秒位最高计数为1,用1个二进制数表示,其它6位要分别表示十进制的0到9,各用4位二进制数表示;系统时钟通过随机数据源模块中的分频系统进行分频,生成频率为106Hz的微秒时钟进行时钟计数,时钟计数时判断输入的计数复位是否有效,如果有效则对计数器进行清零复位,判断输入的时间设置是否有效,如果有效则进行时间设置,若无任何外部输入信号有效时,计数器在微秒时钟的作用下进入工作状态,开始翻转计数,每过1微秒,则微秒位加1,到9进位,当加到999后自动清零,同时毫秒位加1,到9进位,当加到毫秒位达到999后自动清零,同时秒位加1,当从秒到微秒的计数值达到1999999后,所有计数位清零,开始重新计数;计数复位用于时钟计数器清零;
在“0”、“1”序列生成模块包括7个输入端和1个输出端,其中随机种子生成器的输入端与随机数据源模块的7位输出端相连接,作为随机种子生成器的参量产生随机种子,输出到移位寄存器中,产生8组数据,与优选乘子选择的8个乘子进行并行的乘法运算,输出的乘积结果对超素数M取模,再通过奇偶判断器输出与“0”、“1”寄存器的输入端相连接,每组循环执行128次,通过移位寄存器,将8组生成的128bit,得到1024bit的“0”、“1”随机序列,并将这1204bit的“0”、“1”序列输出到扰乱排序模块,与扰乱排序模块中的一个移位寄存器相连接,作为此移位寄存器的数据输入;
扰乱排序模块,由两个增量生成模块、两个混合同余发生器、两个移位寄存器、一个1024bit的数据暂存器组成,两个增量生成模块的每个输入端都连接到随机数据源模块的输出端,每个输出端连接到对应的混合同余发生器的输入端,每个混合同余发生器对移位寄存器产生的前后各512bit“0”、“1”序列进行扰乱,每个混合同余发生器将扰乱后的512bit“0”、“1”序列输出与相应的移位寄存器的输入端相连接,经过移位运算形成1024bit“0”、“1”序列输出与数据暂存器的输入端相连接,扰乱排序模块的输出端与SHA_1模块的16组32位寄存器的输入端相连接;
SHA_1发散模块输入端与扰乱排序模块的输出端相连接,SHA_1发散模块中包含两个计数器和16个32位的寄存器,两个计数器分别为Length计数器与Counter计数器,通过计数器循环计数扩展存储,得到80个32位寄存器,数据输入到寄存器中,通过四个串行移位相加,并行获得相加数据,将产生的数据放到编号为A,B,C,D,E五个寄存器中,寄存器输出端与并行函数发生器ft(B,C,D)的输入端相连接,数据最终存放到五个32位的散列值寄存器中,编号分别为H0,H1,H2,H3,H4;
伪随机序列存储器模块由一个ROM存储器构成,该模块的输入端与SHA_1发散模块的输出端相连接,存放最终的输出,即得到了本发生器产生的伪随机序列的数据流。
CN201310296057.6A 2013-07-15 2013-07-15 一种流水线化的组合式伪随机数发生器 Active CN103399726B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310296057.6A CN103399726B (zh) 2013-07-15 2013-07-15 一种流水线化的组合式伪随机数发生器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310296057.6A CN103399726B (zh) 2013-07-15 2013-07-15 一种流水线化的组合式伪随机数发生器

Publications (2)

Publication Number Publication Date
CN103399726A true CN103399726A (zh) 2013-11-20
CN103399726B CN103399726B (zh) 2017-02-01

Family

ID=49563361

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310296057.6A Active CN103399726B (zh) 2013-07-15 2013-07-15 一种流水线化的组合式伪随机数发生器

Country Status (1)

Country Link
CN (1) CN103399726B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104463626A (zh) * 2014-12-03 2015-03-25 携程计算机技术(上海)有限公司 券号生成方法、服务器和服务器集群
CN107391084A (zh) * 2017-07-24 2017-11-24 无锡江南计算技术研究所 一种高效可重复随机数产生装置及方法
CN108717119A (zh) * 2018-04-20 2018-10-30 南京红十字血液中心 酶联免疫检测的基于时间序列的随机质控加样方法
CN109271135A (zh) * 2017-07-18 2019-01-25 展达通讯(苏州)有限公司 真随机数生成系统及其真随机数生成的方法
CN112115508A (zh) * 2020-09-07 2020-12-22 翰顺联电子科技(南京)有限公司 应用于区块链的乱数产生方法、装置及乱数产生器
CN112580114A (zh) * 2020-12-21 2021-03-30 歌尔光学科技有限公司 一种信息处理方法、装置、设备及存储介质
CN115424391A (zh) * 2022-07-20 2022-12-02 兰州大学 一种基于fpga的随机小数发生器及其生成方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI641223B (zh) * 2018-02-07 2018-11-11 大陸商北京集創北方科技股份有限公司 Pseudo random bit sequence generation method and device, and integrated circuit generation system for generating pseudo random bit sequence generation device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101655780A (zh) * 2008-08-18 2010-02-24 中国科学院物理研究所 真随机数源及生成真随机数的方法
US20110066669A1 (en) * 2009-09-14 2011-03-17 Hitachi, Ltd Physical random number generation device
CN102063285A (zh) * 2010-12-24 2011-05-18 倍奥锐(北京)科技有限公司 一种软件实现的真随机数产生方法
JP2012141774A (ja) * 2010-12-28 2012-07-26 Iwate Univ 擬似乱数生成装置、擬似乱数生成方法及びそのプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101655780A (zh) * 2008-08-18 2010-02-24 中国科学院物理研究所 真随机数源及生成真随机数的方法
US20110066669A1 (en) * 2009-09-14 2011-03-17 Hitachi, Ltd Physical random number generation device
CN102063285A (zh) * 2010-12-24 2011-05-18 倍奥锐(北京)科技有限公司 一种软件实现的真随机数产生方法
JP2012141774A (ja) * 2010-12-28 2012-07-26 Iwate Univ 擬似乱数生成装置、擬似乱数生成方法及びそのプログラム

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104463626A (zh) * 2014-12-03 2015-03-25 携程计算机技术(上海)有限公司 券号生成方法、服务器和服务器集群
CN104463626B (zh) * 2014-12-03 2018-11-13 携程计算机技术(上海)有限公司 券号生成方法、服务器和服务器集群
CN109271135A (zh) * 2017-07-18 2019-01-25 展达通讯(苏州)有限公司 真随机数生成系统及其真随机数生成的方法
CN107391084A (zh) * 2017-07-24 2017-11-24 无锡江南计算技术研究所 一种高效可重复随机数产生装置及方法
CN108717119A (zh) * 2018-04-20 2018-10-30 南京红十字血液中心 酶联免疫检测的基于时间序列的随机质控加样方法
CN112115508A (zh) * 2020-09-07 2020-12-22 翰顺联电子科技(南京)有限公司 应用于区块链的乱数产生方法、装置及乱数产生器
CN112580114A (zh) * 2020-12-21 2021-03-30 歌尔光学科技有限公司 一种信息处理方法、装置、设备及存储介质
CN112580114B (zh) * 2020-12-21 2023-05-16 歌尔科技有限公司 一种信息处理方法、装置、设备及存储介质
CN115424391A (zh) * 2022-07-20 2022-12-02 兰州大学 一种基于fpga的随机小数发生器及其生成方法
CN115424391B (zh) * 2022-07-20 2024-05-07 兰州大学 一种基于fpga的随机小数发生器及其生成方法

Also Published As

Publication number Publication date
CN103399726B (zh) 2017-02-01

Similar Documents

Publication Publication Date Title
CN103399726A (zh) 一种流水线化的组合式伪随机数发生器
CN101620523B (zh) 一种随机数发生器电路
CN105005462A (zh) 一种混合式随机数发生器及其产生随机数的方法
CN105426159A (zh) 一种基于数字电路的真随机数发生器
CN105867877A (zh) 一种基于fpga的真随机数发生器
ES2295829T3 (es) Procedimiento y circuito para generar numeros aleatorios y producto informatico para ordenar del mismo.
CN103019648A (zh) 一种带有数字后处理电路的真随机数发生器
Panda et al. Design of Multi Bit LFSR PNRG and Performance comparison on FPGA using VHDL
WO2010034326A1 (en) State machine and generator for generating a description of a state machine feedback function
CN103560876A (zh) 一种使用基于混沌的随机时钟的加密方法及装置
CN103049242B (zh) 数字式真随机数发生器电路
Pundir et al. Novel technique to improve strength of weak arbiter PUF
Fujieda On the feasibility of TERO-based true random number generator on Xilinx FPGAs
Rahimov et al. Improving middle square method RNG using chaotic map
CN105354008A (zh) 一种随机数生成器的输出电路及输出方法
CN113672199A (zh) 一种具备物理不可克隆函数功能的多熵源随机数发生器
Tang et al. Design and implementation of a configurable and aperiodic pseudo random number generator in FPGA
Tupparwar et al. A hybrid true random number generator using ring oscillator and digital clock manager
Thomas et al. FPGA-optimised high-quality uniform random number generators
Babitha et al. FPGA based N-bit LFSR to generate random sequence number
CN111078191A (zh) 一种基于fpga硬件实现的伪随机数的生成方法
CN107016292A (zh) 防止通过功率分析进行窃听的电子电路及防止窃听的方法
Yu et al. Approximate divider design based on counting-based stochastic computing division
Garipcan et al. Implementation of a digital TRNG using jitter based multiple entropy source on FPGA
Bailey FPGA Implementation of Reversible LFSR with Primitive Polynomial using Verilog HDL

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant