一种基于latch结构真随机数发生器的随机数提取方法与流程

文档序号:11589959阅读:273来源:国知局

本发明属于信息安全及集成电路技术领域,具体涉及一种基于latch结构真随机数发生器的随机数提取方法。



背景技术:

随着云计算、物联网和大数据的广泛应用,人与人、人与物之间通信规模急速增长,信息安全问题变得越来越重要。数据加密是保证信息安全的主要方法甚至是唯一方法,而随机数是数据加密的基础,随机数的应用包括在密码算法中生成安全密钥、安全因特网协议中产生会话id、生成移动互联网设备id和各种操作系统协议等。随机数发生器有真随机和伪随机之分,伪随机数发生器(prng)使用确定性算法将短随机串扩展成"随机查找"位流,并且具有周期性,所产生随机数无法满足随机性需求高的加密系统。而真随机数发生器(trng)是从物理噪声源收获熵,无周期、不可预测、具有实时的随机性,为高可靠性的加密系统提供了保障。

国内外关于trng的研究有很多种类,而主要的研究集中在三个方面:基于电阻热噪声的随机数发生器、基于振荡器的随机数发生器和基于亚稳态的随机数发生器。早期采用电阻热噪声直接放大提取随机数的方法,然而这类方法缺点表现在两个方面,一方面电源与衬底的耦合噪声难以消除,或其它非理想因素也在一定程度上影响产生的随机序列的随机性。另一方面这类方法多采用模拟器件,使得这类模拟设计难以应用在片上系统集成和技术移植方面。基于振荡器采样的方法是一种全数字的方法,与直接放大噪声的方法相比,全数字电路的方法对于工艺、电压和温度的变化具有高鲁棒性和易于集成等优点。其随机性的好坏主要依赖于低频振荡器相位抖动大小,以及低频振荡器相位抖动相对于高频振荡器周期的大小,因此需要多个振荡器以增加相位抖动,但也增加了硬件开销。基于亚稳态的方法也可以完全采用数字工艺实现,利用双稳态器件中的亚稳态现象来产生随机数。然而,传统亚稳态方法对环境变化比较敏感,由于工艺偏差的影响,通常需要大量的设计来校准以消除装置中系统和时序的不匹配。可见各类方法都存在着不足之处,还有很多待研究的地方。如吞吐率和功耗一直都是该方面研究的重点,为已有或即将出现的需求提供效率保障。



技术实现要素:

为了解决现有技术中存在的上述技术缺陷,本发明提供一种基于latch结构真随机数发生器的随机数提取方法,在保证高鲁棒性的基础上,对于随机数产生速度具有很大的提升,以提高真随机数在信息安全领域上的应用效率。

本发明是通过以下技术方案实现的:

一种基于latch结构真随机数发生器的随机数提取方法,其中,latch结构真随机数发生器包括依次连接的microblaze软核,真随机数发生模块,计数器,有限状态机;microblaze软核分别与计数器和有限状态机连接;真随机数发生模块为采用偶数个门的latch结构。随机数提取方法包括如下步骤:

初始化步骤:

在fpga上实现latch结构真随机数发生器;

振荡开始步骤:

利用亚稳态现象使得真随机数发生模块开始振荡,通过计数器记录真随机数发生模块的振荡周期,同时利用fpga的系统时钟记录振荡时间;

振荡调整步骤:

利用真随机数发生模块中的多路选择器配置真随机数发生模块不同的路径来调整振荡周期,使振荡周期大于70;

输出步骤:

提取计数器最低2位作为随机数输出,利用亚稳态现象使latch结构真随机数发生器产生满足数量需求的真随机数。

本发明相对于现有技术的有益效果在于:

1、本发明提出的随机数提取方法,是在latch结构振荡结束之前就提取随机数,与已有的方法相比,很大地提高了随机数产生的速度。

