实际量子力学物理随机性有两个基本来源:原子或亚原子级的量子力学和thermal noise(其中一些是源自量子力学)。量子力学预测某些物理现象,例如原子的核衰变,基本上是随机的,原则上不能预测(关于量子不可预测性的经验验证的讨论,参见贝尔测试实验)。并且,因为我们生活在绝对零度以上的温度,所以每个系统的状态都有一些随机变化;例如,构成空气的气体分子不断地以随机方式相互反弹(参见统计力学)。这种随机性也是一种量子现象。
由于量子力学事件的结果原则上无法预测,因此它们是随机数生成的“黄金标准”。用于随机数生成的一些量子现象包括:
Shot noise,电子电路中的量子力学噪声源。一个简单的例子是照在光电二极管上的灯。由于不确定性原理,到达的光子在电路中产生噪声。收集使用噪声会带来一些问题,但这是一个特别简单的随机噪声源。然而,在整个感兴趣的带宽内,散粒噪声能量并不总是很好地分布。横向磁场中的气体二极管和闸流管电子管可以产生大量的噪声能量(10伏或更高的高阻抗负载)但具有非常高的能量分布,需要仔细过滤才能在广谱范围内实现平坦度。
核衰变辐射源(例如,来自某些商业烟雾探测器),由连接到PC的盖革计数器检测。
光子穿过半透明镜子。检测互斥事件(反射/传输)并分别与“0”或“1”位值相关联。
放大在反向偏置晶体管的基极上产生的信号。发射器被电子饱和,有时它们将穿过带隙并通过基座离开。然后通过几个晶体管放大该信号,并将结果馈入施密特触发器。
自发参量下变频导致简并光学参量振荡器中的二进制相位状态选择。
通过零差检测测量真空能量的波动。
Thermal现象更容易检测。虽然大多数系统将在足够低的温度下停止工作以将噪声降低两倍(例如,~150K),但它们在一定程度上容易受到降低系统温度的攻击。使用的一些热现象包括:
来自电阻器的thermal noise,被放大以提供随机电压源。
Avalanche noise产生的avalanche diode,或来自Zener diode的Zener breakdown。
由连接到PC的无线电接收器检测到的Atmospheric noise(虽然大部分噪声,例如闪电噪声,但不是热噪声,但很可能是chaotic现象)。
在没有量子效应或thermal noise的情况下,可以使用其他倾向于随机的现象,尽管其方式不易以物理定律为特征。当仔细地组合几个这样的源时(例如,在Yarrow算法或Fortuna CSPRNG中),可以收集足够的熵用于创建加密密钥和随机数,尽管通常以受限的速率。优点是这种方法原则上不需要特殊的硬件。缺点是知识渊博的攻击者可以偷偷地修改软件或其输入,从而可能大大降低输出的随机性。通常在这种方法中使用的主要随机源是由机械输入/输出设备(例如键盘和磁盘驱动器,各种系统信息计数器等)引起的中断的精确定时。
必须谨慎实施最后一种方法,如果不是,可能会受到攻击。例如,Linux 2.6.10内核中生成器的前向安全性可能会被