第三十四章 TRNG——真随机数

第三十四章 TRNG——真随机数

目录

第三十四章 TRNG——真随机数

1 TRNG概述

1.1 简介

1.2 硬件结构

1.3 真随机与伪随机的区别

1.4 工作流程

2 应用场景

3 注意事项

4 程序设计

4.1 TRNG_IntTest例程

4.1.1 执行函数TRNG_Int()

4.1.2 配置嵌套向量中断控制器

4.1.3 使能TRNG输出功能

4.1.4 使能TRNG中断

4.1.5 设置伪随机数种子

4.1.6 启动TRNG硬件

4.1.7 中断服务函数

4.1.8 主函数main()

4.1.9 下载验证

4.2 TRNG_PollingTest例程

4.2.1 执行函数TRNG_Polling()

4.2.2 下载验证

5 总结


在当今数字化时代,信息安全已成为嵌入式系统设计中不可忽视的关键因素。从物联网设备的身份认证到加密通信的密钥生成,高质量的随机数是构建安全系统的基石。W55MH32内置的真随机数生成器(TRNG)模块为开发者提供了硬件级别的随机数解决方案。

本文将通过W55MH32 TRNG的工作原理、应用场景、程序设计等方面对真随机数进行讲解。

1 TRNG概述

1.1 简介

TRNGTrue Random Number Generator)即真随机数生成器,与伪随机数生成器(PRNG)不同,其随机性来源于物理噪声,而非确定性算法。W55MH32TRNG模块利用芯片内部的物理噪声源(如热噪声、时钟抖动等)生成不可预测的随机数,适用于加密、安全认证、随机密钥生成等对随机性要求高的场景。

1.2 硬件结构

W55MH32TRNG模块主要由以下部分组成:

  • 噪声源:通常基于MOS管的热噪声或环形振荡器的抖动,产生原始随机信号。
  • 放大与整形电路:增强噪声信号并转换为可处理的数字信号。
  • 采样电路:对噪声信号进行采样,生成原始随机比特流。
  • 熵累积器:收集采样得到的熵,积累足够的随机性。
  • 随机数生成器:将累积的熵转换为可用的随机数(如32位整数)。
  • 硬件测试与校准:确保噪声源正常工作,必要时进行校准。

1.3 真随机与伪随机的区别

随机数在计算机科学中主要分为两类——真随机和伪随机,其对比如下所示:

特性

真随机数(TRNG)

伪随机数(PRNG)

随机性来源

物理噪声(热噪声、时钟抖动)

数学算法(如线性同余法)

可预测性

不可预测(基于物理现象)

理论上可预测(已知种子和算法)

周期性

无周期性

存在周期性(周期长度取决于算法)

硬件依赖

需要特定硬件模块

纯软件实现

应用场景

加密、安全认证、密码学

模拟、游戏、非安全场景随机数

1.4 工作流程

TRNG的工作流程可以分为以下几个关键步骤:

  1. 噪声采集阶段:多个环形振荡器同时工作,其输出频率的微小差异被捕获并放大。这些差异作为原始随机信号输入到后续处理电路。
  2. 数字化阶段:模拟的随机信号被采样并转换为数字比特流。采样过程通常使用高速时钟进行,确保捕获到足够的随机信息。
  3. 随机性增强阶段:原始数字信号可能存在统计偏差,需要通过算法进行后处理。W55MH32TRNG使用一种称为"异或树"的结构,将多个环形振荡器的输出进行异或运算,增强随机性并消除可能的偏差。
  4. 质量检测阶段:生成的随机数经过实时统计测试,确保其符合随机性标准。W55MH32TRNG实现了两种主要测试:
    1. 单比特频率测试:确保01的出现概率接近50%
    2. 游程测试:检测连续相同比特的长度是否符合随机分布
  5. 输出阶段:通过质量检测的随机数被存储在数据寄存器中,供CPU读取使用。当
### TRNG 生成随机数的方法及实现 #### 使用 `trng4` 库中的 Yarn2 随机数生成器 为了展示如何使用 `trng4` 库来生成随机数,下面给出一个完整的 C++ 示例代码。这段代码创建了一个 Yarn2 类型的伪随机数生成器并输出了十个随机整数值。 ```cpp #include <trng/yarn2.hpp> #include <iostream> int main() { trng::yarn2 rng; // 创建一个Yarn2类型的随机数生成器 for (int i = 0; i != 10; ++i) std::cout << rng() << "\n"; // 输出10个随机数 } ``` 此段代码展示了基本的应用场景,在实际应用中可能还需要考虑种子初始化等问题以增强安全性[^1]。 #### 基于无限噪声的真实随机数生成器(TRNG) 对于更高层次的安全需求,则可以转向基于物理现象如热噪声的真实随机数生成设备。例如,“无限噪声TRNG”,其通过捕捉电子元件内部固有的随机波动作为熵源,进而转换成二进制序列供计算机读取。这类装置通常具备良好的抗干扰能力,并能持续稳定地供应高质量随机比特流[^2]。 具体到操作层面,如果选择了像“无限噪声TRNG”这样的硬件解决方案,那么开发者只需按照官方提供的文档说明完成相应的配置工作即可开始获取随机数据。一般而言,这涉及到安装配套软件包或驱动程序以便操作系统能够识别外设;之后便可以通过标准API接口调用来访问由该设备所产生的随机数值[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值