W55MH32 应用笔记: W55MH32 的真随机数发生器 (TRNG)
目录
W55MH32 应用笔记: W55MH32 的真随机数发生器 (TRNG)
概述与工作原理
W55MH32 的 TRNG 通过利用内部物理过程产生真正的随机性来源。虽然具体的熵源是芯片内部设计的一部分,但其整体工作流程遵循硬件 TRNG 的标准架构:
- 熵源(Entropy Source):TRNG 利用内部模拟噪声源(可能基于热噪声或时钟抖动)产生不可预测的电信号。这个信号是随机数生成的基础。
- 数字化器(Digitizer):来自熵源的模拟信号通过数字化器,将物理噪声转换为原始的二进制数据流。这些原始数据虽然随机,但可能仍存在统计偏差。
- 调节器(Conditioner):原始二进制数据随后进入数字调节器。这个硬件模块执行后处理,以消除任何偏差,并确保最终的随机比特流具有均匀分布。结果就是生成一个高质量、加密安全的随机数,并存储在 TRNG 的数据寄存器中。
W55MH32 的 TRNG 旨在符合行业标准,为嵌入式应用提供可靠且安全的随机性来源。
W55MH32 TRNG 在 TLS/SSL 中的作用
W55MH32 的 TRNG 是在芯片上安全实现 TLS/SSL 等协议的关键。在网络通信中,这些协议需要强大的随机性来源来建立安全连接。TRNG 通过为以下关键步骤提供不可预测的必要值来履行这一职责:
- 会话密钥生成:在 TLS 握手过程中,客户端和服务器都会交换用于派生共享会话密钥的随机数。W55MH32 的 TRNG 确保其贡献的随机值是完全不可预测的,从而防止攻击者猜测或重现会话密钥。
- 一次性随机数(Nonces):TRNG 用于生成随机的"一次性随机数",以防止重放攻击,并确保会话中的每条消息都是唯一且真实的。
通过提供基于硬件的、加密安全的随机性来源,W55MH32 允许开发人员构建安全、可信的网络设备。
应用
W55MH32 的 TRNG 功能使其非常适合各种注重安全的应用,包括:
- 物联网 (IoT) 安全:为数据传输和身份验证生成唯一的设备 ID 和安全的加密密钥。
- 网络设备:为安全启动过程和建立加密连接提供可信的随机性来源。
- 加密库:为固件和其他与安全相关的软件中使用的伪随机数发生器 (PRNG) 提供种子。
- 安全通信:为 VPN、安全电子邮件和其他加密数据流生成密钥和一次性随机数。
W55MH32 TRNG 的操作流程
W55MH32 提供了两种与 TRNG 外设交互的主要方法:轮询(Polling)和中断驱动(Interrupt-Driven)。用户提供的代码片段清楚地展示了这两种方法。
1. 轮询(Polling)方式
TRNG_Polling 函数演示了 CPU 如何主动等待随机数准备就绪。
// 代码示例
TRNG_Start();
while (1) {
if (TRNG_Get(Buf) == 0) {
printf("Generated 128-bit random number\n");
TRNG_ClearITPendingBit();
break;
}
}
- 流程:函数启动 TRNG (TRNG_Start),然后进入一个无限 while 循环。在循环内部,它不断调用 TRNG_Get(Buf)。这个函数是一个轮询机制,用于检查 TRNG 上的状态标志。
- 结果:CPU 专注于此任务,不断检查随机数是否准备就绪。printf 语句仅在 TRNG_Get() 返回 0 时执行,这表示已成功生成并存储了新的 128 位随机数到 Buf 数组中。调用 TRNG_ClearITPendingBit 是必要的,用于重置"就绪"标志,以便 TRNG 可以生成下一个随机数。

2. 中断驱动(Interrupt-Driven)方式
TRNG_Int 函数演示了一种更高效的中断驱动方法。
// 代码示例
TRNG_Out();
NVIC_Configuration();
TRNG_ITConfig(ENABLE);
TRNG_SetPseudoRandom(0X12345560);
-
流程:
此函数配置 TRNG 在完成任务时向 CPU 发出信号。它启用 TRNG (TRNG_Out),配置 NVIC (NVIC_Configuration) 来处理中断,并启用 TRNG 的中断功能 (TRNG_ITConfig)。 -
结果:
调用TRNG_Int后,主程序可以继续执行其他任务或进入空闲状态。CPU 不会主动轮询。当 TRNG 成功生成随机数时,它会触发一个中断。一个单独的中断服务程序 (ISR)(代码中未显示)随后会执行,从 TRNG 寄存器中读取随机数。TRNG_SetPseudoRandom(0X12345560)这行代码很可能是用于测试或伪随机模式的特定功能,用于调试或验证目的。

总的来说,中断驱动方法效率很高,因为它允许 CPU 在 TRNG 在后台工作时执行其他操作。轮询方法实现起来更简单,但会浪费 CPU 周期,通常不适用于复杂的应用。
结论
W55MH32 的硬件 TRNG 是一项强大的功能,提升了其在安全网络和嵌入式应用中的能力。通过提供真正的物理随机性来源,它为加密操作(从 TLS/SSL 密钥生成到安全硬件认证)提供了最高级别的安全性。WIZnet W55MH32 灵活的 API,支持高效的中断驱动和直接的轮询方法,使开发人员能够将这一关键安全功能无缝集成到他们的项目中,确保其系统在日益互联的世界中的完整性和机密性。
8517

被折叠的 条评论
为什么被折叠?



