1.本发明属于通讯信息安全技术领域,涉及基于保守
混沌系统的高速
随机数产生器及其产生方法。
背景技术:
2.《国家中长期科技发展规划纲要(2006-2020)》中明确提出要重点研究新型密码技术与装备,在当前数字通信中,密码是以随机分布的0、1比特数形式体现的,一个稳定快速的随机数产生器可以让密码得到有效保障。非线性系统是随机数产生的潜在对象,从数学的算法分析,如果想知道已知系统过去和未来的信息,数学模型中带有微积分是最好复现系统信息的一种方法。在这种情况下,既动态又随机的混沌系统又显得更加适合。混沌理论作为非线性科学中的重要组成部分得到了广泛关注和研究。然而,尽管人们提出了大量的混沌和超混沌系统,但各研究方向发展并不平均,其中大部分的系统是耗散混沌系统,保守混沌系统非常稀少。为了产生吞吐量大的随机数加以应用,主要有模拟电路和数字电路两种实现方法。因模拟电路一直有它固有的缺点,例如模拟电路的保密性差、抗干扰能力弱,电信号在沿线路的传输过程中会受到外界和通信系统内部的各种噪声干扰,噪声和信号混合后难以分开,从而使得系统计算结果的准确性下降。近年来,研究人员越来越多使用可编程逻辑器件fpga实现混沌系统,使得混沌系统的计算结果更稳定,产生随机数的速率更快,吞吐量更大。
技术实现要素:
3.本发明的目的在于针对现有技术存在的问题,提供一种计算结果稳定、随机数产生速率快、吞吐量大的基于保守混沌系统的高速随机数产生器及其产生方法。
4.为此,本发明采取如下技术方案:基于保守混沌系统的高速随机数产生器,其特征在于,包括:输入模块,所述输入模块用于初始值的输入;n-k4迭代模块,所述n-k4迭代模块包括四维保守混沌系统计算单元和迭代单元,所述n-k4迭代模块用于将输入模块所输入的初始值采用四维保守混沌系统方程计算出四维数值并对四维数值进行迭代;后处理模块,所述后处理模块可将迭代后的四维数值转换为二进制形式的六维随机比特数,每一维输出30位,共输出180位随机比特数。
5.进一步地,所述四维保守混沌系统计算单元包括,x输入寄存器、y输入寄存器、z输入寄存器和u输入寄存器,具体地;所述x输入寄存器分别连接有第一移位器和第一取反器,所述第一移位器连接有
∂
y输出寄存器,所述第一取反器连接有第一
加法器,所述第一加法器可执行加1运算,第一加法器连接有第二移位器,所述第二移位器连接有第二加法器,第二加法器连接有
∂
u输出寄存器;
所述y输入寄存器连接有第二取反器,所述第二取反器连接有第三加法器,所述第三加法器可执行加1运算,所述第三加法器连接有第三移位器,所述第三移位器连接有第四加法器,所述第四加法器连接有
∂
x输出寄存器;所述z输入寄存器分别连接有第四移位器、第五移位器和第三取反器,所述第四移位器连接有第五加法器,所述第五加法器可执行加20运算,第五加法器连接有第六移位器,所述第六移位器连接有三选一选择器,所述三选一选择器与第二加法器相连接,所述第五移位器连接有第六加法器,所述第六加法器可执行加-20运算,第六加法器与三选一选择器相连接,所述第三取反器连接有第七加法器,所述第七加法器可执行加1运算,所述第七加法器连接有第七移位器,所述第七移位器与三选一选择器相连接;所述u输入寄存器与四加法器相连接,u输入寄存器还连接有第八取反器,所述第八取反器连接有第八加法器,所述第八加法器可执行加1运算,第八加法器连接有第八移位器,所述第八移位器连接有
∂
z输出寄存器。
6.3.根据权利要求2所述的基于保守混沌系统的高速随机数产生器,其特征在于,所述三选一数据选择器的逻辑运算规则为当z》1时输出16*z-20,-1《z《1时,输出-4z,当z《-1时,输出16*z+20。
7.进一步地,所述迭代单元用于对四维保守混沌系统方程计算出的四维数值进行迭代。
8.进一步地,所述迭代单元通过并行流水线运算结构的方式使得每一个时钟周期迭代一次。
9.本发明还提供了基于保守混沌系统的高速随机数产生方法,采用上述任意一项所述的基于保守混沌系统的高速随机数产生器,包括以下步骤:(1)输入初始值(x0,y0,z0,u0);(2)将初始值带入四维保守混沌系统方程中,分别算出四阶k值法中(k1,k2,k3,k4)在四维的数值(xk1,xk2,xk3,xk4)、(yk1,yk2,yk3,yk4)、(zk1,zk2,zk3,zk4)和(uk1,uk2,uk3,uk4),所述四维保守混沌系统方程为:式中g(z)=1.25*(∣z-1∣-∣z+1∣);(3)将四维的数值按以下公式进行迭代得到四个维度的数值s
n+1
:式中
;(4)将混沌系统迭代出的s
n+1
作为初值(x0,y0,z0,u0)反馈到步骤(2)中作为初始值并同时对s
n+1
做后处理,变成二进制形式的六维随机比特数,每一维输出30位,共输出180位随机比特数。
10.进一步地,所述步骤(4)中后处理包括以下步骤:(1)将四维混沌系统通过四阶k值法所产生四维中每维37位比特数作为输入端;(2)分别截取步骤1中四个数值37位中的后30位比特数;(3)通过以下公式对输入的30位比特数做十进制转换式中,i代表当前数值的二进制位;(4)对每一维的30位十进制随机数分别做mod2处理,将每一维的数值转换为30位比特数;(5)采取异或方法,将x,y,z,u四维的30位比特数两两互相按位异或,即分别实现x^y,x^z,x^u,y^z,y^u,z^u。
11.本发明的有益效果在于:(1)新的四维保守混沌系统:本发明设计的混沌系统具有四个维度,相比于已有的四维连续混沌系统,该系统具有五个一次项和一个非线性函数项,通过matlab软件对系统的李雅普诺夫指数谱、相图、平衡点特征根、初值敏感性对照图、空间遍历性、分岔图等分析证实了该系统表现出很好的宽参数特性,很大的空间遍历性,很强的内在随机性和初值敏感性,从而使混沌信号在产生高速率随机数的应用成为可能。
12.(2)fpga资源的优化(乘法器使用为0):为使得fpga实现混沌系统占用的资源和功耗更少,本发明将所有系统的一次项参数调整为2的正负整数倍,即把所有的乘法器变为移位器,利用保守系统的宽参数优点,对于该混沌系统非线性函数的处理,将其优化成了数据选择器、移位器和加法器的组成,整个fpga的算法设计中,没有使用一个乘法器,很大程度上节省了资源。
13.(3)新的混沌系统迭代输出计算方法:有效提高了fpga产生随机数的速率,在原有的四阶龙格库塔法rk4的基础上作了改变,提出了一种新的四阶k值方法n-k4,比rk4在fpga时序实现中缩短了3个时钟周期,更有利于实现高速随机数的产生。
14.(4)并行流水线结构(产生一批量随机数只用一个时钟):抛弃串行运算的思维,通过fpga的并行流水线数字电路结构,再结合四维保守混沌系统具有很强的初值敏感性的特点,实现了一个时钟周期迭代一次系统输出值,并产生一批量的随机比特数。
15.(5)新的后处理方法:为了增强随机数的随机性并且提高吞吐量,本发明创造了一种新的后处理方法,将原有的迭代一次输出四维的随机比特数改造成迭代一次输出六维的
随机比特数,每一维输出30位比特数,即1个时钟周期可以输出180位比特的随机数,该设计使用的fpga型号为xilinx kintex-7系列的xc7k325tffg900-2,所采用的时钟频率为106mhz,最终本发明所产生的随机数吞吐量为19gbps,本发明产生的随机数可通过当前主流的随机数测试套件nist sp800-22 和testu01的所有随机性统计测试。
附图说明
16.图1为本发明的结构框架图;图2为本发明四维保守混沌系统计算单元的逻辑电路图;图3为本发明n-k4迭代模块中迭代单元的逻辑电路图;图4为本发明使用n-k4法在四维保守混沌系统在fpga中所输出的二维相图;图5为本发明后处理模块框架图;图6为迭代单元n-k4时序图;图7为现有经典四阶龙格库塔法rk4时序图;图8为本发明中迭代单元并行流水线结构框架图;图9为迭代单元并行流水线结构时序图;图10为定点运算分布位数图;图11为matlab仿真产生的四维随机数图;图12为vivado混沌算法仿真产生的四维随机数图;图13为fpga板上验证经ila观测的真实随机数图;图14为十进制按位通过mod2转换成比特形式说明图;图15为fpga端的资源使用情况图;图16为容量为100mb的nist随机数测试结果图;图17为容量为1000mb的nist随机数测试;图18为testu01测试结果图;图19为李雅普诺夫指数le图谱;图20为平衡点r1,r2,r3的特征根λ在复数平面的分布图;图21为四维保守混沌系统方程仿真得到的所有二维平面相图;图22为四维保守混沌系统方程仿真得到的所有三维平面相图;图23为x,y,z,u四个维度选取不同初值的波形对比图;图24为x维和y维在迭代50万次后的波形对照图;图25为x维和y维数值分布直方图;图26为混沌系统随参数变化的分岔图和le图谱。
具体实施方式
17.下面结合实施例对本发明做详细说明:首先本发明提出了一种四维保守混沌系统方程公式如下:
其中,(x,y,z,u)为系统的状态变量,g(z)为分段线性函数,其公式如下:g(z)=1.25*(∣z-1∣-∣z+1∣);软件仿真平台使用的是matlab2021b软件,初步采用四阶龙格库塔法,选取步长为1/64来计算常微分方程,其中,步长h的大小决定了计算结果的分辨率和精度。更小的步长会提供更大的分辨率和更高的精度,但同时计算量和系统运行时间也会增加。
18.下面对四维保守混沌系统方程进行混沌系统动力学特性分析:李雅普诺夫指数(lyapunov exponent,le)可以表征系统运动的特征,其中最大le决定整个吸引子的快慢,最小le则决定轨道收敛的快慢,而所有le之和可以大体上表征轨道平均发散或者收敛的快慢,le的计算公式如下:设定系统四维的初值为(1,1,1,1),求得公式中le1=0.6708,le2= 0.0079,le3=-0.0072,le4=-0.6714,le图谱如图19所示,从图19可以看出,x维的le有一个明显大于0的状态,有一个正的le,意味着在系统相空间中,无论初始两条轨线的间距多么小,其差别都会随着时间的演化而成指数率的增加以致达到无法预测的运动状态,因此可以判定该系统已经进入到了混沌的运动状态。
19.表征了相空间系统体积的增长率或减小率,计算公式如下:由此公式得出可以证明该系统的变化是有界的,当很明显的小于0时,系统空间体积是在不断减小的,是耗散型的,而四维保守混沌系统方程的值非常接近于0,说明四维保守混沌系统方
程的相空间体积增长率和减小率都为0,并非耗散型也不是增长型,而是保守型混沌系统。
20.系统的平衡点稳定性分析:当对带有微分的数学系统模型进行平衡点分析时,需要对系统方程的微分项全部赋0,此时系统的运动速度为0,即可得到系统的平衡状态方程为:通过解本方程组,可以得到三个实数平衡点,r1=(0,0,1.25,0),r2=(0,0,0,0),r3=(0,0,-1.25,0),该系统的雅可比矩阵为:将四维保守混沌系统方程在平衡点r1处线性化,所对应的jacobi矩阵为:将四维保守混沌系统方程在平衡点r2处线性化,所对应的jacobi矩阵为:将四维保守混沌系统方程在平衡点r3处线性化,所对应的jacobi矩阵为:传统的求特征根和特征向量方法为:因为r1,r3的jscobi矩阵是相同的,将公式(1)带入求特征根公式(4),可以求得平衡点r1和r3所对应的四个特征值分别为(8.6139i,-8.6139i,3.7149i,-3.7149i),将公式(2)带入求特征根公式(4),可以求得平衡点r2所对应的四个特征值分别为(-3.5345,
4.5269i,-4.5269i,3.5345),可画出它们的复数平面图如图20所示,从图20可以看出,平衡点r2的特征根有两个纯虚数和两个纯实数,一正一负,因此可判定平衡点r2有一个非稳定特征根(正实数)和特征向量,和一个稳定特征根(负实数)和特征向量。相平面的解运动轨线将会是一个发散和一个收敛的趋势,此时称此平衡点为鞍点。平衡点r1和r3的特征根都分布在虚轴上,实部为0,所以系统的解轨迹将会是以原点为圆心的圆,所以可以判断这两个平衡点是系统的中心型平衡点,进一步证明了四维保守混沌系统方程的相空间运动既没有耗散也没有增大的趋势,这种特点大多存在于保守系统中,由以上计算结果和说明可以总结出表1。
21.表1为系统平衡点稳定性分析表系统的相图分析在绘制相图的实验中,四维保守混沌系统方程参数选择步长h为1/64,设定系统的初值为(1,1,1,1),四维保守混沌系统方程仿真得到的所有二维平面相图如图21所示,四维保守混沌系统方程的所有的三维平面相图如图22所示,从图21至图22可以看出,四维保守混沌系统方程与普通连续耗散型混沌系统或超混沌连续耗散型系统有明显的区别,该系统没有显著的混沌吸引子,在一定体积的运动空间内,遍历了大部分的坐标点,相比于普通的连续混沌系统,以及四维或五维的超混沌系统,四维连续保守混沌系统的形状更加均匀,相图没有出现前者普遍存在的内疏外密的分布情况,四维保守混沌系统方程的三维相图,大多是球形或椭球形状,这表明该系统在所属混沌空间内的数值分布是均匀的,系统对空间的利用率是很好的。这也为该随机数产生器具有随机性较强的特点打下了很好的基础。
22.系统的初值敏感性分析初值敏感性是混沌系统最重要的特征之一,初值敏感性指的是初始条件下各个维度的参数在微小的变化下就能带动整个系统长期的巨大连锁变化反应,很可能会与原本的运动趋势毫不相干,比如蝴蝶效应。对四维保守混沌系统方程进行初值敏感性分析,在这里取混沌系统的第一个初值(x0,y0,z0,u0)为(1,1,1,1)为了最大化的体现系统的初值敏感性,第二个初值在这里只取一个非常微小的变化(万分之一),并且只改变x维方向的初值,在这里取系统的第二个初值(x0,y0,z0,u0)为(1.0001,1,1,1),步长h设置为1/64,x,y,z,u四个维度选取不同初值的波形对比如图23所示,从图23可以看出,初值在其他维度不变,仅在x维上产生万分之一的变化,系统在t=10之后,数值波形就会发生越来越大的差别。系统的迭代次数iterations=t/h,因此可以知道在迭代了640次之后,系统的四个维度随时间变化的波形图已经出现了很大差别。
23.为了得到四维保守混沌系统方程初值敏感性的更多信息,把迭代次数增加到足够大,观察运动轨迹的变化,x维和y维在上述初值条件下迭代了50万次之后的波形对照如图24所示,从图24可以看出,系统在迭代了50万次之后,y维和z维的波形图几乎没有任何相关
性,由以上实验可以证明系统即使在其中一个方向的初始值变化万分之一时,只要迭代次数足够多,原来的混沌系统就会变成两个没有相关性的系统。由此证明四维保守混沌系统方程具有较好的初值敏感性。
24.系统的空间遍历性分析从相图可以宏观看出四维保守混沌系统方程有较好的空间利用率,为了更直观的分析系统的空间遍历性,将系统参数步长h选取为1/64,时间总长度为1000,即在系统迭代64000次后,分别对各个维度数值分布的情况进行分析。使用matlab2021b软件对上述系统进行计算,根据各个维度的边界进行分区的数值统计如表2至表4所示。
25.表2 x维和y维数值分布统计表表3 z维数值分布统计表表4 u维数值分布统计表根据表2至表4各个维数的数值分布统计,可以画出直方图,如图25所示,在图中系统的四个维度的数值分布直方图可以看出,四维保守混沌系统方程并没有像洛伦兹lorenz等经典连续混沌系统几乎都是呈现出两头大中间小的情况。四维保守混沌系统方程在各个维数上的数值分布都是相对均匀的,其中,从图25可以看出,系统在y维、z维的直方图统计中的数值分布情况已经非常均匀,在x维和u维各个数值区间的分布没有出现一个区间比另一个区间的总数大于正整数倍的情况,由此可以证明四维保守混沌系统方程的空间遍历性是优于其他连续混沌系统的。
26.系统随参数变化的分岔图及le图谱分析b,d,e三个参数变化所绘制的分岔图和le图谱如图26所示,从图26可以看出,le图谱和分岔图的变化结果是保持一致的,le没有出现两条线段明显大于0的情况,说明该系统没有进入过超混沌运动状态,证明该系统是保守系统。因新创立的四维保守混沌系统具有较强的初值敏感性和较大的空间遍历性,故可以用来实现随机数产生器。
27.基于保守混沌系统的高速随机数产生器(如图1所示),采用fpga硬件实现,在fpga进行相关模块的设置,具体包括:输入模块,所述输入模块用于初始值的输入;n-k4迭代模块,n-k4迭代模块包括四维保守混沌系统计算单元和迭代单元,具体
地四维保守混沌系统计算单元用于将输入模块所输入的初始值采用四阶k值法计算出四维数值,四维保守混沌计算单元具体包括(如图2所示):x输入寄存器a1、y输入寄存器a2、z输入寄存器a3和u输入寄存器a4,x输入寄存器a1分别连接有第一移位器b1和第一取反器c1,第一移位器b1连接有
∂
y输出寄存器d1,第一移位器b1可执行左移2位操作,第一取反器c1连接有第一加法器e1,第一加法器e1可执行加1运算,第一加法器e1连接有第二移位器b2,第二移位器b2可执行左移3位操作,第二移位器b2连接有第二加法器e2,第二加法器e2连接有
∂
u输出寄存器d2;y输入寄存器a2连接有第二取反器c2,第二取反器c2连接有第三加法器e3,第三加法器e3可执行加1运算,第三加法器e3连接有第三移位器b3,第三移位器b3可执行左移2位操作,第三移位器b3连接有第四加法器e4,第四加法器e4连接有
∂
x输出寄存器d3;z输入寄存器a3分别连接有第四移位器b4、第五移位器b5和第三取反器c3,四移位器b4连接有第五加法器e5,第五加法器e5可执行加20运算,第五加法器e5连接有第六移位器b6,第六移位器b6连接有三选一选择器f,三选一选择器f与第二加法器e2相连接,第五移位器b5连接有第六加法器e6,第六加法器e6可执行加-20运算,第六加法器e6与三选一选择器f相连接,第三取反器c3连接有第七加法器e7,第七加法器e7可执行加1运算,第七加法器e7连接有第七移位器b7,第七移位器b7与三选一数据选择器f相连接;u输入寄存器a4与第四加法器e4相连接,u输入寄存器a4还连接有第四取反器c4,所述第四取反器c4连接有第八加法器e8,第八加法器e8可执行加1运算,第八加法器e8连接有第八移位器b8,第八移位器b8连接有
∂
z输出寄存器d4。
28.三选一数据选择器f的逻辑运算规则为当z》1时输出16*z-20,-1《z《1时,输出-4z,当z《-1时,输出16*z+20。
29.相较于现有常规电路,本发明四维保守混沌计算单元的逻辑电路采用移位器代替乘法器,将乘法器资源降低到了零个,取而代之的是移位器和取反操作,很大程度的减少了fpga板内资源的利用率。
30.通过上述逻辑电路可实现本发明所提出的四维保守混沌系统方程:通过本方程可实现四阶k值法中(k1,k2,k3,k4)在四维的各个数值计算。
31.迭代单元,迭代单元用于对四维数值进行迭代,具体地,迭代单元的逻辑电路如图3所示,从图中可看出,timing control unit是一个只有两个状态的状态机,t0状态来控制输出k1,k2,k3,k4的值,四维所占用的资源共有16个寄存器,用(xk1,xk2,xk3,xk4)、(yk1,yk2,yk3,yk4)、(zk1,zk2,zk3,zk4)以及(uk1,uk2,uk3,uk4)表示,t1状态控制输出sn四个维度的值,所占用的资源一共有4个寄存器,分别是(xn,yn,zn,un),通过本组合逻辑电路可实现以下迭代公式:
式中从图3中可看出迭代单元中用到了一个乘法器乘h2,本实施例中取h的值为1/64,即可通过移位器(《《12)来代替乘法器的实现,即新四阶k值法n-k4的组合逻辑电路也没有用到一个乘法器,有效节省资源。
32.本发明采用xilinx kintex-7的fpga产品 ,芯片型号为xc7k325tffg900-2,使用verilog语言实现上述时序组合逻辑电路,板内正常下载程序后开始运行,通过串口将每一次系统迭代的sn的值输出到电脑端的文本文件(.txt),在迭代到20000次后,用matlab2021b软件读取文本文档,通过matlab程序将文本数据遍历并且放在由(x,y,z,u)四个维度也就是四列n行(n=20000)组成的矩阵中,然后将每一列的数据按照从上到下的行数两两互相绘制成相图,这样就可以得到fpga实现的四维保守混沌系统的所有二维相图,fpga使用n-k4方法去实现四维保守混沌计算所绘制的各个不同维度的二维相图如图4所示,从图中可以看出,n-k4所实现的系统的相图和经典的四阶龙格库塔法rk4是比较相似的,在fpga实现的时序逻辑中,n-k4比rk4可缩短3个时钟周期,这更有利于发明出更高速的随机数产生器,以上算法实现了两个时钟周期就可以迭代产生一批量随机比特数的设计。
33.后处理模块,为了增强所产生随机数的随机性,需要对混沌系统通过n-k4迭代出的四个维度的数值分别进行后处理,后处理模块可将迭代后的四维数值转换为二进制形式的六维随机比特数,每一维输出30位,后处理模块框架如图5所示,后处理模块选用xilinx kintex-7系列的fpga产品 ,芯片型号为 xc7k325tffg900-2,设置时钟频率为106mhz。
34.本发明还提供了一种基于保守混沌系统的高速随机数产生方法,采用上述基于保守混沌系统的高速随机数产生器,包括以下步骤:(1)通过输入模块输入初值s0,s0具体为(x0,y0,z0,u0),并将初始值传输至四维保守混沌计算单元。
35.(2)通过混沌计算模块将初始值代入系统微分方程中,具体地,微分方程如下:式中g(z)=1.25*(∣z-1∣-∣z+1∣)通过公式分别算出四阶k值法中(k1,k2,k3,k4)在四维的各个数值f(sn),f(sn)具体
为(xk1,xk2,xk3,xk4)、(yk1,yk2,yk3,yk4)、(zk1,zk2,zk3,zk4)以及(uk1,uk2,uk3,uk4)。
36.(3)将四维的数值按以下公式进行迭代得到四个维度的数值s
n+1
式中然后将得到的s
n+1
四维的数值输入至后处理模块,并同时反馈到四维保守混沌计算单元作为下一次的初始值。
37.由以上公式可以看出,本发明所提出的新四阶k值法n-k4,k1到k4的解法是从sn的每一个维度的数值做出改动再代入f(sn),这样的好处是(k1,k2,k3,k4)不再有前后时间的相关性,它们都只和sn相关,可以画出n-k4的时序图,具体如图6所示,本发明所提出的新四阶k值法n-k4,系统迭代一次只需要一个时钟周期。
38.目前现有的经典四阶龙格库塔法rk4计算公式如下:式中通过公式可看出,k1,k2,k3,k4和s
n+1
的关系存在(k1k2k3k4sn)前后时间的相关性,可以画出经典rk4的时序图(如图7所示),通过比较可看出,本发明相较于现有的经典四阶龙格库塔法rk4缩短了3个时钟周期。
39.下面介绍本发明是如何将混沌系统迭代周期缩短到只有一个时钟周期,用fpga去实现新的四阶k值法n-k4时,如果采用状态机,状态机需要两个状态即两个时钟周期才能迭代一次,因为(k1,k2,k3,k4)代表的共16个寄存器在图3中只有在状态t1才会工作一次,而在状态t0时,则会保持数据,没有充分节省时间,为此本发明摈弃串行的思维,舍弃verilog中的状态机时序结构,利用fpga特有的并行运算优点,让所有的寄存器在每个周期都赋值迭代一次,并且不会降低随机数的随机性,由于四维保守混沌系统的初值敏感性很强,不同的初值会迭代出两个不同的系统,故本发明在迭代单元采取并行流水线结构的形式,如图8所
示,在图中,用sn代表(xn,yn,zn,un)四个寄存器,k1代表(xk1,xk2,xk3,xk4)四个寄存器,k2代表(yk1,yk2,yk3,yk4)四个寄存器,k3代表(zk1,zk2,zk3,zk4)四个寄存器,k4代表(uk1,uk2,uk3,uk4)四个寄存器,s
n+1
代表(x
n+1
,y
n+1
,z
n+1
,u
n+1
)四个寄存器,s0和p0为四维保守混沌系统的两个不同的初值,图8中上侧线表示要比下侧线在时钟上提前一个周期,系统运行的前几个时钟状态表述如下:第一个时钟:s0,p0代表两个不同的初值分别为(1,1,1,1)和(0.8,0.4,0.6,0.9),从系统复位结束后的第一个时钟上侧线s0首先输入到下一层n-k4的输入端。
40.第二个时钟:通过下侧线将p0输入到下一层n-k4的输入端。
41.第三个时钟:因为n-k4迭代一次结果只需要两个时钟,所以同时,s0作为初值输入已经得到了第一次迭代的结果s1,再将s1通过红的线反馈到n-k4的输入端。
42.在第四个时钟:p0作为初值输入得到了第二次迭代的结果p1。再将p1通过下侧线反馈到n-k4的输入端。
43.在第五个时钟:s1作为n-k4的输入端已经得到了第三次迭代的结果s2,再将s2通过上侧线反馈到n-k4的输入端,以此类推更多时钟后续的系统运行步骤。
44.由以上系统最初运行的5个时钟,可以得出流水线时序图如图9所示,从图9可以看出,(k1,k2,k3,k4)所表示的共16个寄存器,每一个时钟都在进行运算赋值,从而没有浪费一个时钟,前一个时钟周期算出关于s系统的k值,下一个时钟周期继续算出p系统的k值,而sn所代表的寄存器的值也是每个时钟周期赋值一次,前一个时钟周期算出s系统的输出值,下一个时钟周期算出p系统的输出值,以此类推,由以上的系统设计实现了一个时钟周期迭代产生一次随机数的方法。
45.因为在实际数字电路组成结构中,是没有真正意义上的小数的,所以本发明使用的是有符号位定点运算,将每个数值设定为36位,其正数和小数的分布如图10所示,从图中看出四维保守混沌系统方程中所有的数值运算位数都选在了37位宽,选定0-29位作为小数,30-36位作为整数,最后一位37位作为符号位。
46.用matlab仿真产生(xn,yn,zn,un)四维的随机数如图11所示,在图11中,左侧的第一列(1,2,3,4)分别代表(xn,yn,zn,un)的数据,第二列则代表s0四个维度的值,第三列代表p0四个维度的值,第四列代表s1四个维度的值,第五列代表p1四个维度的值,以此往下类推,通过matlab软件仿真,本发明在软件仿真层面已经初步实现了并行流水线结构。
47.利用verilog语言实现混沌系统和并行流水线的算法,在vivado2018.3软件上运行testbenc件,得到(xn,yn,zn,un)四维的随机数如图12所示,在图中可看出,lb_clk为testbenc件设置的主时钟,通过fpga软件仿真可以看出,在fpga程序中已经实现了一个时钟迭代输出一次随机数的并行流水线结构,将设计好的流水线结构的四维保守混沌系统的verilog程序生成bitstreams下载至fpga开发板,连接电脑,通过ila(integrated logic analyzer)集成逻辑实时分析器进行fpga板上实际验证。ila触发所显示的板内运行的真实数据如图13所示,在图11至图13中,因为fpga开发板内定点运算的数据的低30位都是小数,所以整个数值跟理想数据相比被放大2^30倍,为了更加方便与matlab仿真数据进行对比,图10中的matlab仿真数据是被放大了2^30倍,在板上实际运行状态ila可以看出新的并行流水线结构真正实现了一个时钟迭代产生一批量随机数的目标,也就是说本发明从matlab混沌算法仿真,到fpga仿真以及实际fpga板内ila验证,三张图中系统的四个维度(xn,yn,zn
,un)依次往下迭代的输出数据是完全一样并且不存在误差,因此可证明本发明已完成四维保守混沌系统从软件仿真到硬件设计的具体实现。
48.(4)为了增强所产生随机数的随机性,需要对混沌系统通过n-k4迭代出的四个维度的数值分别进行后处理,为此,提出一种新的后处理方法,按照以下步骤进行(结合图5进行详细说明):1.将四维混沌系统通过n-k4迭代所产生的四维的每维37位比特数作为输入端。
49.2.分别截取四个数值37位中的后30位比特数。
50.3.通过以下公式对输入的30位比特数做十进制转换式中,i代表当前数值的二进制位,在基本数学原理中数值总是从低位向高位进位,数值的位数越高,高位数之间的时间相关性会越大,所以用30位之间高的15位分别与对应的低位相加,再加上所在位数,低15位分别与它们本身的位数相加,这样就把每个比特数,转换成了十进制数,每一维产生30位十进制数。
51.4.对每一维的30位十进制随机数分别做mod2处理(如图14所示),这样就把每一维的数值又转换成了30位比特数,通过mod2处理后的数值,与原来数值的相关性已经有所降低,输出值也可直接当成比特数,节省运算资源。
52.5.为了彻底打乱数值的相关性,采取异或的方法,将x,y,z,u四维的30位比特数分别两两互相按位异或,即分别实现x^y,x^z,x^u,y^z,y^u,z^u,用这种方法最终实现了一个时钟周期可以输出六维随机比特数,每一维输出30位比特数,那么六维就是一个时钟周期能够输出180位比特形式的随机数。
53.本发明选用xilinx kintex-7系列的fpga产品 ,芯片型号为 xc7k325tffg900-2,设置时钟频率为106mhz,本发明所设计的随机数产生器一个时钟周期能够输出180位比特数,所以最终本发明产生随机数的吞吐量为19080mbps,即19gb/s。fpga端的资源使用情况如图15所示,该随机数产生器的估计功耗为2.36w@19gbps。
54.随机数产生器最重要的指标就是所产生随机数的随机性,目前大多数测试采用的是nist sp800-22,以及testu01测试套件,以上两种测试套件都可以测试以比特数组成的txt文件或bin文件,本发明将fpga板内产生的随机数通过串口输入到上位机端进行测试,先产生100mb比特文件进行nist测试,测试结果如图16所示,在nist的测试报告中,p-value显示的是p值,proportion显示的是通过率,如果p-value值大于0.01并且proportion大于96%表示测试成功。
55.从图16中还可以看出,本发明所输出的100mb的比特文件的p-value值均大于0.01并且proportion大于960/1000,由此证明100mb的比特文件通过了nist测试。
56.为了验证产生更多随机数的随机性,本发明用fpga输出1000mb的比特文件进行测试,测试结果如图17所示,从图17可以看到,生成1000mb的比特数时所得到的测试结果p-value值也均大于0.01,并且通过率proportion均大于96%,因此可证明该随机数产生器已经成功通过了nist800.22测试套件的随机性统计测试。
57.testu01测试套件对比特文件的测试是以32位为一个测试单位的,所以fpga端所
输出的比特数应当是32的整数倍,当输出268435456个比特数时,测试结果如图18所示,从图18可以看出,经过总测试时间125秒后,本发明的随机数产生器所产生的比特形式的随机数全部通过testu01测试套件中rabbit和alphabit的随机性统计测试。
技术特征:
1.基于保守混沌系统的高速随机数产生器,其特征在于,包括:输入模块,所述输入模块用于初始值的输入;n-k4迭代模块,所述n-k4迭代模块包括四维保守混沌系统计算单元和迭代单元,所述n-k4迭代模块用于将输入模块所输入的初始值采用四维保守混沌系统方程计算出四维数值并对四维数值进行迭代;后处理模块,所述后处理模块可将迭代后的四维数值转换为二进制形式的六维随机比特数,每一维输出30位,共输出180位随机比特数。2.根据权利要求1所述的基于保守混沌系统的高速随机数产生器,其特征在于,所述四维保守混沌系统计算单元包括,x输入寄存器、y输入寄存器、z输入寄存器和u输入寄存器,具体地;所述x输入寄存器分别连接有第一移位器和第一取反器,所述第一移位器连接有
∂
y输出寄存器,所述第一取反器连接有第一加法器,所述第一加法器可执行加1运算,第一加法器连接有第二移位器,所述第二移位器连接有第二加法器,第二加法器连接有
∂
u输出寄存器;所述y输入寄存器连接有第二取反器,所述第二取反器连接有第三加法器,所述第三加法器可执行加1运算,所述第三加法器连接有第三移位器,所述第三移位器连接有第四加法器,所述第四加法器连接有
∂
x输出寄存器;所述z输入寄存器分别连接有第四移位器、第五移位器和第三取反器,所述第四移位器连接有第五加法器,所述第五加法器可执行加20运算,第五加法器连接有第六移位器,所述第六移位器连接有三选一选择器,所述三选一选择器与第二加法器相连接,所述第五移位器连接有第六加法器,所述第六加法器可执行加-20运算,第六加法器与三选一选择器相连接,所述第三取反器连接有第七加法器,所述第七加法器可执行加1运算,所述第七加法器连接有第七移位器,所述第七移位器与三选一选择器相连接;所述u输入寄存器与第四加法器相连接,u输入寄存器还连接有第八取反器,所述第八取反器连接有第八加法器,所述第八加法器可执行加1运算,第八加法器连接有第八移位器,所述第八移位器连接有
∂
z输出寄存器。3.根据权利要求2所述的基于保守混沌系统的高速随机数产生器,其特征在于,所述三选一数据选择器的逻辑运算规则为当z>1时输出16*z-20,当-1<z<1时,输出-4z,当z<-1时,输出16*z+20。4.根据权利要求1所述的基于保守混沌系统的高速随机数产生器,其特征在于,所述迭代单元用于对四维保守混沌系统方程计算出的四维数值进行迭代。5.根据权利要求4所述的基于保守混沌系统的高速随机数产生器,其特征在于,所述迭代单元通过并行流水线运算结构的方式使得每一个时钟周期迭代一次。6.基于保守混沌系统的高速随机数产生方法,采用权利要求1-5任意一项所述的基于保守混沌系统的高速随机数产生器,其特征在于,包括以下步骤:(1)输入初始值(x0,y0,z0,u0);(2)将初始值带入四维保守混沌系统方程中,分别算出四阶k值法中(k1,k2,k3,k4)在四维的数值(xk1,xk2,xk3,xk4)、(yk1,yk2,yk3,yk4)、(zk1,zk2,zk3,zk4)和(uk1,uk2,uk3,uk4),所述四维保守混沌系统方程为:
式中g(z)=1.25*(∣z-1∣-∣z+1∣);(3)将四维的数值按以下公式进行迭代得到四个维度的数值s
n+1
:式中4)将混沌系统迭代出的s
n+1
作为初值(x0,y0,z0,u0)反馈到步骤(2)中作为初始值并同时对s
n+1
做后处理,变成二进制形式的六维随机比特数,每一维输出30位,共输出180位随机比特数。7.根据权利要求6所述基于保守混沌系统的高速随机数产生方法,其特征在于,所述步骤(4)中后处理包括以下步骤:(1)将四维混沌系统通过四阶k值法所产生四维中每维37位比特数作为输入端;(2)分别截取步骤1中四个数值37位中的后30位比特数;(3)通过以下公式对输入的30位比特数做十进制转换式中,i代表当前数值的二进制位;(4)对每一维的30位十进制随机数分别做mod2处理,将每一维的数值转换为30位比特数;(5)采取异或方法,将x,y,z,u四维的30位比特数分别两两互相按位异或,分别实现x^y,x^z,x^u,y^z,y^u,z^u。
技术总结
本发明提供了基于保守混沌系统的高速随机数产生器及其产生方法。本发明将所产生的随机数经过美国国家标准与技术研究院(The National Institute of Standards and Technology)的测试套件NIST SP800-22和另一种测试套件TestU01这两个常用的随机数测试标准,实验测试结果可以证明所产生的随机比特数序列全部通过了随机性测试。该高速随机数产生器吞吐量可以达到19Gbps。器吞吐量可以达到19Gbps。器吞吐量可以达到19Gbps。
技术研发人员:
杜娟 李浩然 李守亮 卢保庆 王晓彤 杨文静 赵泽洋
受保护的技术使用者:
兰州大学
技术研发日:
2022.09.27
技术公布日:
2022/12/30