2、本发明提出的随机数提取方法,对于温度、电压和工艺的变化具有较高的鲁棒性,在不同条件下产生的数据均能通过nist随机性测试。

3、本发明提出的随机数提取方法,在fpga平台上实现,相对于fpga上广泛采用的真随机数发生器,本文方法具有较低的资源消耗,为fpga上相关研究提供了新的参考。

附图说明

图1为本发明随机数提取方法的总流程图。

图2为latch结构真随机数发生器的结构示意图。

图3为真随机数发生模块的结构示意图。

图4a为基本亚稳态结构。

图4b为亚稳态转移曲线。

图5为本发明随机数提取方法的信号时序图。

图6为本发明随机数提取方法的整体工作流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。

实施例1:

本实验在xc6vlx240t-1ffg1156fpga开发板上实现真随机数发生器,开发板系统工作频率50mhz,正常工作电压1.0v,正常工作温度25℃,microblaze工作频率100mhz。软件使用ise14.3版本,用于verilog代码的书写,综合,映射,布局布线,生成bit文件。如图1所示,本实施例提供一种基于latch结构真随机数发生器的随机数提取方法,其中:

latch结构真随机数发生器的具体结构如图2所示,包括依次连接的microblaze软核,真随机数发生模块,计数器,有限状态机;microblaze软核分别与计数器和有限状态机连接;真随机数发生模块为采用偶数个门的latch结构。在图2中,microblaze为fpga自带软核,利用串口和中断控制数据传输;latch为加入偶数个门结构的真随机数发生模块;counter为计数器;fms为有限状态机;enable信号用于使真随机数发生模块latch开始振荡,count为计数器值,clear信号用于清空计数器值,trn为有限状态机按照程序设定获取的计数器某时刻的值。microblaze软核通过usb端口实现latch结构真随机数发生器与外部计算机host(pc)的连接。

本实施例示出的真随机数发生模块的具体结构如图1所示,包括2条选择通道,其中:每条选择通道包括依次连接的1个或非门和2个非门选择单元;或非门的两个输入端分别作为选择通道的两个输入端,末端的非门选择单元的输出端作为选择通道的输出端。非门选择单元包括4个非门和1个多路选择器,每个非门的输出端对应连接多路选择器的一个输入端,4个非门的输入端共同作为非门选择单元的输入端,多路选择器的输出端作为非门选择单元的输出端。

一个选择通道的一个输入端与另一个选择通道的一个输入端共同作为真随机数发生模块的输入端,一个选择通道的另一个输入端与另一个选择通道的输出端连接,一个选择通道的输出端与另一个选择通道的另一个输入端连接,两个选择通道的输出端共同作为真随机数发生模块的输出端。

随机数提取方法包括如下步骤:

步骤s1,初始化步骤:

在fpga上实现latch结构真随机数发生器。具体包括:利用预设的约束文件定义latch结构真随机数发生器在fpga上的位置;再利用约束文件进行时序约束,防止时序违规。以实现如图3的为例,真随机数发生模块在fpga中占用6个slice,其中2个配置为或非门,各占用1个查找表的2个输入端。剩下每个配置为4个非门连接一个多路选择器的结构,各占用1个查找表6个输入端。

步骤s2,振荡开始步骤:

利用亚稳态现象使得真随机数发生模块开始振荡,通过计数器记录真随机数发生模块的振荡周期,同时利用fpga的系统时钟记录振荡时间。

首先简单的介绍亚稳态现象,如图4a所示,其中输入信号enable驱动a和b两个或非门。当enable=1时,y1y2=00。如图4b为y1y2转移曲线,从中可以看出y1y2=00是强制处于亚稳态状态。将enable从1跳变到0,则a、b两门都相当于反相器,因此y1和y2都具有转化为稳定状态的趋势,使得结构产生振荡的现象。由于latch中的门会受到噪声和工艺偏差的影响,会导致其中一边的电平信号传输快,整个latch结构最终达到稳定的状态,y1y2=01或y1y2=10,此过程是传统的亚稳态现象。

