开源测试代码

HonPUF 所有测试代码完全开源,可自行编译、运行、验证

qemu_sram_puf_test — QEMU 仿真测试(重点)

这是 HonPUF 的核心开源项目,在 QEMU 模拟的 MCU 上完成完整的 PUF 注册与密钥重建流程演示。

  • 支持 ARM Cortex-M0 和 RISC-V(RV32IMC) 两种 QEMU 模拟目标
  • 包含 9 种预计算布局,可直接选型测试
  • 内置 BER 直方图SRAM PUF噪声模型,可评估不同噪声条件下的 FRR
  • vscode 工程。支持独立编译,windows:build_and_run.bat,linux:build_and_run.sh

下载 zip

PufDemo_ESP32C3_2blob_ok

基于 ESP32-C3(RISC-V)的 HonPUF 测试例程,vscode + esp idf工程。含ESP32C3特别优化代码。

下载 zip

PufDemo_STM32F100

基于 STM32F100(Cortex-M3)的 HonPUF 测试例程,vscode+gcc 工程。

下载 zip

PufDemo_STM32F405

基于 STM32F405(Cortex-M4)的 HonPUF 测试例程,vscode+gcc 工程。

下载 zip

PufDemo_microbit

基于 Micro:bit(nRF51822, Cortex-M0)的 HonPUF 测试例程,vscode+gcc 工程。

下载 zip

噪声模型

HonPUF 使用两种噪声模型来模拟 SRAM 上电数据的比特错误,用于 FRR 测试和布局参数评估:

二值模型-简化模型

比特分为稳定位(始终为0或1)和随机翻转位(50%的概率为0或1),调整稳定位比例,模拟不同的BER。

稳定位 80% 0 1 1 0 0 1 0 1 1 0 0 1 0 1 翻转位20% 0/1 0/1 0/1 ⇄ 50% 概率翻转

直方图模型-更接近真实SRAM PUF的模型

用一个数组描述不同翻转概率的比特占比:桶的宽度表示该翻转概率的比特有多少,高度表示翻转概率本身。

100% 50% 0% 翻转概率 比特总数 永不翻转 最多 必定翻转

代码中内置了 Consumer、Industrial、Automotive、Extreme 及多个 Hell 级别直方图(如 hell-35 ~ hell-47),覆盖从低噪声到极端噪声的完整范围。

使用前需对直方图进行归一化检测:确认各元素之和在合理范围内,确保 CDF 映射到完整的 uint32 区间,避免概率分布失真。