CN103049242B - 数字式真随机数发生器电路 - Google Patents
数字式真随机数发生器电路 Download PDFInfo
- Publication number
- CN103049242B CN103049242B CN201210512891.XA CN201210512891A CN103049242B CN 103049242 B CN103049242 B CN 103049242B CN 201210512891 A CN201210512891 A CN 201210512891A CN 103049242 B CN103049242 B CN 103049242B
- Authority
- CN
- China
- Prior art keywords
- trigger
- input
- phase inverter
- random number
- signal
- 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.)
- Expired - Fee Related
Links
Landscapes
- Tests Of Electronic Circuits (AREA)
- Manipulation Of Pulses (AREA)
Abstract
数字式真随机数发生器,涉及数字签名和认证技术领域,其特征在于:S1:利用全数字电路产生随机数;S2:对随机数进行偏置矫正产生符合国际标准的真随机数。本发明利用全数字电路生成真随机数,可以在不同集成电路工艺下方便地移植,而且可以在FPGA平台上运行,可以用来替代传统的模拟电路生成随机数的方法,减少了设计成本和研发周期。
Description
技术领域
本发明涉及信息安全领域中的真随机数生成。
背景技术
真随机数在非对称加密算法RSA和ECC(椭圆曲线加密)中有非常广泛的应用,比如RSA的密钥生成需要随机数作为种子,通过对其进行Miller-Rabin素数测试和一系列防攻击性检测筛选出可用的p,q,而素数测试本身也需要随机数作为测试向量。ECC椭圆曲线签名算法中,需要随机数k作为签名的种子,并且k的安全性与密钥等价,所以对其随机性有非常高的要求。另外,RSA,ECC等非对称算法,以及AES,SMS4等对称算法,都需要高安全性的密钥,而真随机数发生器的不可预测性保证可以生成符合要求的密钥。
随机数的生成分为真随机数和伪随机数生成两种方式。伪随机数生成一般采用数学算法实现。伪随机数发生器的缺点是,连续的两个随机数输出符合n位多项式,考虑到不可约多项式的数量,假如采用长度较小的多项式,很容易通过遍历法寻找其生成多项式;另外,作为种子的n-bit随机数必须采用手动输入或者真随机数生成,否则每次上电后伪随机数将会生成同样的随机数序列,输出结果就违背了不可重复性,比如RSA的密钥生成,利用这样的序列,每次将生成完全相同的素数,不具有利用价值。伪随机数的好处是可以采用全数字电路实现,而且容易获取高的输出速率,但依然无法替代真随机数发生器。
真随机数发生器分为模拟和数字两种实现方法。模拟方法可以采用混沌效应等电路中不可预测的物理现象提取随机数,但是需要针对工艺定制的电路,不具备迁移性。数字式真随机数发生器则是利用电路中的亚稳态或时钟抖动等随机性作为熵源,因为采用全数字实现,所以具有很好的移植性,可以采用FPGA或者不同工艺的ASIC实现。
发明内容
本发明要解决的技术问题是:如何利用数字电路中的随机源产生随机数。
本发明的特征在于,含有真随机数发生器电路S1和偏置矫正电路S2,其中:
真随机数发生电路S1,含有:六个反相器INV1~INV6、两个选择信号电路M1~M2、两个触发电路D1~D2和一个与门AND1,其中:
与门AND1,输入为时钟信号clock和选择信号select,输出同时送往两个所述选择信号电路,
在六个反相器INV1~INV6中:
反相器INV1、反相器INV2和反相器INV3依次串接,所述反相器INV1的输入端与选择信号电路M1的输出端相连,所述反相器INV3的输出端和所述选择信号电路M1的“1”的输入端相连,
反相器INV4、反相器INV5和反相器INV6依次串接,所述反相器INV4的输入端与选择信号电路M2的输出端相连,所述反相器INV6的输出端和所述反相器电路M2的“1”输入端相连,
所述反相器INV1的输出信号输入到所述选择信号电路M2的“0”输入端,
所述反相器INV4的输出信号输入到所述选择信号电路M1的“0”输入端,
在两个触发器D1~D2中,触发器D1和触发器D2依次串接,其中:
触发器D1,时钟信号输入端输入所述时钟信号clock,输入端D和所述反相器INV1的输出端相连,
触发器D2,时钟信号输入端输入所述时钟信号clock,输入端D和所述触发器D1的Q输出端相连,
偏置矫正电路S2,含有:两个选择开关SW1~SW2,六个触发器D3~D8,以及四个异或门XOR1~XOR4,其中:
选择开关SW1,输入端与所述触发器D2的输出端Q相连,
在四个触发器D3~D6中:
触发器D3~触发器D6共四个触发器,四个时钟信号输入端都输入所述时钟信号clock,四个D输入端分别连接到所述选择信号开关SW1的四个选择输出端,
在四个异或门XOR1~XOR4中:
异或门XOR1的两个输入端分别与所述触发器D3、触发器D4的输出端Q相连,
异或门XOR2的两个输入端分别与所述触发器D5、触发器D6的输出端Q相连,
异或门XOR3的两个输入端分别与所述异或门XOR1、异或门XOR2的输出端相连,
异或门XOR4,输出使能信号enable,
选择开关SW2,输入端与所述异或门XOR3的输出端相连,
在两个触发器D7~D8中:时钟信号输入端都输入所述时钟信号clock,各自的输入端Q分别与所述选择开关SW2的两个选择输出端相连,
触发器D7的输出端Q与所述异或门XOR4的第一个输入端相连,
触发器D8的输出端Q与所述异或门XOR4的第二个输入端相连,同时输出数据输出信号dataout,
所述真随机数发生器按以下步骤产生真随机数:
第1步:当select信号和clock信号皆为“1”时,三个所述反相器INV1、INV2、INV3形成奇数级反相器环路Loop1,三个反相器INV4、INV5、INV6也形成奇数级反相器环路Loop2,而当select信号为“1”而clock信号为“0”时,两个所述反相器INV1、INV4形成环路Loop3,由反相器INV1输出数据,select信号为0而clock为任意值时电路不工作;
第2步:在第1步中的输出的数据输入到触发器D1的输入端D,经触发器D1、触发器D2后消除亚稳态;
第3步:所述触发器D2输出的数据在时刻1、时刻2、时刻3、时刻4分别输入到四个所述触发器D3、D4、D5和D6,输出经存储后异或输出;
第4步:第3步输出的数据在时刻5输入到触发器D8中,经存储后得到数据输出信号dataout,并与前一工作周期时刻0存储在触发器D7中的数据异或得到有效信号enable,在连续向所述触发器D7和触发器D8输入“00”或者“11”时enable为“0”,输入“10”时enable为“1”,输出为“0”,输入“01”时,enable为“1”,输出为“1”。
本发明利用全数字电路生成真随机数,可以在不同集成电路工艺下方便地移植,而且可以在FPGA平台上运行,可以用来替代传统的模拟电路生成随机数的方法,减少了设计成本和研发周期。
附图说明
图1是按照本发明一种实施方式的真随机数生成器电路图。
具体实施方式
本发明利用两个奇数级反向器环构成的回路,两个触发器生成随机数,并由偏置电路矫正输出。
具体包括如下步骤:
S11:select信号为“1”时,当clock为“1”,S1形成奇数级反向器环路Loop1(反相器INV1,INV2,INV3构成),Loop2(反相器INV4,INV5,INV6构成);当clock为“0”,S1形成回路Loop3(反相器INV1,INV4构成),由INV1输出数据。select信号为“0”时,电路不工作。
S12:将S11输出数据连接到触发器D1的输入端,经过触发器D1,D2消除亚稳态。
S13:在时刻1、2、3、4分别寄存S12输出数据到4个触发器D3、D4、D5、D6中。对触发器D3~D6的存储结果异或输出。
S14:将S13的输出数据在时刻0、时刻5寄存到触发器D7和触发器D8上。利用触发器D7~D8存储结果输出有效信号enable和数据输出dataout。在连续向D7、D8输入“00”或者“11”的时候,enable为“0”;输入“10”时,enable为“1”,输出“0”;输入“01”时,enable为“1”,输出“1”。
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明的显著特点在于利用全数字的方法设计了真随机数发生器,方便了在不同工艺下的随机数单元集成,并且可以在FPGA上实现,为ECC和RSA等公钥加密算法提供了必要的随机数发生源,减少了片外添加芯片的开销,同时生成随机数的速度足以保证系统的性能。
下面介绍根据图1所示的随机数发生器示例介绍其详细过程:
图1中的电路分为两块,分别用两个框图表示,代表真随机数发生器S1和偏置矫正电路S2。
S1:
当select信号置于“1”时,真随机数发生器工作。clock信号为“1”时,INV1~INV3构成奇数级反向器环,形成环形振荡器,同理INV4~INV6独立形成另一振荡器。由于电路噪声和器件的差别,两个振荡器在时钟频率和相位同步上会有差别。当clock信号置为逻辑0时,反相器INV1和INV4构成偶数级反向器环,两个振荡器的信号叠加,经过负反馈环路,最终确定在逻辑“0”或者“1”上,经过D触发器在clock信号上升沿采样输出。
当随机数电路不需要工作的时候,可以将select信号置为“0”,这样整个电路处于确定态,不再产生振荡,从而减少了不必要的动态功耗。随机数发生器的最高频率取决于信号稳定的时间,即clock信号低电平时间,而且偶数级反向器和D触发器环有利于数据从亚稳态到逻辑“0”或者“1”的恢复。
S2:
对S1的随机数输出进行偏置矫正。随机数电路中生成的电路可能会存在“0”,“1”偏置的情况,即“1”的生成概率p≥50%,反之亦然。但是完善的真随机数发生源不容许这种偏置的存在,为了消除这种偏置,获取有高随机性的熵源,可以采用以下两种后处理电路。
XOR电路是对四个连续随机数输出进行异或,最终获得一个输出。通过条件概率的分析,假如输入随机数偏置“0”、“1”偏差不多的情况下,通过选择合理的XOR电路可以有效提升0、1分布的均衡性。
XOR电路的输出会经过消除连续“1”或者“0”电路,效果是均衡“0”、“1”分布,同时减少连续“1”或者“0”的个数。该滤波电路有输出有效信号enable和数据输出dataout。在连续向该单元输入连续“1”或者“0”的时候,enable为0;输入“10”时,enable为“1”,输出“0”;输入“01”时,enable为“1”,输出“1”。
真随机数在enable为“1”,时刻0时输出有效随机数数据。
本设计用Verilog进行FPGA仿真验证,验证随机数发生器的可靠性和可行性。基于Altera FPGA Cyclone II系列FPGA进行综合并下载到FPGA芯片中验证,利用Signaltap采样数据输出,获得2100万比特的数据输出。利用NIST SP800-22标准提供的测试软件进行随机性测试,测试数据均满足测试标准要求,因而证明输出数据是真随机数,本设计是可行的。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (1)
1.数字式真随机数发生器,其特征在于,含有真随机数发生器电路S1和偏置矫正电路S2,其中:
真随机数发生电路S1,含有:六个反相器INV1~INV6、两个选择信号电路M1~M2、两个触发电路D1~D2和一个与门AND1,其中:
与门AND1,输入为时钟信号clock和选择信号select,输出同时送往两个所述选择信号电路,
在六个反相器INV1~INV6中:
反相器INV1、反相器INV2和反相器INV3依次串接,所述反相器INV1的输入端与选择信号电路M1的输出端相连,所述反相器INV3的输出端和所述选择信号电路M1的“1”的输入端相连,
反相器INV4、反相器INV5和反相器INV6依次串接,所述反相器INV4的输入端与选择信号电路M2的输出端相连,所述反相器INV6的输出端和所述反相器电路M2的“1”输入端相连,
所述反相器INV1的输出信号输入到所述选择信号电路M2的“0”输入端,
所述反相器INV4的输出信号输入到所述选择信号电路M1的“0”输入端,
在两个触发器D1~D2中,触发器D1和触发器D2依次串接,其中:
触发器D1,时钟信号输入端输入所述时钟信号clock,输入端D和所述反相器INV1的输出端相连,
触发器D2,时钟信号输入端输入所述时钟信号clock,输入端D和所述触发器D1的Q输出端相连,
偏置矫正电路S2,含有:两个选择开关SW1~SW2,六个触发器D3~D8,以及四个异或门XOR1~XOR4,其中:
选择开关SW1,输入端与所述触发器D2的输出端Q相连,
在四个触发器D3~D6中:
触发器D3~触发器D6共四个触发器,四个时钟信号输入端都输入所述时钟信号clock,四个D输入端分别连接到所述选择信号开关SW1的四个选择输出端,
在四个异或门XOR1~XOR4中:
异或门XOR1的两个输入端分别与所述触发器D3、触发器D4的输出端Q相连,
异或门XOR2的两个输入端分别与所述触发器D5、触发器D6的输出端Q相连,
异或门XOR3的两个输入端分别与所述异或门XOR1、异或门XOR2的输出端相连,
异或门XOR4,输出使能信号enable,
选择开关SW2,输入端与所述异或门XOR3的输出端相连,
在两个触发器D7~D8中:时钟信号输入端都输入所述时钟信号clock,各自的输入端Q分别与所述选择开关SW2的两个选择输出端相连,
触发器D7的输出端Q与所述异或门XOR4的第一个输入端相连,
触发器D8的输出端Q与所述异或门XOR4的第二个输入端相连,同时输出数据输出信号dataout,
所述真随机数发生器按以下步骤产生真随机数:
第1步:当select信号和clock信号皆为“1”时,三个所述反相器INV1、INV2、INV3形成奇数级反相器环路Loop1,三个反相器INV4、INV5、INV6也形成奇数级反相器环路Loop2,而当select信号为“1”而clock信号为“0”时,两个所述反相器INV1、INV4形成环路Loop3,由反相器INV1输出数据,select信号为0而clock为任意值时电路不工作;
第2步:在第1步中的输出的数据输入到触发器D1的输入端D,经触发器D1、触发器D2后消除亚稳态;
第3步:所述触发器D2输出的数据在时刻1、时刻2、时刻3、时刻4分别输入到四个所述触发器D3、D4、D5和D6,输出经存储后异或输出;
第4步:第3步输出的数据在时刻5输入到触发器D8中,经存储后得到数据输出信号dataout,并与前一工作周期时刻0存储在触发器D7中的数据异或得到有效信号enable,在连续向所述触发器D7和触发器D8输入“00”或者“11”时enable为“0”,输入“10”时enable为“1”,输出为“0”,输入“01”时,enable为“1”,输出为“1”。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210512891.XA CN103049242B (zh) | 2012-12-04 | 2012-12-04 | 数字式真随机数发生器电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210512891.XA CN103049242B (zh) | 2012-12-04 | 2012-12-04 | 数字式真随机数发生器电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103049242A CN103049242A (zh) | 2013-04-17 |
CN103049242B true CN103049242B (zh) | 2015-09-30 |
Family
ID=48061895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210512891.XA Expired - Fee Related CN103049242B (zh) | 2012-12-04 | 2012-12-04 | 数字式真随机数发生器电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103049242B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598198B (zh) * | 2013-10-30 | 2018-04-27 | 国民技术股份有限公司 | 一种真随机数发生器 |
US9891888B2 (en) | 2015-06-17 | 2018-02-13 | Nxp B.V. | Digital true random number generator based on S-boxes |
CN106201436B (zh) * | 2016-08-12 | 2018-08-31 | 西安电子科技大学 | 基于双耦合斐波那契振荡环的真随机数生成器 |
CN106293616B (zh) * | 2016-08-12 | 2018-11-20 | 西安电子科技大学 | 基于时延反馈振荡器的真随机数生成器 |
CN106293615B (zh) * | 2016-08-12 | 2018-11-20 | 西安电子科技大学 | 基于全连网络的真随机数生成器 |
CN108449183A (zh) * | 2018-05-04 | 2018-08-24 | 北京邮电大学 | 一种使用量子随机数的非对称加密方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102130667A (zh) * | 2011-01-18 | 2011-07-20 | 浙江大学 | 一种数字真随机振荡信号发生器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4248950B2 (ja) * | 2003-06-24 | 2009-04-02 | 株式会社ルネサステクノロジ | 乱数発生装置 |
-
2012
- 2012-12-04 CN CN201210512891.XA patent/CN103049242B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102130667A (zh) * | 2011-01-18 | 2011-07-20 | 浙江大学 | 一种数字真随机振荡信号发生器 |
Non-Patent Citations (2)
Title |
---|
New Methods for Digital Generation and Postprocessing of Random Data;Jovan Dj. Golic;《IEEE TRANSACTIONS ON COMPUTERS》;20061031;第55卷(第10期);第135-139页 * |
一种基于混沌原理的真随机数发生器;王欣等;《微电子学与计算机》;20090228;第26卷(第2期);第1217-1229页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103049242A (zh) | 2013-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103049242B (zh) | 数字式真随机数发生器电路 | |
CN105426159A (zh) | 一种基于数字电路的真随机数发生器 | |
CN106293616B (zh) | 基于时延反馈振荡器的真随机数生成器 | |
CN109274484B (zh) | 一种对数据进行保密增强的方法及量子密钥分发终端 | |
Sunar | True random number generators for cryptography | |
CN105005462A (zh) | 一种混合式随机数发生器及其产生随机数的方法 | |
CN103399726A (zh) | 一种流水线化的组合式伪随机数发生器 | |
CN112019347B (zh) | 一种基于xor-apuf的轻量级安全认证方法 | |
AVAROĞLU et al. | A novel S-box-based postprocessing method for true random number generation | |
Yakut et al. | Secure and efficient hybrid random number generator based on sponge constructions for cryptographic applications | |
Rahimov et al. | Improving middle square method RNG using chaotic map | |
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 | |
Acar et al. | Correlation-based cryptanalysis of a ring oscillator based random number generator | |
CN107479857A (zh) | 随机数产生及后处理电路 | |
Tsoi et al. | High performance physical random number generator | |
Simka et al. | Model of a true random number generator aimed at cryptographic applications | |
CN111078191A (zh) | 一种基于fpga硬件实现的伪随机数的生成方法 | |
KR102197744B1 (ko) | 무작위 천이 규칙을 적용한 셀룰러 오토마타 기반 참 난수 생성 장치 | |
CN104461452A (zh) | 片上系统中生成真随机数的方法及装置 | |
Li et al. | An algorithm for constructing a minimal register with non-linear update generating a given sequence | |
US20150019605A1 (en) | Method for assessing an output of a random number generator | |
Yu et al. | On designing PUF-based TRNGs with known answer tests | |
Singh et al. | FPGA Implementation of Chaos based Pseudo Random Number Generator | |
Azhaganantham et al. | FPGA Implementation of RO-PUF using Chaotic Maps |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150930 Termination date: 20161204 |