4、TRNG架构总览:经典TRNG架构(模拟熵源+数字化+后处理)及各模块功能

真随机数发生器(TRNG)是硬件安全体系的信任根,其核心价值在于为密钥生成、签名随机数、初始化向量等安全操作提供不可预测、不可复现的熵来源。与伪随机数发生器(PRNG)不同,TRNG必须从物理世界的微观随机性中提取信息。经过数十年的工程实践,业界已收敛出一套经典的TRNG架构,即“模拟熵源 + 数字化 + 后处理”三段式结构。理解这一架构,是设计、评估和集成TRNG的基石。本章将系统拆解该架构的每一层级,深入分析各模块的功能边界、设计要点与工程权衡,并辅以实际案例与常见误区剖析,帮助读者建立从物理现象到安全比特流的完整认知。

经典TRNG三段式架构与信号流向 模拟熵源 (物理随机过程) 热噪声 / 抖动 / 混沌电路 关键参数:熵率、偏差、相关性 输出:模拟信号(电压/电流/相位) 数字化 (采样与量化) 比较器 / ADC / 触发器采样 关键参数:采样时钟、建立时间、亚稳态 输出:原始随机比特流(1~10 Mbps) 后处理 (去偏与压缩) 哈希 / 冯·诺依曼校正 / LFSR 关键参数:压缩比、熵保持、吞吐率 输出:安全随机比特流(≥ 99.9% 熵) 模拟信号 原始比特流 安全随机比特流输出 用于密钥生成、签名、IV等 安全熵输出 在线健康测试 实时监测熵源退化与故障 监测信号 经典架构核心:物理熵 → 采样量化 → 密码学后处理 每一级都需独立验证,且整体需通过NIST SP 800-90B测试 设计要点:模拟熵源需提供足够熵率 → 数字化需避免系统性偏差 → 后处理需保证最小熵输出 任何一级的缺陷都无法通过后级完全修复,必须逐级验证

上图展示了经典TRNG架构的完整信号链路。从物理熵源产生的模拟信号,经过数字化采样转换为原始比特流,再通过后处理模块提取为安全随机比特流。同时,在线健康测试模块实时监测熵源状态,确保整个系统的可靠性。下面我们将逐一深入每个模块的内部机制与设计考量。

4.1 模拟熵源:物理随机性的产生与特性

核心原理

模拟熵源是TRNG的“原材料车间”,其本质是利用物理过程中的固有随机性。最常见的熵源类型包括:

  • 热噪声(Thermal Noise):电阻或晶体管结中电子的热运动产生的随机电压波动,带宽极宽(可达GHz),是理想的宽带熵源。
  • 抖动(Jitter):振荡器或环形振荡器中,由于器件噪声和环境扰动导致的时钟边沿位置随机偏移。抖动幅度通常在皮秒到纳秒量级。
  • 混沌电路(Chaotic Circuit):利用非线性电路(如Bernoulli映射、Chua电路)对初始条件极度敏感的特性,产生看似杂乱但确定性的信号,配合噪声注入实现真正的随机性。

熵源的核心指标是熵率(Entropy Rate),即每单位时间或每个样本携带的随机比特数。理想情况下,一个完全随机的二进制信号熵率为1 bit/bit。实际中,由于器件偏差、温度漂移和工艺变化,熵率通常低于理论值。设计目标是在最坏条件下(如极端温度、电压波动)仍能保证足够的熵余量。

判断方法与设计要点

评估一个模拟熵源是否合格,不能仅看其输出是否“看起来随机”,而必须进行严格的统计检验和物理分析:

  1. 熵源建模:建立噪声源的物理模型(如电阻热噪声的功率谱密度公式:\( S_v(f) = 4kTR \)),确定理论熵率下限。
  2. 偏差测量:采集大量原始数据(至少100万比特),计算比特偏差(P(1)与0.5的偏离程度)。例如,若P(1)=0.5001,则每比特熵约为0.9997 bit。
  3. 相关性分析:检查相邻比特、间隔比特之间的自相关系数。理想情况下,任意间隔的相关系数应趋近于0。
  4. 环境鲁棒性:在-40°C至+85°C温度范围、±10%电压波动下,重复上述测试,确保熵率不降至安全阈值以下。
工程经验:环形振荡器(RO)是FPGA中实现TRNG最常用的熵源,但RO的抖动受电源噪声和温度影响显著。建议采用差分RO结构,并增加稳压电路,可将熵率波动控制在±5%以内。同时,RO的振荡频率应避开系统主时钟的谐波,防止确定性耦合。

案例拆解:基于环形振荡器的熵源设计

某安全芯片项目需要集成TRNG,目标熵率≥0.98 bit/bit,输出速率≥10 Mbps。初始方案采用3级RO,振荡频率约500 MHz,采样时钟100 MHz。实测数据如下:

参数设计值实测值判定
比特偏差 P(1)0.5 ± 0.0010.512超标
相邻比特相关系数< 0.010.08超标
熵率(估算)≥ 0.980.91不达标

