技术简介:
发现现有伪随机数生成器存在成本高、速度慢、无法满足高带宽需求的问题。本发明提出基于FPGA的混沌模型算法,通过128bit定点数设计和分块并行运算,实现10Gbps高速生成,同时提升随机性测试通过率并降低功耗。
关键词:FPGA伪随机数生成,混沌算法优化
基于fpga的高速伪随机数生成方法及高速伪随机数生成器
技术领域
1.本发明属于通信信息安全技术领域,尤其涉及一种基于fpga的高速伪随机数生成方法及高速伪随机数生成器。
背景技术:2.在当今的信息化时代背景下,随机数在许多领域都得到了广泛的应用。例如:在密码学中,随机数可用于密码的传输、存储、计算等;在雷达监测中,随机数可用于雷达波形的产生,利用随机数产生的噪声波形,具有抗干扰、低截获等优点;随机数用于机械振动中,可利用蒙特卡洛方法对机械振动的随机性做出预测。因此,研究能够产生随机性高、复杂度高的随机数具有重要的应用价值。
3.产生随机数的方法主要有算法产生伪随机数、物理熵源产生真随机数和混沌电路产生随机数等方法,其中,算法产生伪随机数和物理熵源产生真随机数的方法具有可行性,但存在着平台局限、易受环境干扰、成本较高等致命缺点,因此,本发明采用混沌电路产生随机数的方法。混沌电路既可以产生伪随机数也可以产生真随机数,但由于真随机数产生速率较低且难度较大、成本较高,因此本发明选择具有更高性能的伪随机进行产生,其产生速度较快,且具有可重复性和可再生性。
4.目前混沌电路伪随机数产生主要有以下研究方向和成果:首先,传统的混沌模型,采用异或电路进行实现,虽然这种模型规模较小且资源占用率低,但是其产生的随机数随机性不高,需要后处理,速率只有7.38mbit/s;其次,采用增强型低维混沌系统加sin运算的模型,虽然可以进行小型化和芯片化,但是复杂的算法导致其产生的速率不高;最后,美国安捷伦公司所生产的伪随机数产生器,虽然已规模化生产,但高昂的成本令人望而却步。
5.综上所述,现有的混沌电路伪随机数产生器存在如下缺陷:
6.1.成本较高,目前存在的成熟的伪随机数产生器价格均高达几十万;
7.2.随机数产生速率较低目前最高速率仅达6.78gbps,在高带宽需求的视频传输以及企业或军队用途中远远不够;
8.3.产生序列复杂度不够,无法通过nist sp800-22、testu01等随机性标准测试。
技术实现要素:9.针对上述背景技术中指出的不足,本发明提供了一种基于fpga的高速伪随机数生成方法及高速伪随机数生成器,旨在解决上述背景技术中现有技术存在的问题。
10.为实现上述目的,本发明采用的技术方案是:
11.一种基于fpga的高速伪随机数生成方法,包括以下步骤:
12.首先,建立如下混沌模型算法:
[0013][0014]
其中α,β,γ1,γ2均为二维逻辑斯蒂映射的参数,a为一维帐篷模型的控制参数;
[0015]
其次,在fpga中对所述混沌模型算法进行实现,在fpga电路中的整体运算采用128bit定点数设计,运算过程中,对混沌模型算法进行分块处理,将模型中占用大量时间的运算分成小部分进行并行完成。
[0016]
上述方法在模型层面就使产生的伪随机数具有足够高的随机性,使得不用利用xor运算也能通过严格而高标准的随机性测试,同时也使产生序列的复杂性得到了保障。该方法的运算量较小,计算方法较为高效,使fpga的资源占用率达到较低的水平,展示出较高的利用率,从而降低其功耗。
[0017]
优选地,所述混沌模型算法进行分块处理方式如下,其中省略了mod运算:
[0018][0019]
其中,上标1、2、3、4分别代表p1、p2、p3、p4,即fpag运算模块中的第一部分、第二部分、第三部分和第四部分的运算,参数选择为(α,β,γ1,γ2,a)=(4,4,2,2,0.5),使整个系统的运算结果mod中不可能产生负数结果,进而mod函数的运算就可以表示为截取掉运算过程中的整数位,保留小数位;
[0020]
对于p2和p4运算中,采用如下公式将128bit的乘法拆分为三个64bit进行运算,以大幅减少运行频率损失:
[0021]
x2={a,b}
×
{a,b}={(a2),(2ab),(b2)}。
[0022]
优选地,所述分块处理方式下,运算过程如下:
[0023]
s0:输入128bit的xn,yn初始值;
[0024]
s1:对于p1:进行1-xn的操作;
[0025]
对于p2,p4:进行a2,b2,2ab的计算操作;
[0026]
对于p3,首先利用yn的msb来判断yn是否大于0.5,即a的值,从而决定是采用yn(当0≤yn<0.5时)还是(1-yn)(当0.5≤yn<1时),同时由于1-a以及a都等于0.5,除以1-a或者a等于乘2,即左移一位的操作,因此,将以上判断后的结果再进行f操作则形成模型算法中虚线右侧的计算结果,不进行f操作则形成模型算法中虚线左侧的结果;
[0027]
s2:对于p1:进行1-xn与xn相乘的操作;
[0028]
对于p2,p4:进行相加的操作,算出x
n2
,y
n2
;
[0029]
对于p3:进行虚线左右两部分相乘的操作;
[0030]
s3:将输出的256bit结果进行截取128msb的操作,对截取的位置根据所乘响应的参数进行相应的改变,然后对p1,p2的剩余部分进行相加,对p3,p4的剩余部分进行相加,结果即为x
n+1
,y
n+1
,同时将两个通道的x
n+1
,y
n+1
进行输出,形成单次256bit位宽的输出。
[0031]
本发明进一步提供了一种基于fpga的高速伪随机数生成器,其应用了将一维帐篷混沌映射(tent map)嵌入到二维逻辑斯蒂混沌映射(logistic map)中进行组合产生的嵌入式交叉耦合拓扑结构,因此,伪随机数生成器主要包括:
[0032]
一维帐篷映射模块:用于对y进行映射,表示如下:
[0033][0034]
其中,k为迭代次数,α为控制参数,即为嵌入式交叉耦合映射中的参数a。
[0035]
二维逻辑斯蒂映射模块:用于对x和y分别进行映射,表示如下:
[0036][0037]
其中,λ1、λ2均为控制参数;
[0038]
输入耦合模块:用于将两个维度的输出进行耦合后,分别送入两个输入通道;
[0039]
输出耦合模块:用于生成伪随机数并输出。
[0040]
相比于现有技术的缺点和不足,本发明具有以下有益效果:
[0041]
(1)本发明提供了一种基于fpga的全新伪随机数产生方法,提出的混沌模型算法运算量较小且高效,使fpga的资源占用率达到较低水平,提高资源的利用效率,从而降低其功耗。
[0042]
(2)采用本发明产生的伪随机数速率可以达到10gbps,能够满足大部分日常的需求,也能够用于企业或者更高要求的军事用途,远远超过了现有的伪随机数算法实现所能达到的速率。
[0043]
(3)本发明在模型层面就使产生的伪随机数具有足够高的随机性,因此不用利用xor运算也能通过严格而高标准的随机性测试,同时也使产生序列的复杂性得到了保障。本发明产生的伪随机数序列,能够通过国际上著名的nist、testu01等测试。
[0044]
(4)使用本发明产生的伪随机数仅仅依靠于fpga芯片,成本仅需要不到5000元左右,而且对于单个fpga芯片,可以多个通道进行伪随机数的输出,产生速度可以进一步提高。
附图说明
[0045]
图1是本发明实施例提供的基于fpga的高速伪随机数生成器的模型结构示意图。
[0046]
图2是本发明实施例提供的高速伪随机数生成方法的fpga内部实现电路结构图。
具体实施方式
[0047]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0048]
本发明提供的基于fpga的高速伪随机数生成方法如下:
[0049]
首先,提出一种全新的伪随机数产生算法,设计的混沌模型如下:
[0050][0051]
其中α,β,γ1,γ2均为二维逻辑斯蒂映射的参数,a为一维帐篷模型的控制参数。
[0052]
其次,在fpga中对该模型进行实现,选用fpga型号为xilinx kintex-7xc7k325tffg900-2,硬件电路的结构如图2所示。在混沌系统中,由于有限的运算精度会导致混沌退化,使运算结果与理论的预期结果有较大的偏差,最终降低整个系统的非线性动力学特性,从而进一步降低产生序列的复杂性,因此,本发明在fpga电路中的整体运算采用128bit定点数设计,不仅可以达到足够的计算精度,有效抑制了混沌退化,还可以提高输出带宽,增强了吞吐量,提升了密匙空间,为进一步所进行的应用(如加密等)提供了保障;此外,128bit位宽平衡了资源、能耗、以及速率三者的关系,使伪随机数产生的速率达到10gbps同时,降低fpga中主要资源占用率,本发明fpga中主要资源占用率如表1所示:
[0053]
表1 fpga中主要资源占用率
[0054]
资源lutffdspslice使用量469422272241772占用率2%1%27%3.4%
[0055]
本发明的功耗为668mw,效率为61.964pj/b,相对于市面上已有的随机数产生器而言,能耗极低。
[0056]
基于fpga的高速伪随机数生成器的模型结构如图1所示,将一维帐篷混沌映射和二维逻辑斯蒂混沌映射进行组合,即将一维帐篷混沌映射嵌入到二维逻辑斯蒂混沌映射中,产生一种嵌入式交叉耦合拓扑结构,并将该结构应用于伪随机数生成器中。因此,伪随机数生成器主要包括:
[0057]
一维帐篷映射模块:用于对y进行映射,表示如下:
[0058][0059]
其中,k为迭代次数,α为控制参数,即嵌入式交叉耦合映射中的参数a。
[0060]
二维逻辑斯蒂映射模块:用于对x和y分别进行映射,表示如下:
[0061][0062]
其中,λ1、λ2均为控制参数;
[0063]
输入耦合模块:用于将两个维度的输出进行耦合后,分别送入两个输入通道;
[0064]
输出耦合模块:用于生成伪随机数并输出。
[0065]
在fpga实现中,虽然上述模型具有显著的优势,但由于其运算较为复杂,并且128bit的定点数设计使得系统的运行频率大幅度降低,因此,在运算过程中,对上述混沌模型进行分块处理,将模型中占用大量时间的运算分成小部分进行并行完成。具体的分块处理方式如下,其中省略了mod运算:
[0066][0067]
其中,上标1、2、3、4分别代表p1、p2、p3、p4,与图2中的p1、p2、p3、p4四部分运算相互对应,整个系统采用状态机来进行设计,其中x通道、y通道的迭代数值128bit全部为小数位,但运算仍会出现整数位,因此,参数选择为(α,β,γ1,γ2,a)=(4,4,2,2,0.5),通过以上的参数选择,使得整个系统的运算结果mod中不可能产生负数结果,进而mod函数的运算就可以表示为截取掉运算过程中的整数位,保留小数位。
[0068]
对于p2和p4两部分,由于包含xn,yn的平方操作,这两个128bit的乘法需要大量的时间和硬件资源,会造成很高的频率损失,因此,采用如下公式将128bit的乘法拆分为三个64bit进行运算,从而大幅度提升运行频率。
[0069]
x2={a,b}
×
{a,b}={(a2),(2ab),(b2)}
[0070]
分块处理方式下,运算过程即状态机的描述如下:
[0071]
s0:输入128bit的xn,yn初始值;
[0072]
s1:对于p1:进行1-xn的操作;
[0073]
对于p2,p4:进行a2,b2,2ab的计算操作;
[0074]
对于p3,首先利用yn的msb来判断yn是否大于0.5,即a的值,从而决定是采用yn(当0≤yn<0.5时)还是(1-yn)(当0.5≤yn<1时),同时由于1-a以及a都等于0.5,除以1-a或者a等于乘2,即左移一位的操作,因此,将以上判断后的结果再进行f操作则形成模型算法中虚线右侧的计算结果,不进行f操作则形成模型算法中虚线左侧的结果;
[0075]
s2:对于p1:进行1-xn与xn相乘的操作;
[0076]
对于p2,p4:进行相加的操作,算出x
n2
,y
n2
;
[0077]
对于p3:进行虚线左右两部分相乘的操作;
[0078]
s3:将输出的256bit结果进行截取128msb的操作,对截取的位置根据所乘响应的参数进行相应的改变,如p1少乘16=24,应向后4位后再截取;然后对p1,p2的剩余部分进行相加,对p3,p4的剩余部分进行相加,结果即为x
n+1
,y
n+1
,同时将两个通道的x
n+1
,y
n+1
进行输
出,形成单次256bit位宽的输出。
[0079]
最后进行时序分析,电路最高运行频率为120.51mhz,速率约为10.04gbps,能够满足大部分日常的需求,如图片,视频加密等,以高带宽需求的视频为例(h.264编码后):视频(fhd)6mbps,视频(uhd)32mbps,也能满足针对企业或者更高的军事用途需要达到gbps速率的要求,远远超过了现有伪随机数算法实现所能达到的速率。采用本发明产生的伪随机数序列,复杂度高,能够通过国际上著名的nist、testu01等随机性标准测试。
[0080]
除了性能上有优势以外,本发明还具有显著的经济效益,市场竞争力亦相当可观。当前市场上同性能的伪随机码发生器产品售价通常在几十万人民币,比如,美国安捷伦公司的3.35gb/s伪随机码型发生器(81134a)约50万元/台,太原理工大学研制的真随机密码模块和真随机密码发生器的成本则分别只有约5万/台。而本发明产生的伪随机数仅仅依靠于fpga芯片,成本仅需要不到5000元左右,而且对于单个fpga芯片,可以多个通道进行伪随机数的输出,这样速度可以进一步提高。
[0081]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。