GD32 MCU的真随机数发生器(TRNG)
GD32 MCU的真随机数发生器(TRNG)
文章目录
真随机数(True Random Numbers)是指 完全基于物理世界中的不可预测过程生成的随机数序列,具有 本质上的不可重复性、不可预测性和统计独立性。其核心特征和应用原理如下:
一、定义与核心特征
- 不可预测性
- 真随机数的生成依赖于物理系统的固有随机性(内禀随机性),例如量子叠加态的坍缩、热噪声或光子行为。即使完全知晓物理系统的初始状态和生成机制,也无法预测下一个输出结果。
- 对比伪随机数:伪随机数由确定性算法(如线性同余法)生成,一旦知道种子值和算法,整个序列可完全复现。
- 无周期性与不可重复性
- 真随机数序列没有周期性,且无法重现相同的序列。例如,基于量子测量的随机数,每次观测结果都是独立的随机事件。
- 统计独立性
- 序列中的每个数不仅服从均匀分布,且与其他数及外部变量(如环境温度、设备状态)完全无关,满足密码学安全的“独立性”要求。
二、物理机制:量子与经典随机性
- 量子随机性(内禀随机性)
- 量子过程:如单光子通过分束器时,透射或反射的概率各为50%,结果由量子力学的不确定性决定,与测量精度无关。
- 设备无关随机数扩展:通过量子纠缠和贝尔不等式检验(如CHSH值>2),确保生成的随机数与设备缺陷或供应商恶意操作无关。
- 经典物理过程的局限性
- 抛硬币、电子噪声等宏观过程看似随机,但本质是表面随机性。若精确控制初始条件(如抛掷角度、风速),结果可预测。
- 此类方法生成的随机数属于伪随机或弱随机,仅适用于低安全场景(如游戏随机化)。
三、生成方法
- 硬件随机数发生器(HRNG/TRNG)
- 物理源:利用热噪声、放射性衰变、光量子效应等物理现象,通过传感器和模数转换器输出随机比特。
- 改进技术:因原始物理信号可能存在偏差,常结合算法(如哈希函数)优化统计分布,通过国家密码管理局的随机性检测。
- 量子随机数发生器(QRNG)
- 基于量子态测量(如单光子路径选择),是目前唯一被严格证明具备真随机性的方法。
四、应用场景
- 密码学:会话密钥生成、数字签名、加密算法初始化,依赖真随机数防止密钥被推测。
- 安全认证:智能卡与读卡器之间的双向认证,需真随机数抵御重放攻击。
- 高精度模拟:蒙特卡罗仿真、金融风险评估,要求输入完全独立。
五、与伪随机数的对比
特性 | 真随机数 | 伪随机数 |
---|---|---|
来源 | 物理过程(量子噪声、热噪声) | 数学算法(如梅森旋转器) |
可预测性 | 完全不可预测 | 已知种子和算法即可预测 |
周期性 | 无周期 | 有长周期(如梅森旋转器为2^19937-1) |
生成速度 | 较慢(依赖物理过程) | 极快(纯计算) |
适用场景 | 密码学、安全密钥 | 游戏、仿真、一般随机抽样 |
六、局限性
- 生成效率低:物理过程需采样和转换,速率低于伪随机数生成器。
- 成本高:需专用硬件(如量子光学设备),难以集成到普通计算机。
- 需后处理:原始物理信号可能含偏差,需算法优化分布均匀性。
GD32 MCU的真随机数发生器(TRNG)通过物理噪声源生成不可预测的随机数,其核心原理和实现流程如下:
⚙️ 七、物理熵源原理
- 模拟噪声采集
TRNG依赖硬件电路中的连续模拟噪声(如半导体热噪声、时钟抖动)作为随机性来源。这些噪声源于量子级别的物理现象(电子热运动),具有天然不可预测性。 - 熵源特性
- 真随机 vs 伪随机:相同输入条件下,真随机数输出必然不同;伪随机数依赖算法和种子,输入相同时输出固定。
- 不可重复性:噪声的量子特性确保每次生成的随机数独立且无规律。
🔧 八、硬件实现流程(以GD32F450 GD32L233为例)
GD MCU真随机数发生器模块(TRNG)能够通过连续模拟噪声生成一个32位的随机数值。
8.1. 初始化与时钟使能
-
GD32F450:直接使能TRNG时钟:
rcu_periph_clock_enable(RCU_TRNG); // 开启TRNG时钟 trng_enable(); // 激活TRNG模块
-
GD32L233:需额外启动高频时钟源(IRC48M)支持噪声采样:
rcu_osci_on(RCU_IRC48M); // 启动IRC48M时钟 rcu_