1. TRNG与熵源工程导论

在密码系统中,随机数不是“辅助材料”,而是密钥、挑战值、初始化向量、盐值、会话标识、掩码和一次性令牌的生成基础。随机数一旦可预测,后续再强的分组密码、哈希函数或公钥算法都可能被绕过。因此,理解真随机数发生器(True Random Number Generator,TRNG)与伪随机数发生器(Pseudo-Random Number Generator,PRNG)的本质区别,是进入熵源工程的第一道门槛。

1. TRNG与PRNG的本质区别

PRNG 是确定性算法。给定相同的种子和相同的内部状态,它必然输出相同的序列。它的“随机性”来自算法对种子的扩散与混淆,而不是来自不可预测的物理过程。PRNG 的优点是速度快、可复现、易于软件实现,适合仿真、测试和某些非安全场景;但在密码学中,PRNG 的安全性完全依赖于种子的保密性和不可预测性。如果种子被攻击者获知或猜测,整个输出序列即可被重建。

TRNG 则不同。它从物理世界中采集熵,例如热噪声、环形振荡器抖动、亚稳态、光子到达时间、放射性衰变或半导体器件的雪崩噪声。这些过程在经典物理层面具有不可预测性,因此 TRNG 的输出不能仅凭算法和已知状态被完全重建。TRNG 的核心不是“算法多复杂”,而是“熵源是否真实、采集是否可靠、后处理是否透明、健康监测是否到位”。

可以用一个简化的关系来理解:PRNG 的输出空间由种子决定,TRNG 的输出空间由物理熵决定。前者是“确定性扩展”,后者是“物理不确定性采集”。在工程上,TRNG 通常不是直接输出最终随机比特,而是经过采样、量化、去偏、压缩、健康检测和接口封装,最终形成可被系统安全使用的随机比特流。

TRNG 与 PRNG 的随机性来源对比 左侧为物理熵驱动的 TRNG 链路,右侧为种子驱动的 PRNG 链路 TRNG:物理熵采集与调理 物理熵源 热噪声 / 抖动 / 亚稳态 采样与量化 比较器 / ADC / 时间戳 去偏与压缩 Von Neumann / 哈希 健康检测 熵估计 / 在线告警 随机比特输出 密钥 / IV / 盐值 PRNG:确定性算法扩展 种子输入 密钥 / 时间 / 计数器 确定性算法 LFSR / AES-CTR / ChaCha 内部状态 状态转移可复现 输出序列 相同种子 → 相同序列 伪随机比特流 可预测性风险 关键判据:TRNG 的安全性来自物理熵的不可预测性;PRNG 的安全性来自种子的保密性与算法强度 工程目标:可采集、可量化、可监测、可审计、可集成

2. 熵源在密码学与安全系统中的核心地位

熵是随机性的度量。在信息论中,熵描述一个随机变量不确定性的多少。对于密码系统而言,真正重要的是“最小熵”,即攻击者在最有利条件下仍无法确定的那部分不确定性。一个熵源如果输出 8 位数据,但其中 7 位固定、只有 1 位随机,那么它的最小熵只有 1 位,而不是 8 位。工程上必须区分“看起来随机”和“具有足够最小熵”这两件事。

熵源的地位可以从三个层面理解。第一,密钥生成:如果 RSA 或 ECC 私钥的随机数生成过程熵不足,攻击者可以通过格攻击或暴力搜索缩小私钥空间。第二,协议安全:TLS 握手、SSH 会话、区块链签名、物联网设备认证都依赖不可预测的随机挑战和会话密钥。第三,系统信任根:安全启动、可信执行环境、硬件安全模块和密码协处理器通常把 TRNG 作为信任链的起点。没有可信熵源,整个安全体系就像建在沙地上的城堡。

在实际系统中,熵源往往不是单一器件,而是多源组合。例如,一个安全芯片可能同时采集环形振荡器抖动、SRAM 上电噪声和温度传感器噪声,再通过异或或哈希混合,降低单一熵源失效带来的风险。这种设计思想称为“熵源多样性”和“失效冗余”。

3. 课程整体学习地图与工程目标

本课程围绕“从物理噪声到可信随机比特”的完整链路展开,共 30 章。学习地图可以划分为五个阶段:

  • 基础认知阶段:理解 TRNG 定义、PRNG 区别、熵的度量、随机性测试的基本思想。
  • 熵源与采集阶段:掌握热噪声、环形振荡器、亚稳态、雪崩噪声等物理机制,以及采样、量化、放大和数字化方法。
  • 调理与后处理阶段:学习去偏、压缩、哈希、异或、白化等后处理技术,理解它们对熵和吞吐率的影响。
  • 健康检测与评估阶段:掌握在线健康测试、熵估计、NIST SP 800-90B、AIS 31 等标准方法,以及故障注入和侧信道防护。
  • 工程集成与合规阶段:完成 TRNG 在 FPGA、ASIC、MCU、安全芯片中的集成,接口设计、功耗管理、认证与文档。

工程目标不是“做一个能输出 0 和 1 的电路”,而是交付一个可量化、可监测、可审计、可集成的熵源子系统。具体包括:

  1. 明确熵源物理机制与最小熵下界,给出可复现的采集电路或采集逻辑。
  2. 设计后处理链路,使输出比特通过统计测试,同时不引入可预测结构。
  3. 实现在线健康检测,在熵源退化、失效或受攻击时及时告警并停止输出。
  4. 提供标准接口,如 AXI、APB、SPI 或寄存器映射,便于 SoC 集成。
  5. 形成测试报告、熵评估报告和合规文档,支撑认证与审计。
学习建议:每学完一个模块,都回到“熵从哪里来、经过什么变换、如何证明它仍然安全”这三个问题。TRNG 工程的核心不是堆砌电路,而是建立可验证的信任链。
常见误区:把 PRNG 当作 TRNG 使用;只做统计测试而不做熵估计;忽略健康检测;后处理过度压缩导致吞吐率不可接受;没有考虑温度、电压和老化对熵源的影响。