什么是真随机数生成器?
真随机数生成器 (TRNG) 使用非确定性源来产生随机性。大多数通过测量不可预测的自然过程来实现,包括电离辐射活动的脉冲检测器、气体放电管和漏电电容器。
英特尔开发了一种商业上可用的芯片,通过测量未驱动电阻器两端的电压来采样热噪声。TRNG 生成真随机数,通常通过硬件方法产生。
由于 TRNG 产生的随机数难以预测,因为 TRNG 基于难以预测随机值的物理源。因此,TRNG 产生的随机数是一种安全的方法,因为很难生成相同的数值。
以下是一些可能的随机性来源,如果小心谨慎,可以简单地用于计算机上生成真随机序列。
声音/视频输入 - 许多计算机都配备了将某些现实世界模拟源数字化为输入的设备,包括来自麦克风的声音或来自摄像机的视频输入。
未插入任何设备的声音数字化仪的“输入”,或镜头盖盖上的摄像机的“输入”,基本上是热噪声。如果系统具有足够的增益来检测任何东西,则此类输入可以支持相当高质量的随机位。
磁盘驱动器 - 已知磁盘驱动器由于混沌气流而导致其旋转速度存在小的随机波动。低级磁盘寻道时间仪器的扩展创建了一系列包含此随机性的测量值。
此类数据通常高度相关,因此需要进行大量的处理。然而,十年前的实验表明,通过这种处理,即使在那一天较慢的计算机上的慢速磁盘驱动器也可以轻松地每分钟创建 100 位或更多优秀的随机信息。
TRNG 可以产生以某种方式有偏差的输出,包括 1 比 0 多或反之亦然。已经开发出各种改变比特流以减少或消除偏差的方法。这些被称为去偏算法。
一种去偏的方法是将比特流通过哈希函数。哈希函数从任意长度的输入创建 n 位输出。对于去偏,可以将 m 个输入位(其中 m ≥ n)的块通过哈希函数。
TRNG 太单调乏味,并且大量的伪随机数生成器(公式)可用。TRNG 可以使用诸如物理或非物理噪声源。
在逻辑器件中,物理噪声源非常有限,因为逻辑器件应该始终处于清晰的状态。它可以生成随机数,并且需要一个不可控的随机现象。
逻辑器件中通常用于生成随机数的物理现象如下:
时钟抖动 - 这是时钟边缘与其理想位置的偏差。
亚稳态 - 这是电路能够在不确定的时间段内持续处于不稳定状态的能力。
混沌 - 这是确定性系统的不可预测行为,它对其初始条件高度敏感。
模拟信号 - 模拟信号包括二极管的散粒噪声、热噪声等。