4、TRNG架构总览:经典TRNG架构(模拟熵源+数字化+后处理)及各模块功能
真随机数发生器(TRNG)是硬件安全体系的信任根,其核心价值在于为密钥生成、签名随机数、初始化向量等安全操作提供不可预测、不可复现的熵来源。与伪随机数发生器(PRNG)不同,TRNG必须从物理世界的微观随机性中提取信息。经过数十年的工程实践,业界已收敛出一套经典的TRNG架构,即“模拟熵源 + 数字化 + 后处理”三段式结构。理解这一架构,是设计、评估和集成TRNG的基石。本章将系统拆解该架构的每一层级,深入分析各模块的功能边界、设计要点与工程权衡,并辅以实际案例与常见误区剖析,帮助读者建立从物理现象到安全比特流的完整认知。
上图展示了经典TRNG架构的完整信号链路。从物理熵源产生的模拟信号,经过数字化采样转换为原始比特流,再通过后处理模块提取为安全随机比特流。同时,在线健康测试模块实时监测熵源状态,确保整个系统的可靠性。下面我们将逐一深入每个模块的内部机制与设计考量。
4.1 模拟熵源:物理随机性的产生与特性
核心原理
模拟熵源是TRNG的“原材料车间”,其本质是利用物理过程中的固有随机性。最常见的熵源类型包括:
- 热噪声(Thermal Noise):电阻或晶体管结中电子的热运动产生的随机电压波动,带宽极宽(可达GHz),是理想的宽带熵源。
- 抖动(Jitter):振荡器或环形振荡器中,由于器件噪声和环境扰动导致的时钟边沿位置随机偏移。抖动幅度通常在皮秒到纳秒量级。
- 混沌电路(Chaotic Circuit):利用非线性电路(如Bernoulli映射、Chua电路)对初始条件极度敏感的特性,产生看似杂乱但确定性的信号,配合噪声注入实现真正的随机性。
熵源的核心指标是熵率(Entropy Rate),即每单位时间或每个样本携带的随机比特数。理想情况下,一个完全随机的二进制信号熵率为1 bit/bit。实际中,由于器件偏差、温度漂移和工艺变化,熵率通常低于理论值。设计目标是在最坏条件下(如极端温度、电压波动)仍能保证足够的熵余量。
判断方法与设计要点
评估一个模拟熵源是否合格,不能仅看其输出是否“看起来随机”,而必须进行严格的统计检验和物理分析:
- 熵源建模:建立噪声源的物理模型(如电阻热噪声的功率谱密度公式:\( S_v(f) = 4kTR \)),确定理论熵率下限。
- 偏差测量:采集大量原始数据(至少100万比特),计算比特偏差(P(1)与0.5的偏离程度)。例如,若P(1)=0.5001,则每比特熵约为0.9997 bit。
- 相关性分析:检查相邻比特、间隔比特之间的自相关系数。理想情况下,任意间隔的相关系数应趋近于0。
- 环境鲁棒性:在-40°C至+85°C温度范围、±10%电压波动下,重复上述测试,确保熵率不降至安全阈值以下。
案例拆解:基于环形振荡器的熵源设计
某安全芯片项目需要集成TRNG,目标熵率≥0.98 bit/bit,输出速率≥10 Mbps。初始方案采用3级RO,振荡频率约500 MHz,采样时钟100 MHz。实测数据如下:
| 参数 | 设计值 | 实测值 | 判定 |
|---|---|---|---|
| 比特偏差 P(1) | 0.5 ± 0.001 | 0.512 | 超标 |
| 相邻比特相关系数 | < 0.01 | 0.08 | 超标 |
| 熵率(估算) | ≥ 0.98 | 0.91 | 不达标 |
分析过程:偏差超标源于RO占空比不对称(PMOS与NMOS驱动能力差异),导致采样点偏向高电平。相关性超标则是因为采样时钟与RO频率存在固定相位关系,引入了确定性模式。
改进措施:
- 将3级RO改为5级,增加抖动积累量,同时采用差分采样(两个RO相位相减)。
- 在采样前插入一个D触发器作为“去相关器”,打破固定相位关系。
- 增加一个简单的偏置校正电路(电流镜调整PMOS/NMOS比例),将占空比调至50%±0.1%。
结果对比:改进后,P(1)=0.5003,相关系数<0.005,熵率提升至0.985,满足设计要求。代价是面积增加约30%,功耗增加15%。
4.2 数字化:从模拟到比特的转换
核心原理
数字化模块负责将连续的模拟信号转换为离散的二进制序列。根据熵源类型,数字化方式分为两类:
- 电压采样型:适用于热噪声等电压型熵源。使用高速比较器将噪声电压与参考电压比较,输出1/0。关键参数是比较器的建立时间、失调电压和回踢噪声。
- 时间采样型:适用于抖动型熵源。通过D触发器或TDC(时间数字转换器)测量振荡器边沿的抖动。典型结构是“振荡器-采样器”对,利用亚稳态现象提取随机性。
数字化过程的核心挑战是亚稳态(Metastability)。当采样时钟边沿恰好落在信号跳变窗口内时,触发器输出可能进入不确定状态,表现为输出延迟、振荡或毛刺。虽然亚稳态本身是随机的,但若处理不当,会导致输出偏差或相关性。
操作流程与设计准则
- 采样时钟选择:采样频率应远低于熵源带宽(通常为1/10至1/100),确保每次采样独立。例如,100 MHz带宽的噪声源,采样频率宜设为1~10 MHz。
- 比较器设计:失调电压应小于噪声RMS值的1/10,否则会引入系统性偏差。例如,若噪声RMS为1 mV,比较器失调需<0.1 mV。
- 亚稳态处理:在采样触发器后级联2~3个同步触发器,将亚稳态传播概率降至10^-12以下。同时,确保同步触发器的建立/保持时间裕量充足。
- 偏置校准:定期(如每毫秒)测量输出比特的偏差,通过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熵源实现安全输出。
- 最小熵估算:根据NIST SP 800-90B,需对原始数据进行最小熵估算(如采用Most Common Value Estimate、Collision Estimate等),得到保守的熵率下限。
- 压缩比设计:若最小熵率为0.7 bit/bit,则每输出1比特安全随机数,至少需要输入1/0.7 ≈ 1.43比特原始数据。实际设计中,通常取2倍安全裕量,即压缩比设为1:2或更高。
- 健康测试联动:后处理模块应接收来自健康测试模块的状态信号。当熵源退化时,自动降低输出速率或触发告警。
- 采用SHA-256作为后处理核心,输入512比特,输出256比特,压缩比2:1。
- 理论输出熵率 = 0.82 × 2 = 1.64 bit/bit,满足AIS-31要求的≥0.997 bit/bit。
- 增加一个“熵池”机制:每产生512比特原始数据,先与池中已有数据混合(异或),再输入SHA-256,以抵抗潜在的模式注入攻击。
- 电源域隔离:模拟熵源对电源噪声极其敏感,必须使用独立的LDO或RC滤波,与数字后处理电路隔离。建议模拟域和数字域使用不同的地平面,单点连接。
- 时钟同步:数字化采样时钟与后处理时钟应同源,但采样时钟的抖动应尽量小(使用专用时钟缓冲器),避免引入额外偏差。
- 故障传播:健康测试模块应同时监测熵源输出和数字化输出。若熵源失效,后处理模块应能快速冻结输出,防止输出可预测数据。
- 明确安全目标(如NIST SP 800-90B、AIS-31、GM/T 0005),确定最小熵率要求。
- 选择熵源类型,进行理论建模和仿真,确定最坏情况下的熵率下限。
- 设计数字化电路,重点处理亚稳态和偏置校准。
- 根据最小熵率设计后处理压缩比,并选择经过认证的密码学算法。
- 实现完整的健康测试模块,包括上电自检和运行中监测。
- 进行全温度、全电压范围内的验证测试,并保留至少20%的熵率裕量。
判断方法与安全边界
后处理模块的设计必须遵循“熵不增原理”:输出熵率 ≤ 输入熵率 × 压缩比。例如,若输入熵率为0.8 bit/bit,采用SHA-256将256比特输入压缩为256比特输出,则输出熵率仍为0.8 bit/bit,并未提升。因此,后处理的目标不是“增加”熵,而是“提取”和“均匀化”熵。
安全边界条件:
案例拆解:后处理参数选择与验证
某车规级MCU的TRNG模块,原始数据熵率经估算为0.82 bit/bit(最坏温度-40°C下)。设计要求输出速率≥1 Mbps,且通过AIS-31(德国BSI标准)测试。
设计决策:
验证结果:在-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架构的三个模块并非独立设计,而是紧密耦合的系统。关键耦合点包括:
常见误区总结
| 误区 | 后果 | 正确做法 |
|---|---|---|
| 过度依赖后处理修复熵源缺陷 | 输出熵率不达标,安全强度虚高 | 先优化熵源,后处理仅做精炼 |
| 忽略亚稳态处理 | 输出出现毛刺或偏差漂移 | 增加同步级数,并做时序分析 |
| 压缩比设置过高 | 输出熵率不足,且吞吐率浪费 | 根据最小熵率计算压缩比,留2倍裕量 |
| 健康测试仅做上电自检 | 运行中熵源退化无法及时发现 | 实现连续在线监测,响应时间<1ms |
| 模拟域与数字域未隔离 | 数字开关噪声耦合进熵源,降低熵率 | 独立电源域、地平面分割、增加去耦电容 |
总结复盘
经典TRNG架构经过数十年的验证,是当前最可靠、最可审计的硬件随机数生成方案。其核心设计哲学是“分层负责、逐级验证”:模拟熵源提供物理随机性,数字化忠实转换,后处理精炼输出,健康测试保障运行安全。每一层都有明确的验收标准,任何一层的缺陷都无法通过其他层完全弥补。
在实际工程中,建议遵循以下设计流程:
最后,务必牢记:TRNG是安全系统的信任根,其设计不能以“通过测试”为唯一目标,而应以“在最坏条件下仍能提供可证明的随机性”为准则。只有深刻理解每个模块的物理本质和数学边界,才能设计出真正值得信赖的硬件随机数发生器。