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 分类体系总览 PUF 物理不可克隆函数 弱 PUF 强 PUF 其他 PUF SRAM PUF DRAM PUF 仲裁器 PUF 环形振荡器 PUF 涂层 PUF 蝴蝶 PUF 核心分类依据:挑战-响应对(CRP)空间大小 弱 PUF:CRP 极少 → 密钥存储;强 PUF:CRP 指数级 → 认证 选型建议:从 SRAM PUF 入门,根据安全等级选择强 PUF

这张图把 PUF 的三大分支和典型代表都列出来了。你写方案时,可以直接用它做框架。我个人习惯在项目初期,先画这么一张图,再根据需求选具体类型。

3.6 本章小结

PUF 的分类,核心就是 CRP 空间。弱 PUF 适合密钥存储,强 PUF 适合认证。基于存储器的 PUF 实现简单,基于延时的 PUF 灵活性高,其他物理 PUF 则各有特色。

嗯,最后说一句:没有最好的 PUF,只有最适合的 PUF。选型时,一定要结合你的芯片面积、功耗预算、安全等级来权衡。我在项目里踩过的坑,就是最好的教材——希望你能少走弯路。