CN111352608B - 一种低开销型fpga基真随机数产生系统 - Google Patents
一种低开销型fpga基真随机数产生系统 Download PDFInfo
- Publication number
- CN111352608B CN111352608B CN202010127794.3A CN202010127794A CN111352608B CN 111352608 B CN111352608 B CN 111352608B CN 202010127794 A CN202010127794 A CN 202010127794A CN 111352608 B CN111352608 B CN 111352608B
- Authority
- CN
- China
- Prior art keywords
- random number
- fpga
- ring oscillator
- entropy source
- true random
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Semiconductor Integrated Circuits (AREA)
- Logic Circuits (AREA)
Abstract
本发明公开了一种低开销型FPGA基真随机数产生系统,具体包括,FPGA逻辑资源和外部电路,所述FPGA逻辑资源包括环形振荡器,所述外部电路为FPGA芯片内的环形振荡器提供高熵源。本发明的真随机数产生系统使用FPGA内部逻辑资源产生环形振荡器,通过外加电路为环形振荡器提供高的熵源信息以产生真随机数,该方案可节约FPGA内部逻辑资源,减少FPGA的资源占用,同时提高真随机数产生器的速率,并且减小FPGA设计的复杂度,提高FPGA系统的整体性能,具有广泛的适用性。
Description
技术领域
本发明属于无线通信领域,具体涉及一种真随机数产生系统。
背景技术
在无线传感网络中,最常见的是检测环境的温度、湿度等信息,特别是在一些特殊应用环境中,无线传感网络起着非常重要的作用,如检测交通信息、一氧化碳浓度、易爆气体浓度、水污染等,由于其涉及领域宽泛,无线传感网络中通信的安全问题也受到越来越多的关注。
在无线通信领域,为了数据传输安全,一般都会采用一些安全措施来降低数据被截获的风险,其中,使用加密原始数据来提高通信系统的安全性是传统的保密手段。加密算法根据加密和解密密钥是否相同可以分为对称加密算法和非对称加密算法,在对称加密算法系统中,加密密钥和解密密钥相同,而非对称加密算法系统中的加密密钥和解密密钥不同。客观来讲,加、解密采用不同的密钥能够提高加密系统的安全性。在加密算法中,特别是在对称加密算法中,对两个一样的数据进行加密得到的加密数据是相同的,这种数据被非法用户多次截获后,很容易被破解,即使在加密密钥长度比较长的情况下,也能够通过大量的样本而破解。如果在加密算法中导入随机数,由于随机数的不同,即使加密数据和密钥都是一样的,加密后的数据也会完全不一样,这样能够降低通信系统被截获的风险,提高通信的安全性。在常见通信系统的数字模块中,使用算法能够很容易得到伪随机数,然而伪随机数同样能够通过大量样本被破解,因此目前很多通信系统的设计者都考虑采用真随机数来对原始数据进行加密,以尽可能保障加密数据的安全性。
现有的真随机数产生方法大部分基于FPGA实现,有人提出采用FPGA中的PLL产生时钟的抖动作为信息熵的核心部分,再利用两个时钟,低频时钟采样高频时钟,得到无序的“01”序列,即可作为真随机数;也有人提出采用FPGA触发器的亚稳态特性来产生真随机数,可以获得不受控制的真随机数序列;占比最多的观点是采用FPGA中的逻辑单元,产生环形振荡器(Ring Oscillator,RO),采用奇数个反相器来产生输出时钟,其中反相器越多,产生的时钟带有越多的噪声,因此能够得到越不稳定的时钟,再使用低频时钟来采样这些不稳定时钟可以得到“01”序列,从而生成真随机数。
但上述方案存在的问题是:使用FPGA的PLL产生时钟的信息熵较小,因为都是采用同一个输入时钟信号,其抖动和相位噪声都比较固定,很难得到真正随机的信息;采用FPGA触发器的亚稳态特性来产生真随机数可能会导致FPGA其他模块也工作在不稳定的状态,影响FPGA整体性能,并且也提高了设计的复杂度;单纯使用FPGA的逻辑资源产生时钟,需要很多的反相器才能提高信息熵,这会消耗很多FPGA逻辑资源,同时也带来较大的功耗,且会降低真随机数发生器的产生速率。
发明内容
针对现有技术存在的上述问题,本发明提出了一种低开销型FPGA基真随机数产生系统。
本发明的技术方案为:一种低开销型FPGA基真随机数产生系统,具体包括,FPGA逻辑资源和外部电路,所述FPGA逻辑资源包括环形振荡器,所述外部电路为FPGA芯片内的环形振荡器提供高熵源。
进一步的,所述环形振荡器包括依次连接的一个与非门和两个反相器。
进一步的,所述FPGA逻辑资源还包括:应用程序模块、采样模块及后处理模块,其中,所述应用程序模块用来控制真随机数发生器的工作状态;所述采样模块用来生成随机数位流序列;所述后处理模块根据实际产生的随机数位流序列生成满足NIST(NationalInstitute of Standards and Technology)要求的真随机数。
进一步的,所述外部电路具体为熵源电路,所述熵源电路为所述环形振荡器提供熵源,使得环形振荡器产生不可预测的时钟信号。
本发明的有益效果:本发明的真随机数产生系统使用FPGA内部逻辑资源产生环形振荡器,通过外加电路为环形振荡器提供高的熵源信息以产生真随机数,该方案可节约FPGA内部逻辑资源,减少FPGA的资源占用,同时提高真随机数发生器的速率,并且减小FPGA设计的复杂度,提高FPGA系统的整体性能,具有广泛的适用性。
附图说明
图1为本发明实施例的低开销型FPGA基真随机数产生系统结构示意图。
图2为本发明实施例的电阻作为熵源的结构示意图。
图3为本发明实施例的电容作为熵源的结构示意图。
图4为本发明实施例的电感作为熵源的结构示意图。
图5为本发明实施例的电桥和放大器作为熵源的结构示意图。
具体实施方式
下面结合附图对本发明的实施例做进一步的说明。
本发明提出使用FPGA芯片的内部逻辑资源和外部电路共同产生真随机数,FPGA逻辑资源构成环形振荡器和后处理模块,外部电路是为FPGA芯片内的环形振荡器提供高熵源。该方案实现的真随机数发生器和只使用FPGA内部逻辑实现的真随机数发生器相比,能够大大减少FPGA产生环形振荡器所消耗的逻辑资源,同时提高真随机数的产生速率,并且降低真随机数发生器的设计复杂度。
本发明实施例的低开销型FPGA基真随机数产生系统结构示意图如图1所示,具体包括,FPGA逻辑资源和外部电路,所述FPGA逻辑资源构成环形振荡器和后处理模块,所述外部电路为FPGA芯片内的环形振荡器提供高熵源。
在FPGA芯片内部,通过一个与非门和两个反相器构成环形振荡器(可以根据实际情况生成多个环形振荡器);外部电路(熵源)可以由电阻(可以产生随机热噪声)、电感或者电容(低Q值)、电桥电路(可以由四种不同的敏感元件构成)配合放大器(高放大倍数)等构成。FPGA还需要提供后处理模块来优化采样模块产生的随机数位流,从而得到满足NIST测试套件测试的真随机数。
图1中的应用程序模块用来控制真随机数发生器的工作状态;采样模块用来生成随机数位流序列;后处理模块根据实际产生的随机数位流序列生成满足NIST要求的真随机数;熵源电路为环形振荡器提供熵源,使得环形振荡器产生不可预测的时钟信号。
图1中,FPGA内部的应用程序模块根据具体的应用产生使能信号、真随机数位数、环形振荡器个数和采样时钟等信息;FPGA内部的与非门同时实现环形振荡器的使能和反相器的功能,能够控制环形振荡器的工作状态。
当应用程序设置使能信号为0时,图1中的真随机数发生器的两个振荡器产生的Clk1和Clk2都是1,环形振荡器不起振,同时也就使真随机数发生器处于不工作的状态,可以节约功耗。
当应用程序设置使能信号为1时,环形振荡器开始工作,并且真随机数发生器开始产生真随机数。在使能信号为1时,与非门相当于一个反相器,与后面的两个反相器构成一个最基本的环形振荡器(很多设计中使用的反相器远大于3个,反相器越多可以提供的信息熵越大,但是会降低环形振荡器的频率,并且增加功耗),本发明可以根据需求生成多个振荡器,本实施例以两个振荡器为例介绍。
Clk0是本地时钟信号,Clk1和Clk2是环形振荡器产生的时钟信号,应用程序可以使用本地振荡器Clk0(慢时钟)来采样Clk1或者Clk2的高低电平生成随机位流序列,或者同时采样Clk1和Clk2来生成随机位流序列。用Clk0采集多个环形振荡器的时钟信号能够更快的产生真随机数,相应的,Clk0的频率需要比Clk1和Clk2的频率低很多,才能保证Clk0每次采样的值都是不确定的,因此环形振荡器的频率决定了最终产生真随机数的速率。后处理模块根据具体的应用,选择环形振荡器的个数,比如要在Clk0的一个时钟之内产生多个随机数位,可以选择多个环形振荡器。图1所示的结构有两个环形振荡器(可根据具体应用生成多个环形振荡器),因此可以在一个采样时钟周期内产生两个随机数位,然后将真随机数发送给应用模块。PAD_in和PAD_out是FPGA的引脚接口,实现和熵源电路进行信息交互。
熵源电路旨在为真随机数发生器提供随机性变化的参数,可以使真随机数发生器占用很少的FPGA逻辑资源的同时,还能提高真随机数产生的速率,相当于用熵源电路置换FPGA中的大量逻辑资源。由于FPGA中的门电路都是较为规则的,因此,若要获得更高的熵源信息,需要更多的内部逻辑资源,同时会增加FPGA的系统功耗和降低真随机数的产生速率。因此,本发明提出采用FPGA内部逻辑资源产生环形振荡器和外部电路相结合的电路结构产生真随机数的方法,既节约资源,又可以提高真随机数的产生效率。这里的熵源可以有很多种实现方式,可以根据实际情况进行选择。
本发明实施例的电阻作为熵源的结构示意图如图2所示,在电路的运行过程中,电阻越大,则其产生的热噪声越大,因此通过大电阻产生的热电压可为环形振荡器提供更大的熵源,其中,电阻的热噪声计算公式如下:
V2=4 K T R (1)
式(1)中,V是噪声的热电压,K是玻尔兹曼常数,T是温度,R是电阻,从公式可以看出电阻越大,产生的热电压越大,同时由于器件运行过程中温度时刻都在变化,因此,由公式可以得到电阻越大,产生的热电压越大。使用电阻作为熵源的电路结构可以参考图2的电路连接方式,在设计PCB布局时,可将R1放置在靠近Clk1的输入引脚,将R2放置在靠近Clk2的输入引脚。
本发明实施例的电容作为熵源的电路结构示意图如图3所示,在电路中,电容常常起到滤波等作用,在时钟信号的变化过程中,电容也可以起到充放电的作用。在电容充、放电过程中,容易受到噪声的干扰而增加低频时钟采样输出不确定性。电容在环型振荡器的振荡过程中会影响时钟的上升沿和下降沿的转换时间,这里可以选择较小的电容,在电容充放电过程中,容易出现过冲和下冲,为震荡电路带来不确定性的变化,可以为振荡电路提供较大的熵源信息,使用电容作为熵源的电路结构可以参考图3的电路连接方式。
本发明实施例的电感作为熵源的电路结构示意图如图4所示,在电路中,电感通过串联的方式分别连接到环形振荡器Clk1和Clk2中,电感在环形振荡器工作过程中,在时钟信号的上升沿或者下降沿时,电感都将阻碍时钟信号的变化,选择不同的电感值,从而使得Clk1和Clk2随着各自电感而变化,电感工作方式与电容工作相似,使用电感作为熵源的电路结构可以参考图4的电路连接方式。
上述实施例单独使用电阻、电容或者电感来提高FPGA内部环形振荡器的熵源,这些无源器件单独使用的时候,对环形振荡器的影响较为单一。也可以采用这三种无源器件混合连接的方式来为环形振荡器提供熵源,这些无源器件具体的连接方式,可以根据实际的应用场合确定。
除了可以采用上述的无源元件构成真随机数的熵源电路外,也可以采用有源电路构成更高的熵源。这种熵源电路在基于电桥结构的传感电路中非常有用(在一般非电桥结构的传感电路中根据功耗需求可另行设计),因为在基于电桥结构的传感电路中,绝大多数已经具备电桥和放大器,通过适当的电路调整,可以让真随机数发生器直接使用这类传感电路的输出信号,从而在不添加任何器件的情况下,为环形振荡器提供熵源。
图5给出了电桥与放大器作为熵源的电路结构示意,其中,A1、A2是放大器,Rs1、Rs2、Rs3和Rs4可以是敏感元件(如对温度或者气体敏感的电阻),用来感知特定物理信息,由于噪声或者感知参量变化导致电桥的不平衡输出,通过放大器放大可以带来很高的变化量,从而为环形振荡器增加不确定性。其中,C1是把电桥的变化量耦合到振荡器中(只有相对高频的分量才能耦合过去),干扰振荡器的工作状态;R1是将放大器输出的直流信号接地,避免较大的直流分量导致振荡器不起振,C2、R2分别与C1、R1类似。
本发明提出的技术方案为采用FPGA内部的逻辑资源产生环形振荡器,通过外加电路为环形振荡器提供高的熵源信息以产生真随机数,该方案可大大节约FPGA内部逻辑资源,减小FPGA设计的复杂度,提高FPGA系统的整体性能,同时提高真随机数发生器的速率。
本发明提出使用无源器件和有源器件两种方式实现熵源电路,其中,无源器件可以使用最简单的电阻、电容、电感,或者他们的任意组合形式;有源器件可以使用电桥和放大器相结合的方案,该方案主要考虑在物联网技术快速发展与普及的今天,无线传感网络将受到越来越多的重视,无线传感网络节点普遍都需要具备感知环境中某些参数的能力,通常会用到电桥和放大器结构。因此在这类系统里,真随机数发生器可以直接采用无线传感网络节点自带的电桥和放大器来实现,既能提高无线传感网络的安全性,又不需要增加额外的元器件。
Claims (6)
1.一种低开销型FPGA 基真随机数产生系统,具体包括:本地时钟信号Clk0、FPGA逻辑资源和外部电路,所述FPGA 逻辑资源构成环形振荡器和后处理模块,所述外部电路为FPGA芯片内的环形振荡器提供高熵源;
所述环形振荡器包括依次连接的一个与非门和两个反相器;
所述FPGA 逻辑资源包括:应用程序模块、采样模块及后处理模块,其中,所述应用程序模块用来控制真随机数发生器的工作状态;所述采样模块用来生成随机数位流序列;所述后处理模块根据实际产生的随机数位流序列生成满足NIST 要求的真随机数;
当应用程序模块设置使能信号为0时,真随机数发生器的两个振荡器产生的时钟信号Clk1和Clk2都是1,环形振荡器不起振;当应用程序模块设置使能信号为1时,环形振荡器开始工作,并且真随机数发生器开始产生真随机数;
应用程序模块使用所述Clk0来采样Clk1或者Clk2的高低电平生成随机位流序列,或者同时采样Clk1和Clk2来生成随机位流序列。
2.根据权利要求1所述的低开销型FPGA基真随机数产生系统,其特征在于,外部电路具体为熵源电路,所述熵源电路为所述环形振荡器提供熵源,使得环形振荡器产生不可预测的时钟信号。
3. 根据权利要求2 所述的低开销型FPGA 基真随机数产生系统,其特征在于,所述熵源电路具体为电阻作为熵源的电路结构。
4. 根据权利要求2 所述的低开销型FPGA 基真随机数产生系统,其特征在于,所述熵源电路具体为电感作为熵源的电路结构。
5. 根据权利要求2 所述的低开销型FPGA 基真随机数产生系统,其特征在于,所述熵源电路具体为电容作为熵源的电路结构。
6. 根据权利要求2 所述的低开销型FPGA 基真随机数产生系统,其特征在于,所述熵源电路具体为电桥与放大器作为熵源的电路结构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010127794.3A CN111352608B (zh) | 2020-02-28 | 2020-02-28 | 一种低开销型fpga基真随机数产生系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010127794.3A CN111352608B (zh) | 2020-02-28 | 2020-02-28 | 一种低开销型fpga基真随机数产生系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111352608A CN111352608A (zh) | 2020-06-30 |
CN111352608B true CN111352608B (zh) | 2022-08-02 |
Family
ID=71195814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010127794.3A Active CN111352608B (zh) | 2020-02-28 | 2020-02-28 | 一种低开销型fpga基真随机数产生系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111352608B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010031630A1 (de) * | 2008-09-22 | 2010-03-25 | Siemens Aktiengesellschaft | Vorrichtung und verfahren zum erzeugen einer zufallsbitfolge |
CN104182202A (zh) * | 2013-05-22 | 2014-12-03 | 华中科技大学 | 一种振荡器及其构成的真随机数发生电路 |
CN106775583A (zh) * | 2016-11-18 | 2017-05-31 | 杭州电子科技大学 | 一种高速真随机数的产生方法 |
CN107038015A (zh) * | 2016-11-18 | 2017-08-11 | 杭州电子科技大学 | 一种高速真随机数发生器 |
CN109460212A (zh) * | 2018-11-05 | 2019-03-12 | 杭州电子科技大学 | 一种单级真随机数的产生方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102013213095A1 (de) * | 2013-07-04 | 2015-01-08 | Siemens Aktiengesellschaft | Erzeugen von einer Anzahl von Zufallsbits |
DE102014200163A1 (de) * | 2014-01-09 | 2015-07-09 | Robert Bosch Gmbh | Verfahren zum Erzeugen einer Ausgabe einer Zufallsquelle eines Zufallsgenerators |
CN106027238A (zh) * | 2016-06-30 | 2016-10-12 | 中国电子科技集团公司第五十四研究所 | 一种适用于无线通信系统的真随机数发生器 |
CN110286878B (zh) * | 2019-06-25 | 2021-06-01 | 电子科技大学 | Mcu随机间隔转换电桥电压的真随机数产生器及产生方法 |
-
2020
- 2020-02-28 CN CN202010127794.3A patent/CN111352608B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010031630A1 (de) * | 2008-09-22 | 2010-03-25 | Siemens Aktiengesellschaft | Vorrichtung und verfahren zum erzeugen einer zufallsbitfolge |
CN104182202A (zh) * | 2013-05-22 | 2014-12-03 | 华中科技大学 | 一种振荡器及其构成的真随机数发生电路 |
CN106775583A (zh) * | 2016-11-18 | 2017-05-31 | 杭州电子科技大学 | 一种高速真随机数的产生方法 |
CN107038015A (zh) * | 2016-11-18 | 2017-08-11 | 杭州电子科技大学 | 一种高速真随机数发生器 |
CN109460212A (zh) * | 2018-11-05 | 2019-03-12 | 杭州电子科技大学 | 一种单级真随机数的产生方法 |
Non-Patent Citations (2)
Title |
---|
Analysis and Enhancement of Random Number Generator in FPGA Based on Oscillator Rings;Knut Wold;《International Journal of Reconfigurable Computing》;20091231;I135-836 * |
基于FPGA的真随机数发生器设计与实现;马高亮;《中国优秀硕士学位论文全文数据库 信息科技辑》;20200115(第01期);I135-836 * |
Also Published As
Publication number | Publication date |
---|---|
CN111352608A (zh) | 2020-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yang et al. | An all-digital edge racing true random number generator robust against PVT variations | |
CN106775583B (zh) | 一种高速真随机数的产生方法 | |
Vasyltsov et al. | Fast digital TRNG based on metastable ring oscillator | |
US9846568B2 (en) | System and method for dynamic tuning feedback control for random number generator | |
US6240432B1 (en) | Enhanced random number generator | |
Epstein et al. | Design and implementation of a true random number generator based on digital circuit artifacts | |
CN107038015B (zh) | 一种高速真随机数发生器 | |
US8285767B2 (en) | Apparatus and method for generating a random number | |
US20230305811A1 (en) | Systolic random number generator | |
KR20100023000A (ko) | 다수의 클럭 네트워크를 갖는 디지털 장치들의 공진 클럭 및 상호접속 아키텍처 | |
Mureddu et al. | Experimental study of locking phenomena on oscillating rings implemented in logic devices | |
KR20140110142A (ko) | 난수 발생기 | |
US7602219B2 (en) | Inverting cell | |
TW557636B (en) | Random number generator | |
CN107025092A (zh) | 一种基于latch 结构真随机数发生器的随机数提取方法 | |
Addabbo et al. | Lightweight true random bit generators in PLDs: Figures of merit and performance comparison | |
Cao et al. | An energy-efficient true random number generator based on current starved ring oscillators | |
CN205015881U (zh) | 一种基于相位噪声的可集成真随机数产生装置 | |
CN111352608B (zh) | 一种低开销型fpga基真随机数产生系统 | |
Dejun et al. | Research of true random number generator based on PLL at FPGA | |
CN110945372B (zh) | 用于检测电信号中的至少一个毛刺的方法和用于实施该方法的装置 | |
KR101127961B1 (ko) | 오실레이터 샘플링 방법을 이용한 실난수 발생 장치 | |
CN112084539B (zh) | 一种基于混合布尔网络的多功能物理不可克隆函数装置 | |
Stefanou et al. | High speed array of oscillator-based truly binary random number generators | |
Walker et al. | Evaluating metastability in electronic circuits for random number generation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |