2. 随机性、熵与不可预测性的数学基础
在TRNG工程中,“随机”并不是一个模糊的形容词,而是一组可以被定义、被度量、被约束的数学对象。一个TRNG输出比特流是否合格,取决于它在概率分布、熵、统计距离和计算不可区分性等维度上是否满足设计目标。本节从这些基础概念出发,说明它们如何直接约束TRNG的采样、后处理与健康测试设计。
概率分布:随机性的起点
设随机变量 X 取值于有限集合 𝒳,其概率分布记为 PX(x) = Pr[X = x]。理想随机比特 X ∈ {0,1} 满足 P(0) = P(1) = 0.5,且各比特相互独立。真实熵源几乎不可能直接产生这种理想分布:环形振荡器采样会受占空比偏差影响,亚稳态电路会受晶体管失配影响,量子源会受探测效率影响。因此,TRNG设计的第一步不是“产生随机”,而是“刻画分布”。
例如,某环形振荡器采样输出中,1的出现概率实测约为0.53,0约为0.47。单看偏差不大,但若连续采样1000比特,偏差会被放大,直接作为密钥材料将带来可被利用的统计偏置。分布刻画通常需要估计一阶频率、二阶联合频率以及游程分布,这些量是后续熵估计的输入。
香农熵、最小熵与条件熵
香农熵衡量的是平均不确定性:
H(X) = −Σx P(x) log₂ P(x)
对均匀二元分布,H(X) = 1 bit;对 P(1) = 0.53 的分布,H(X) ≈ 0.9974 bit。香农熵描述的是“平均每次采样能提供多少信息”,但它对最坏情况不敏感。密码学中更关心的是最小熵:
H∞(X) = −log₂ maxx P(x)
对上述偏置源,H∞ = −log₂ 0.53 ≈ 0.916 bit。这意味着即使攻击者知道分布,每次采样仍至少保留0.916 bit的不确定性。最小熵是TRNG熵预算的核心指标,因为它直接决定需要多少原始采样才能安全地产生1 bit全熵输出。
条件熵进一步刻画“已知某些信息后还剩多少不确定性”:
H∞(X | Y) = −log₂ Σy P(Y=y) · maxx P(X=x | Y=y)
在TRNG中,Y 可以表示攻击者已知的环境温度、电压、芯片型号或历史输出。若条件熵显著低于无条件最小熵,说明熵源存在可被外部观测解释的相关性,必须通过后处理或重新设计来消除。
统计距离与计算不可区分性
统计距离衡量两个分布之间的“可区分程度”。对分布 P 和 Q,定义为:
Δ(P, Q) = ½ Σx |P(x) − Q(x)|
若 Q 为均匀分布 U,则 Δ(P, U) 直接量化了TRNG输出与理想随机的差距。对 P(1)=0.53 的单比特分布,Δ = ½(|0.47−0.5| + |0.53−0.5|) = 0.03。这个值看似很小,但在 n 比特独立采样下,统计距离会随 n 增大而趋近1,意味着长序列几乎必然暴露偏置。因此,TRNG设计不能只看单比特统计距离,必须结合序列长度和攻击者观测能力来评估。
计算不可区分性则把“区分”限制在多项式时间算法内。即使两个分布统计距离不为零,只要任何多项式时间区分器的优势可忽略,输出仍可用于密码学。这为TRNG后处理提供了理论依据:通过哈希或提取器,可以把有偏的原始比特压缩为计算不可区分的密钥流。但要注意,计算不可区分性依赖计算假设,而最小熵不依赖任何计算假设,因此熵预算必须按最小熵保守计算。
对TRNG设计的约束与工程示例
假设某TRNG原始熵源经评估得到 H∞ = 0.916 bit/采样,目标输出为256 bit全熵密钥。若直接使用原始比特,需要至少 ⌈256 / 0.916⌉ = 280 次采样。但若考虑条件熵因温度相关性下降至0.85 bit/采样,则需 ⌈256 / 0.85⌉ = 302 次采样。工程上通常再留20%余量,取约360次采样,并通过SHA-256后处理压缩为256 bit输出。
后处理压缩比 r = 输入长度 / 输出长度 必须满足 r ≤ H∞ / 1,即每输出1 bit至少消耗 1/H∞ 个原始采样。若压缩比过大,输出熵不足;若过小,则浪费熵源带宽。实际设计中,还需用NIST SP 800-90B的估计器对最小熵进行保守评估,并在运行时用健康测试监控统计距离是否漂移。
总结来看,概率分布是观测对象,香农熵描述平均信息量,最小熵给出最坏情况下的安全下界,条件熵处理外部相关信息,统计距离量化与理想分布的偏差,计算不可区分性则连接后处理与密码学安全。TRNG设计必须同时满足:原始熵源的最小熵估计保守可靠、后处理压缩比不超过熵预算、运行时健康测试能捕获分布漂移。这些数学工具不是抽象理论,而是决定采样次数、压缩比和告警阈值的直接依据。