真随机数与伪随机数

一、前言

前面我们学习了LFSR,这个玩意落地到具体的应用是什么呢?没错是寄存器,这里在网络找到了几个回答,这里做个记录,下面一起来学习一下吧。

二、真随机数与伪随机数

CPU里通常会有真随机数生成器(True Random Number Generator,简称TRNG)和伪随机数生成器(Pseudo Random Number Generator,PRNG)。真随机数生成器通常是通过放大电路的热噪声来产生随机数,而伪随机数生成器则是使用线性反馈移位寄存器(Linear feedback shift register,LFSR)生成。

我们知道温度高于绝对零度的原子都存在热运动,在集成电路里这些原子的热运动会在电路里产生噪声,噪声会使得电路中的电压存在微小的起伏,TRNG就是通过放大这些微小的起伏来产生随机数。

不过TRNG也有不少缺点。首先就是产生随机数的速度很低,因为噪声放大电路有低通特性,使得高频的噪声被滤除了,而放大低频噪声就需要较长的时间,使得TRNG的工作频率受限。其次是电路系统里有很多不同的噪声,但并不是所有噪声都是随机的,比如电源噪声中很大一部分就是和系统时钟强相关的。而TRNG是一个放大极小信号的电路,它对外界干扰是极其敏感的,为了避免外界非随机信号的干扰TRNG必须要耗费不少功率和面积在屏蔽上。

由于面积和功耗限制,CPU中不能内置很多个TRNG;由于频率限制,单个TRNG输出的随机数数量有限,这使得单靠TRNG产生的随机数数量不足以满足系统需要。所以大多数时候我们会用TRNG和PRNG配合来产生随机数。

基于LFSR的PRNG可以简单的认为就是一串

猜你喜欢

转载自blog.csdn.net/weixin_45264425/article/details/131843818