前言:
此刻看官们对“c语言生成一个1100随机数”大约比较重视,朋友们都想要学习一些“c语言生成一个1100随机数”的相关资讯。那么小编同时在网上汇集了一些有关“c语言生成一个1100随机数””的相关内容,希望咱们能喜欢,大家一起来了解一下吧!0 引言
随着电子技术和通信技术的发展,对信息安全性的要求越来越高,真随机数发生器(True Random Number Generator,TRNG)已成为安全系统中不可或缺的一部分[1]。相较伪随机数发生器(Random Number Generator,RNG),TRNG的输出序列具有不可预测性且满足严格的统计测试要求,所以通常选取热噪声、核衰变、宇宙辐射等物理现象作为熵源[2],其中应用最广泛的是热噪声。热噪声由导体中载流子的热振动引起,它会造成沟道电流微小波动从而在电阻两端产生电压[3]。基于热噪声的TRNG电路设计方法主要包括:热噪声直接放大、环振抖动采样和亚稳态三种方法。热噪声直接放大法通过高增益高带宽差分运算放大器将大电阻上的热噪声直接放大,再由比较器将放大信号进行数模转换后输出。但随着工艺的更新,放大器本身存在的输出失调、衬底噪声耦合、有限带宽等非理想因素都将明显影响系统输出的随机性[4];环振抖动采样是将热噪声转换为相位抖动,用低频信号采样获得随机输出[5]。但因为相位抖动幅度小,所以需要多个周期对相位幅度进行累加才能产生随机输出,导致电路吞吐率极低;亚稳态则是先让双稳态电路进入亚稳态区间,在释放瞬间由热噪声决定输出状态。其优点是可以采用全数字化设计[3,6],但由于亚稳态工作区间小,因此微小的器件和负载失配都会使电路偏离亚稳态工作区间。为了使电路工作在亚稳态,文献[6]引入了负反馈调节,但由于未考虑负载失配的情况,反馈调节难度大,且状态机在启动时完成反馈调节后即停止工作,无法根据环境变化进行二次调节,降低了其应用范围。鉴此,本文将结合热噪声放大和亚稳态设计方法的优点提出相应的设计方案,有效提高输出序列的随机性,并通过仿真验证。
影响TRNG输出序列随机性的关键是热噪声的有效放大,所以先分析热噪声模型和灵敏放大器工作机理。
热噪声由导体中载流子的热振动引起,它使沟道电流产生微小波动,从而在在电阻两端产生波动电压。在频域中,其频谱密度如式(1)所示[7]:
其中,η(t,Δt)是呈高斯概率分布的随机数,每隔Δt更新一次,σ是噪声信号的幅值。可知热噪声频谱为一恒定常数,在时域中幅值呈高斯分布,是理想的熵源。但因幅值较小(实际电路中约为1.5 mV[3]),微小的工艺偏差和环境影响都会掩盖噪声的作用,因此需要精度高、匹配性好的放大器将其快速放大到数字电路能识别的电平值。
1.2 灵敏放大器
灵敏放大器具有灵敏度高、运行速度快、结构简单等优点,是放大热燥声的理想器件。其基本电路结构如图1所示。
当时钟信号CLK=0时,电路进入预充电阶段,互补输出端Q和QN被预充电至高电平;当时钟信号CLK=1时,电路进入求值阶段,求值原理如式(3)所示:
若灵敏放大器工作电流完全平衡,互补输出Q和QN在求值阶段最终会稳定在中间电平。实际电路中,在热噪声的影响下,I1、I2大小会随机波动,从而在求值阶段产生随机输出。
2 自适应匹配
灵敏放大器工作电流平衡是获得理想随机序列的关键。但负载失配、工艺偏差等非理想因素都会影响电流大小,使输出序列产生明显的偏向性。因此,需要灵敏放大器在工作中能够自适应匹配。
2.1 可配置NMOS阵列
灵敏放大器中各MOS管宽长比的工艺偏差可等效为图1中晶体管N3和N4的偏差[4],造成工作电流失衡。为补偿工艺偏差,可将图1中的晶体管N3和N4替换为可配置NMOS阵列NF1和NF2,其内部结构如图2所示。
以ncf0为例,ncf0高电平时,晶体管开关N1导通,N2并联在N0两端,可配置NMOS阵列的等效宽长比升高,相应支路工作电流增大;反之电流减小,从而有效补偿工艺偏差提高序列随机性。
2.2 动态补偿算法
为使灵敏放大器可根据输出序列的偏向性调整可配置NMOS阵列来补偿偏差,提出动态补偿算法。算法采用单级等距调节,复杂性低易于实现。其状态转移图如图3所示。
有限状态机拥有动态配置和动态监控两种模式。TRNG在上电启动后经初始化进入动态配置模式。动态配置模式下每4个时钟周期,状态机对TRNG输出的4位数据进行一次读取检测。若4位数据中“1”的个数多于“0”,令flag=1。反之令flag=0。状态机根据flag的值令可配置NMOS阵列NF1、NF2自加或自减。当中“1”和“0”个数相等时,若输出为“1100”或“0011”,则令flag=2,配置状态维持不变。若输出为“1010”或“0101”,则判定TRNG在当前配置下,受热噪声影响可以等概率输出“1”或“0”,令flag=3,配置完成,状态机进入动态监控模式。动态监控模式下,若检测到输出序列连续出现12个“1”或“0”,判定输出序列失去随机性,令flag=4,状态机返回动态配置模式。否则,状态机维持在动态监控模式,可配置NMOS阵列配置不变。
2.3 TRNG电路整体结构
可自适应匹配的TRNG整体结构如图4所示。灵敏放大器在热噪声的影响下每个时钟周期随机输出低电平“0”或高电平“1”,输出数据存储在移位寄存器中。动态补偿模块根据移位寄存器中的数据偏向性调节可配置NMOS阵列,使电路工作在高熵值区域。负载匹配模块用以降低负载失配对输出序列随机性的影响。
3 实验结果和分析
整体电路采用Cadence的Verilog/Spectre混合仿真器对模拟电路和Verilog模块进行联合仿真。在1.2 V电源电压下,令时钟频率为1 GHz并手动引入10%的工艺偏差,输出序列如图5所示。可知当0 μs时,输出偏向1,经过约0.4 μs的动态配置,TRNG输出序列随机并进入动态监控模式。在1.5 μs时刻,再次引入工艺偏差,输出序列偏向1。TRNG重新进入动态配置模式,并在约1.92 μs完成动态配置进入动态监控模式。仿真结果表明电路实现自适应匹配功能,具有良好的抗工艺偏差特性。
将仿真获得的100 000位原始序列经过冯诺依曼后处理后得到约26 000位数据,分成10组,输入到NIST测试套件[8]中进行检测。测试结果如表1所示。从测试结果可以看出,各项P值都处在较高水平,随机性优异。
将所得序列输入到MATLAB测试自相关特性,结果如图6所示。由图可知,在95%的自信区间内2 000位连续数据间的自相关性近似为0。
为了验证电路的鲁棒性,TRNG在0.8 V~1.4 V电源电压,-40 ℃、40 ℃和120 ℃的环境下进行仿真,将输出序列送入NIST套件进行测试。测试结果如图7所示。P值大于0.1则通过随机测试。可知TRNG在各温度及电压下均有良好的随机性,且P值随着电源电压的升高呈上升趋势。
4 结论
本设计首先采用灵敏放大器代替高增益高带宽差分运算放大器,既避免运放设计的困难,同时又通过灵敏放大器中交叉耦合的正反馈结构提高TRNG吞吐率。其次,在输出端用D触发器进行负载隔离,降低灵敏放大器差分输出端负载失衡对输出序列随机性的影响,使得TRNG在工作阶段负载平衡。最后,提出具有动态配置和动态监控两种模式的补偿算法,使TRNG在工作环境剧烈变化时能自适应调节,增加输出序列的随机性和TRNG适用范围。所设计TRNG电路采用TSMC 65 nm CMOS 工艺实现,经NIST套件测试,具有较高的随机性,可广泛应用于密钥生成和信号加密等领域。
参考文献
[1] BHARGAVA M,SHEIKH K,MAI K.Robust true random number generator using hot-carrier injection balanced metastable sense amplifiers[C].IEEE International Symposium on Hardware Oriented Security and Trust.IEEE,2015:7-13.
[2] WIECZOREK P Z.Lightweight TRNG based on multiphase timing of bistables[J].IEEE Transactions on Circuits & Systems I Regular Papers,2016,63(7):1043-1054.
[3] SRINIVASAN S,MATHEW S,ERRAGUNTLA V,et al.A 4 Gb/s 0.57 pJ/bit process-voltage-temperature variation tolerant all-digital true random number generator in 45 nm CMOS[C].International Conference on Vlsi Design.IEEE Computer Society,2009:301-306.
[4] 金杰,罗敏,宫月红.一种基于热噪声的真随机数发生器的设计与实现[J].微电子学与计算机,2015(10):7-11.
[5] LIU Y,CHEUNG R C C,WONG H.A bias-bounded digital true random number generator architecture[J].IEEE Transactions on Circuits & Systems I Regular Papers,2017,64(1):133-144.
[6] MATHEW S K,SRINIVASAN S,ANDERS M A,et al.2.4 Gbps, 7 mW all-digital PVT-variation tolerant true random number generator for 45 nm CMOS high-performance microprocessors[J].IEEE Journal of Solid-State Circuits,2012,47(11):2807-2821.
[7] SUNG J J,KANG G S,KIM S.A transient noise model for frequency-dependent noise sources[J].IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,2003,22(8):1097-1104.
[8] RUKHIN A L,SOTO J,NECHVATAL J R,et al.SP 800-22 Rev.1a. A statistical test suite for random and pseudorandom number generators for cryptographic applications[R].Nist Special Publication,2010.
作者信息:
李 桢1,汪鹏君1,程 旭2,李 刚1
(1.宁波大学 电路与系统研究所,浙江 宁波315211;2.复旦大学 专用集成电路与系统国家重点实验室,上海201203)
标签: #c语言生成一个1100随机数