概述
真随机数生成器(TRNG)可生成全熵 32 位随机数据供应用程序使用。其核心组件包括动态熵源和内部调理模块。采用物理熵源设计,从根本上免疫旁路攻击。 该模块已通过 NIST sts-2.1.2 随机性测试。
特性
TRNG 生成由熵源产生的 32 位真随机数
TRNG 内部嵌入了一个健康测试单元和一个错误管理单元
TRNG 包含两个独立的 FIFO:FIFO_NS 和 FIFO_S(更高优先级)
TRNG 的吞吐量约为 2Mbps
架构
结构框图
关键子模块功能
时钟与熵源
PLL 锁相环:提供稳定时钟信号,保障系统时序精准。
噪声源(Noise Source):利用时钟抖动等物理过程产生随机噪声信号,作为生成随机数的基础。
去偏(Debias):处理噪声信号,消除或减少偏差。
LFSR(线性反馈移位寄存器):对去偏后的信号进一步混合处理,增加随机序列复杂性和周期长度。
提取器(Extractor):从处理后的信号中提取出最终的随机数序列。
控制与安全
TRNG control:
此区域为真正的控制寄存器。
增加一个控制位,用于控制是否允许从非安全域(non-secure world)访问控制寄存器。
Control_S:
安全域的访问窗口,实际地址为 Control 寄存器。
Control_NS:
非安全域的访问窗口,实际地址为 Control 寄存器。
仅当控制寄存器(Control)中的 S 位为 A 时才可访问。
FIFO 资源分级
安全域 FIFO_S:
256 位容量,高优先级填充(数据量小于 128 位时立即补满,保证遭受恶意攻击时,安全域可以正常获取随机值)。
非安全域 FIFO_NS:
128 位容量,填充依赖安全域余量(FIFO_S ≥ 128 位时开启填充)。
数据可靠性
内置 1024 位 APT 测试缓冲区,确保输出通过 NIST sts-2.1.2 标准验证。
结构框图
关键子模块功能
时钟与熵源
PLL 锁相环:自动校准(300MHz~660MHz),提供稳定时钟基准。
模拟 ROSC(Ring Oscillator):4~7MHz 真随机时钟源,断电防漏电设计。
控制与安全
TRNG control:
此区域为真正的控制寄存器。
增加一个控制位,用于控制是否允许从非安全域(non-secure world)访问控制寄存器。
Control_S:
安全域的访问窗口,实际地址为 Control 寄存器。
Control_NS:
非安全域的访问窗口,实际地址为 Control 寄存器。
仅当控制寄存器(Control)中的 S 位为 A 时才可访问。
FIFO 资源分级
安全域 FIFO_S:
256 位容量,高优先级填充(数据量小于 128 位时立即补满,保证遭受恶意攻击时,安全域可以正常获取随机值)。
非安全域 FIFO_NS:
128 位容量,填充依赖安全域余量(FIFO_S ≥ 128 位时开启填充)。
数据可靠性
内置 1024 位 APT 测试缓冲区,确保输出通过 NIST sts-2.1.2 标准验证。
结构框图
关键子模块功能
时钟与熵源
PLL 锁相环:自动校准(300MHz~660MHz),提供稳定时钟基准。
模拟 ROSC(Ring Oscillator):4~7MHz 真随机时钟源,断电防漏电设计。
控制与安全
TRNG control:
此区域为真正的控制寄存器。
增加一个控制位,用于控制是否允许从非安全域(non-secure world)访问控制寄存器。
Control_S:
安全域的访问窗口,实际地址为 Control 寄存器。
Control_NS:
非安全域的访问窗口,实际地址为 Control 寄存器。
仅当控制寄存器(Control)中的 S 位为 A 时才可访问。
FIFO 资源分级
安全域 FIFO_S:
256 位容量,高优先级填充(数据量小于 128 位时立即补满,保证遭受恶意攻击时,安全域可以正常获取随机值)。
非安全域 FIFO_NS:
128 位容量,填充依赖安全域余量(FIFO_S ≥ 128 位时开启填充)。
数据可靠性
内置 1024 位 APT 测试缓冲区,确保输出通过 NIST sts-2.1.2 标准验证。
结构框图
关键子模块功能
时钟与熵源
PLL 锁相环:自动校准(300MHz~660MHz),提供稳定时钟基准。
模拟 ROSC(Ring Oscillator):4~7MHz 真随机时钟源,断电防漏电设计。
控制与安全
TRNG control:
此区域为真正的控制寄存器。
增加一个控制位,用于控制是否允许从非安全域(non-secure world)访问控制寄存器。
Control_S:
安全域的访问窗口,实际地址为 Control 寄存器。
Control_NS:
非安全域的访问窗口,实际地址为 Control 寄存器。
仅当控制寄存器(Control)中的 S 位为 A 时才可访问。
FIFO 资源分级
安全域 FIFO_S:
256 位容量,高优先级填充(数据量小于 128 位时立即补满,保证遭受恶意攻击时,安全域可以正常获取随机值)。
非安全域 FIFO_NS:
128 位容量,填充依赖安全域余量(FIFO_S ≥ 128 位时开启填充)。
数据可靠性
内置 1024 位 APT 测试缓冲区,确保输出通过 NIST sts-2.1.2 标准验证。
结构框图
关键子模块功能
时钟与熵源
PLL 锁相环:自动校准(300MHz~660MHz),提供稳定时钟基准。
模拟 ROSC(Ring Oscillator):4~7MHz 真随机时钟源,断电防漏电设计。
控制与安全
TRNG control:
此区域为真正的控制寄存器。
增加一个控制位,用于控制是否允许从非安全域(non-secure world)访问控制寄存器。
Control_S:
安全域的访问窗口,实际地址为 Control 寄存器。
Control_NS:
非安全域的访问窗口,实际地址为 Control 寄存器。
仅当控制寄存器(Control)中的 S 位为 A 时才可访问。
FIFO 资源分级
安全域 FIFO_S:
256 位容量,高优先级填充(数据量小于 128 位时立即补满,保证遭受恶意攻击时,安全域可以正常获取随机值)。
非安全域 FIFO_NS:
128 位容量,填充依赖安全域余量(FIFO_S ≥ 128 位时开启填充)。
数据可靠性
内置 1024 位 APT 测试缓冲区,确保输出通过 NIST sts-2.1.2 标准验证。
结构框图
关键子模块功能
时钟与熵源
PLL 锁相环:提供稳定时钟信号,保障系统时序精准。
噪声源(Noise Source):利用时钟抖动等物理过程产生随机噪声信号,作为生成随机数的基础。
去偏(Debias):处理噪声信号,消除或减少偏差。
LFSR(线性反馈移位寄存器):对去偏后的信号进一步混合处理,增加随机序列复杂性和周期长度。
提取器(Extractor):从处理后的信号中提取出最终的随机数序列。
控制与安全
TRNG control:
此区域为真正的控制寄存器。
增加一个控制位,用于控制是否允许从非安全域(non-secure world)访问控制寄存器。
Control_S:
安全域的访问窗口,实际地址为 Control 寄存器。
Control_NS:
非安全域的访问窗口,实际地址为 Control 寄存器。
仅当控制寄存器(Control)中的 S 位为 A 时才可访问。
FIFO 资源分级
安全域 FIFO_S:
256 位容量,高优先级填充(数据量小于 128 位时立即补满,保证遭受恶意攻击时,安全域可以正常获取随机值)。
非安全域 FIFO_NS:
128 位容量,填充依赖安全域余量(FIFO_S ≥ 128 位时开启填充)。
数据可靠性
内置 1024 位 APT 测试缓冲区,确保输出通过 NIST sts-2.1.2 标准验证。
使用说明
若系统需启用安全属性,建议将 TRNG 设置为安全模式,确保其控制寄存器仅允许安全域(Secure World)访问,防止非安全域(Non-Secure World)非法操作。
当安全域与非安全域同时请求大量随机数据时:
来自安全域的请求会优先得到响应(更高优先级)。
安全域请求处理完毕后,才会响应来自非安全域的请求。
API
API |
描述 |
参数 |
---|---|---|
_rand() |
获取单个32位真随机数 |
无 |
TRNG_get_random_bytes() |
获取指定长度的随机字节流,优化处理非对齐内存访问 |
|
TRNG_get_random_bytes_f_rng() |
为用户提供的,可以作为 mbedtls 标准 RNG 函数签名的适配器 |
|
__wrap_rand() |
可以替代标准库 rand(),返回值范围:0 ≤ n ≤ __RAND_MAX (当前为 0x7FFFFFFF) |
无 |