开源测试代码
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
噪声模型
HonPUF 使用两种噪声模型来模拟 SRAM 上电数据的比特错误,用于 FRR 测试和布局参数评估:
二值模型-简化模型
比特分为稳定位(始终为0或1)和随机翻转位(50%的概率为0或1),调整稳定位比例,模拟不同的BER。
直方图模型-更接近真实SRAM PUF的模型
用一个数组描述不同翻转概率的比特占比:桶的宽度表示该翻转概率的比特有多少,高度表示翻转概率本身。
- 第 0 个元素 → 翻转概率 0%,第 127 个元素 → 翻转概率 100%
- 中间元素等间距分布,第 i 个元素对应翻转概率 i/127
- 元素值是归一化计数,所有元素的值总和是100%
- 每个元素的值,表示该翻转概率的比特占多少百分比
- 直方图的数组,既可以是浮点数,也可以是整数,根据用户需求选择,示例代码用的uint32_t。
代码中内置了 Consumer、Industrial、Automotive、Extreme 及多个 Hell 级别直方图(如 hell-35 ~ hell-47),覆盖从低噪声到极端噪声的完整范围。
使用前需对直方图进行归一化检测:确认各元素之和在合理范围内,确保 CDF 映射到完整的 uint32 区间,避免概率分布失真。