分析过程:偏差超标源于RO占空比不对称(PMOS与NMOS驱动能力差异),导致采样点偏向高电平。相关性超标则是因为采样时钟与RO频率存在固定相位关系,引入了确定性模式。

改进措施:

  1. 将3级RO改为5级,增加抖动积累量,同时采用差分采样(两个RO相位相减)。
  2. 在采样前插入一个D触发器作为“去相关器”,打破固定相位关系。
  3. 增加一个简单的偏置校正电路(电流镜调整PMOS/NMOS比例),将占空比调至50%±0.1%。

结果对比:改进后,P(1)=0.5003,相关系数<0.005,熵率提升至0.985,满足设计要求。代价是面积增加约30%,功耗增加15%。

风险提示:切勿仅依赖后处理来“修复”熵源缺陷。若熵源本身熵率不足,后处理只能压缩输出,无法创造新的熵。例如,若熵源熵率仅0.5 bit/bit,即使经过SHA-256压缩,输出比特的熵率上限仍为0.5 bit/bit,无法达到安全要求。

4.2 数字化:从模拟到比特的转换

核心原理

数字化模块负责将连续的模拟信号转换为离散的二进制序列。根据熵源类型,数字化方式分为两类:

  • 电压采样型:适用于热噪声等电压型熵源。使用高速比较器将噪声电压与参考电压比较,输出1/0。关键参数是比较器的建立时间、失调电压和回踢噪声。
  • 时间采样型:适用于抖动型熵源。通过D触发器或TDC(时间数字转换器)测量振荡器边沿的抖动。典型结构是“振荡器-采样器”对,利用亚稳态现象提取随机性。

数字化过程的核心挑战是亚稳态(Metastability)。当采样时钟边沿恰好落在信号跳变窗口内时,触发器输出可能进入不确定状态,表现为输出延迟、振荡或毛刺。虽然亚稳态本身是随机的,但若处理不当,会导致输出偏差或相关性。

操作流程与设计准则

  1. 采样时钟选择:采样频率应远低于熵源带宽(通常为1/10至1/100),确保每次采样独立。例如,100 MHz带宽的噪声源,采样频率宜设为1~10 MHz。
  2. 比较器设计:失调电压应小于噪声RMS值的1/10,否则会引入系统性偏差。例如,若噪声RMS为1 mV,比较器失调需<0.1 mV。
  3. 亚稳态处理:在采样触发器后级联2~3个同步触发器,将亚稳态传播概率降至10^-12以下。同时,确保同步触发器的建立/保持时间裕量充足。
  4. 偏置校准:定期(如每毫秒)测量输出比特的偏差,通过DAC调整比较器参考电压,实现动态偏置校正。
关键参数速查表:
参数典型值影响
采样频率1~10 MHz过高导致相关性,过低降低吞吐率
比较器失调< 0.1 mV失调越大,偏差越大
同步级数2~3级级数越多,亚稳态概率越低
采样窗口≥ 建立时间+保持时间窗口过窄导致采样错误

实战场景:FPGA中的TRNG数字化实现

在Xilinx UltraScale+ FPGA上实现TRNG时,常使用LUT作为环形振荡器,并通过CLB内的触发器采样。一个典型配置为:5级RO,采样时钟100 MHz,采样后经过2级同步。实测发现,当RO频率接近采样时钟的整数倍时(如500 MHz = 5×100 MHz),输出出现明显的周期性模式。解决方案是采用“非整数倍频”设计,将RO频率调至约487 MHz(通过调整LUT延迟),并增加一个随机扰动的时钟分频器,使采样相位随机化。最终,数字化模块输出的原始比特流通过NIST SP 800-90B的重复性测试,但熵率估算仅为0.85 bit/bit,仍需后处理提升。

4.3 后处理:熵提取与安全性增强

核心原理

后处理模块是TRNG的“精炼车间”,其目标有两个:去偏(Debiasing)和压缩(Compression)。去偏消除比特流中的偏差和相关性,压缩则通过密码学函数将低熵率数据转换为高熵率、固定长度的安全输出。

