3. PUF分类体系:从原理到选型
PUF 的分类,说白了就是看它怎么把物理差异变成数字指纹。我刚开始接触 PUF 时,也被各种名字搞晕过。后来在项目里摸爬滚打,才慢慢理清脉络。今天咱们就把它拆开揉碎了讲。
核心分类维度:挑战-响应对(CRP)空间的大小,是区分强 PUF 和弱 PUF 的根本标准。
3.1 强 PUF vs 弱 PUF:核心差异
强 PUF 和弱 PUF 的区别,我习惯用一个比喻:弱 PUF 就像一把固定的钥匙,只能开一把锁;强 PUF 则像一把万能钥匙,能应对无数种挑战。
| 对比维度 | 弱 PUF | 强 PUF |
|---|---|---|
| CRP 数量 | 极少(通常 1 个或几个) | 极多(指数级增长) |
| 典型应用 | 密钥存储、芯片标识 | 认证、密钥交换 |
| 抗建模攻击 | 天然抵抗(CRP 太少) | 需要额外防护 |
| 面积开销 | 小 | 较大 |
| 典型代表 | SRAM PUF、DRAM PUF | 仲裁器 PUF、环形振荡器 PUF |
我在一个安全芯片项目里,就吃过选型的亏。当时想用强 PUF 做密钥生成,结果发现 CRP 空间太大,反而给攻击者留下了建模的机会。后来换回弱 PUF + 辅助数据方案,才解决问题。嗯,这里要注意:不是 CRP 越多越好,关键看场景。
3.2 基于存储器的 PUF
这类 PUF 利用存储器单元的上电随机状态。我个人最喜欢 SRAM PUF,因为它不需要额外电路,量产成本低。
3.2.1 SRAM PUF
SRAM 单元在上电瞬间,两个交叉耦合反相器会进入一个亚稳态。由于工艺偏差,最终会偏向 0 或 1。这个偏好的分布是随机的,但又是芯片独有的。
实战技巧:SRAM PUF 的响应会受温度和电压影响。我建议在芯片初始化时,多次上电采集数据,用多数表决法生成稳定的密钥。我曾经遇到过一批芯片,低温下误码率飙升,后来加了温度补偿才搞定。
关键参数:
- 唯一性:片间汉明距离接近 50%
- 可靠性:典型误码率 5%-15%(需要纠错)
- 面积:每比特约 6 个晶体管
3.2.2 DRAM PUF
DRAM PUF 利用的是电容放电时间的差异。我记得有个项目用 DRAM 做 PUF,发现它的保留时间(retention time)在不同单元间差异很大,这个差异就是天然的指纹。
相比 SRAM PUF,DRAM PUF 的优势是:
- 容量更大(DRAM 密度高)
- 可以动态刷新(灵活性好)
- 但需要定时刷新电路,增加了复杂度
避坑指南:我曾经在 DRAM PUF 项目里踩过一个坑——DRAM 的保留时间会随温度剧烈变化。夏天测的指纹,冬天就认不出来了。后来我们加入了温度感知的刷新策略,才把可靠性提上来。
3.3 基于延时的 PUF
这类 PUF 利用信号传播路径的延时差异。你想想看,同样的电路,因为制造偏差,走线宽度、晶体管阈值电压都不一样,延时自然也不同。
3.3.1 环形振荡器 PUF
环形振荡器 PUF 的核心思想:用奇数个反相器组成振荡环,测量振荡频率。不同芯片的振荡频率会有差异。
// 环形振荡器 PUF 的典型结构
// 每个振荡器由 3-5 个反相器组成
// 通过计数器测量振荡次数
// 伪代码示例
for (i = 0; i < NUM_OSCILLATORS; i++) {
enable_ring(i);
delay(1ms); // 等待稳定
count = read_counter(i);
response[i] = (count > threshold) ? 1 : 0;
}
我在一个 FPGA 项目里用过环形振荡器 PUF。说实话,它的面积开销不小——每个振荡器需要几十个 LUT。但好处是,你可以通过选择不同的振荡器对,生成大量 CRP。
3.3.2 仲裁器 PUF
仲裁器 PUF 的结构更巧妙:两条对称的路径,输入一个上升沿,看哪个路径先到达仲裁器(通常是 D 触发器)。
关键点:
- 路径由多级多路选择器组成
- 每级的选择信号就是挑战
- 仲裁结果就是响应
为什么说仲裁器 PUF 是强 PUF?因为挑战位数每增加 1 位,CRP 空间就翻倍。一个 64 级仲裁器 PUF,理论上就有 2^64 个 CRP。但要注意,这种指数级空间也带来了建模攻击的风险。
我的经验:仲裁器 PUF 对布局布线非常敏感。我曾经在 ASIC 项目里,因为后端工具自动优化,把两条路径优化得过于对称,结果 PUF 的独特性大打折扣。后来我强制要求手动对称布线,才解决问题。
3.4 基于其他物理现象的 PUF
除了存储器和延时,还有很多物理现象可以用来做 PUF。我挑几个有代表性的说说。
| PUF 类型 | 物理原理 | 特点 | 应用场景 |
|---|---|---|---|
| 涂层 PUF | 介电层随机颗粒分布 | 抗物理探测 | 防篡改封装 |
| 蝴蝶 PUF | 交叉耦合锁存器 | 类似 SRAM PUF | FPGA 实现 |
| 量子点 PUF | 量子隧穿效应 | 极低功耗 | 物联网设备 |
| 磁 PUF | 磁隧道结电阻差异 | 非易失性 | 嵌入式存储 |
涂层 PUF 我接触得不多,但听说过一个有趣的案例:有人在芯片表面涂了一层掺有随机颗粒的介质,然后用电容传感器读取介电常数分布。这种 PUF 的优点是,一旦有人试图剥开涂层,颗粒分布就被破坏了,芯片会自动销毁密钥。
选型建议:如果你是第一次做 PUF 项目,我建议从 SRAM PUF 入手。它不需要额外电路,很多 MCU 和 FPGA 都有现成的 SRAM 可以用。等积累了经验,再考虑更复杂的延时 PUF 或物理 PUF。
3.5 知识体系总览
下面这张图,是我自己整理 PUF 分类时画的。它把整个体系串起来了,方便你快速定位。
这张图把 PUF 的三大分支和典型代表都列出来了。你写方案时,可以直接用它做框架。我个人习惯在项目初期,先画这么一张图,再根据需求选具体类型。
3.6 本章小结
PUF 的分类,核心就是 CRP 空间。弱 PUF 适合密钥存储,强 PUF 适合认证。基于存储器的 PUF 实现简单,基于延时的 PUF 灵活性高,其他物理 PUF 则各有特色。
嗯,最后说一句:没有最好的 PUF,只有最适合的 PUF。选型时,一定要结合你的芯片面积、功耗预算、安全等级来权衡。我在项目里踩过的坑,就是最好的教材——希望你能少走弯路。