结合图2所示的latch结构真随机数发生器的结构进行说明,利用亚稳态现象使得真随机数发生模块latch结构开始振荡,其操作时序如图5所示,其中enable信号为振荡使能信号,enable下降沿到来时则latch结构开始振荡。clear信号清除计数器值,为1时始终保持计数器值清零。clk为系统时钟,用来记录振荡了多少周期,counter为计数器,记录振荡周期。

步骤s3,振荡调整步骤:

利用真随机数发生模块中的多路选择器配置真随机数发生模块不同的路径来调整振荡周期,使振荡周期大于等于70。

如果布局不对称,latch两边延时差较大,且系统偏差较大,崩溃周期只能达到十几次,产生随机数速率较慢。如果布局对称,latch两边延时差非常接近并且系统偏差较小的情况下,振荡周期可以达到几十万次,具有较高的速率。通过配置不同的路径,调整振荡周期到需要的范围,振荡周期大于70则计数器至少有2位可以作为随机位输出。

此处多路选择器的具体配置方法如下:非门选择单元既是4个非门连接一个多路选择器,该单元用一个6输入查找表实现,其中两个输入端作为多路选择器控制端口,剩下四个输入端为四个非门,调整振荡周期时,通过状态机改变多路选择器控制端口的值选通不同的非门,既选择不同的路径。

步骤s4,校准步骤:

振荡结束之前,利用有限状态机调整采样时间,选取振荡周期大于等于70的时刻进行采样。

由于受到工艺偏差的影响,相同的采样时间在不同芯片上可能会得到不同的结果,为确保采样时间满足要求,在不同的fpga芯片上实现该真随机数发生模块trng也需要通过有限状态机先进行校准。校准方式具体为:调整采样时间,收集5000组数据后,判断其均值是否大于或等于70,选取振荡周期大于等于70的时刻进行采样;若均值小于70,则将采样时间向后加1,继续收集数据进行判断,待到其均值大于或等于70则校准完毕,随后的随机数采集以此时刻为标准。

步骤s5,输出步骤:

提取计数器最低2位作为随机数输出,利用亚稳态现象使latch结构真随机数发生器产生满足数量需求的真随机数。

由于整个结构是亚稳态节结构,因此在规定时刻的计数分布服从逆高斯分布,因此可以采用计数器最低2位作为随机数输出,则这2位具有相同的0、1分布。在前面的步骤完成之后,后续就是根据需求产生随机数,整体操作流程图如图6所示,根据图5的时序不断产生随机数,待数据量满足需求则随机数输出完毕。

在本实施例中,为了对输出的随机数进行测试,保证数据的准确性,还可以进一步包括步骤s6,测试步骤:

利用nist随机性测试套件对latch结构真随机数发生器产生的随机数进行测试,测试结果输出一系列p值,在p值大于0.0001时则表示该数据随机性通过。

在具体应用中,可使用nistsp800-22标准随机性测试软件进行测试。表1示出的是在正常的温度和电压下实验测试计数器第二个最低位并收集1k数据,经过测试可知,输出的数据全部通过了15项nist随机性测试,并且具有较高的p值,以及较高的熵(proportion为测试300次通过的概率)。

表12lsbnist测试结果

本发明相对于现有技术的有益效果在于:

1、本发明提出的随机数提取方法,是在latch结构振荡结束之前就提取随机数,与已有的方法相比,很大地提高了随机数产生的速度。

2、本发明提出的随机数提取方法,对于温度、电压和工艺的变化具有较高的鲁棒性,在不同条件下产生的数据均能通过nist随机性测试。

3、本发明提出的随机数提取方法,在fpga平台上实现,相对于fpga上广泛采用的真随机数发生器,本文方法具有较低的资源消耗,为fpga上相关研究提供了新的参考。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1