常见的后处理算法包括:

  • 冯·诺依曼校正器:将输入比特对(00,01,10,11)映射为(无输出, 0, 1, 无输出)。该算法能完全消除静态偏差,但吞吐率仅为输入的25%。
  • LFSR(线性反馈移位寄存器):通过多项式反馈混合比特,能有效降低相关性,但无法消除偏差。
  • 密码学哈希(如SHA-256):将任意长度的输入压缩为固定长度输出,具有极强的去偏和扩散能力。但需注意,哈希输出熵率不超过输入熵率,因此必须确保输入熵足够。
  • HMAC-DRBG / CTR-DRBG:NIST SP 800-90A标准中的确定性随机比特生成器,可结合TRNG熵源实现安全输出。
  • 判断方法与安全边界

    后处理模块的设计必须遵循“熵不增原理”:输出熵率 ≤ 输入熵率 × 压缩比。例如,若输入熵率为0.8 bit/bit,采用SHA-256将256比特输入压缩为256比特输出,则输出熵率仍为0.8 bit/bit,并未提升。因此,后处理的目标不是“增加”熵,而是“提取”和“均匀化”熵。

    安全边界条件:

    1. 最小熵估算:根据NIST SP 800-90B,需对原始数据进行最小熵估算(如采用Most Common Value Estimate、Collision Estimate等),得到保守的熵率下限。
    2. 压缩比设计:若最小熵率为0.7 bit/bit,则每输出1比特安全随机数,至少需要输入1/0.7 ≈ 1.43比特原始数据。实际设计中,通常取2倍安全裕量,即压缩比设为1:2或更高。
    3. 健康测试联动:后处理模块应接收来自健康测试模块的状态信号。当熵源退化时,自动降低输出速率或触发告警。
    常见误区:有些设计者认为“只要用了SHA-256,输出就是安全的”。这是错误的。如果输入熵源被攻击者控制(例如通过电磁注入改变噪声特性),哈希输出可能变得可预测。因此,后处理不能替代熵源监控,必须与在线健康测试协同工作。

    案例拆解:后处理参数选择与验证

    某车规级MCU的TRNG模块,原始数据熵率经估算为0.82 bit/bit(最坏温度-40°C下)。设计要求输出速率≥1 Mbps,且通过AIS-31(德国BSI标准)测试。

    设计决策:

    • 采用SHA-256作为后处理核心,输入512比特,输出256比特,压缩比2:1。
    • 理论输出熵率 = 0.82 × 2 = 1.64 bit/bit,满足AIS-31要求的≥0.997 bit/bit。
    • 增加一个“熵池”机制:每产生512比特原始数据,先与池中已有数据混合(异或),再输入SHA-256,以抵抗潜在的模式注入攻击。

    验证结果:在-40°C、85°C、3.0V/5.5V电压下,输出比特流均通过AIS-31的在线测试和离线测试(包括T0-T8共9项统计测试)。实际输出速率1.2 Mbps,功耗增加0.8 mW。

    复盘经验:后处理参数的选择不能仅看平均熵率,必须考虑最坏情况。该案例中,若压缩比设为1.5:1,在-40°C下输出熵率将降至0.82×1.5=1.23 bit/bit,虽仍达标,但安全裕量不足。最终选择2:1压缩比,虽然吞吐率降低,但换来了更强的鲁棒性。

    4.4 经典架构的工程权衡与常见误区

    模块间耦合与系统集成

    经典TRNG架构的三个模块并非独立设计,而是紧密耦合的系统。关键耦合点包括:

    • 电源域隔离:模拟熵源对电源噪声极其敏感,必须使用独立的LDO或RC滤波,与数字后处理电路隔离。建议模拟域和数字域使用不同的地平面,单点连接。
    • 时钟同步:数字化采样时钟与后处理时钟应同源,但采样时钟的抖动应尽量小(使用专用时钟缓冲器),避免引入额外偏差。
    • 故障传播:健康测试模块应同时监测熵源输出和数字化输出。若熵源失效,后处理模块应能快速冻结输出,防止输出可预测数据。

    常见误区总结

    误区后果正确做法
    过度依赖后处理修复熵源缺陷输出熵率不达标,安全强度虚高先优化熵源,后处理仅做精炼
    忽略亚稳态处理输出出现毛刺或偏差漂移增加同步级数,并做时序分析
    压缩比设置过高输出熵率不足,且吞吐率浪费根据最小熵率计算压缩比,留2倍裕量
    健康测试仅做上电自检运行中熵源退化无法及时发现实现连续在线监测,响应时间<1ms
    模拟域与数字域未隔离数字开关噪声耦合进熵源,降低熵率独立电源域、地平面分割、增加去耦电容

    总结复盘

    经典TRNG架构经过数十年的验证,是当前最可靠、最可审计的硬件随机数生成方案。其核心设计哲学是“分层负责、逐级验证”:模拟熵源提供物理随机性,数字化忠实转换,后处理精炼输出,健康测试保障运行安全。每一层都有明确的验收标准,任何一层的缺陷都无法通过其他层完全弥补。

    在实际工程中,建议遵循以下设计流程:

    1. 明确安全目标(如NIST SP 800-90B、AIS-31、GM/T 0005),确定最小熵率要求。
    2. 选择熵源类型,进行理论建模和仿真,确定最坏情况下的熵率下限。
    3. 设计数字化电路,重点处理亚稳态和偏置校准。
    4. 根据最小熵率设计后处理压缩比,并选择经过认证的密码学算法。
    5. 实现完整的健康测试模块,包括上电自检和运行中监测。
    6. 进行全温度、全电压范围内的验证测试,并保留至少20%的熵率裕量。

    最后,务必牢记:TRNG是安全系统的信任根,其设计不能以“通过测试”为唯一目标,而应以“在最坏条件下仍能提供可证明的随机性”为准则。只有深刻理解每个模块的物理本质和数学边界,才能设计出真正值得信赖的硬件随机数发生器。