4、物理不可克隆函数:PUF技术在传感器芯片防篡改中的应用原理与选型
各位工程师朋友,咱们继续聊传感器身份溯源。前面几章讲了数字证书、密钥体系,这些方案都有一个共同的前提——密钥得安全地藏在芯片里。但现实是,传统的密钥存储方式,说白了就是把秘密放在一个盒子里,总有办法撬开它。
那有没有一种技术,让密钥本身就不是“存”在芯片里的,而是“长”在芯片里的?这就是我今天要讲的——物理不可克隆函数,PUF。
4.1 为什么传统密钥存储靠不住?
先说说我踩过的坑。几年前我做一款工业压力传感器,客户要求防抄板。我们用了安全芯片,把私钥写死在eFuse里。结果呢?第三方用聚焦离子束(FIB)直接把芯片顶层剥开,用电子显微镜读出了熔丝状态。密钥被提取,整个产品线被克隆,损失惨重。
传统方案的问题很明显:
- 密钥是静态数据——只要存在非易失存储器里,就有被物理读取的可能
- 存储介质有物理痕迹——eFuse、Flash、EEPROM,都能通过逆向工程读出
- 攻击手段成熟——FIB、探针台、侧信道分析,都是公开技术
4.2 PUF的核心原理:芯片的“指纹”
PUF的思路很巧妙。它不存储密钥,而是利用芯片制造过程中不可避免的物理差异来“生成”密钥。
你想想看,同一片晶圆上,相邻两个晶体管的阈值电压都会有微小差异。金属互连线的宽度、氧化层的厚度,这些参数在光刻和刻蚀过程中,会因为光的衍射、刻蚀速率的不均匀而产生随机偏差。这种偏差,就是PUF的物理熵源。
PUF的工作原理可以概括为:
- 激励(Challenge)——给PUF电路输入一个信号
- 响应(Response)——PUF电路输出一个唯一且不可预测的数值
- 激励-响应对(CRP)——每个芯片都有自己独特的CRP映射关系
这个映射关系,就是芯片的“指纹”。同一个激励,在不同芯片上会得到完全不同的响应。而且,这个响应是芯片物理结构决定的,无法复制。
4.3 主流PUF结构对比与选型
PUF不是一种单一技术,而是一类技术。不同的PUF结构,适合不同的应用场景。我根据项目经验,把几种主流PUF做了个对比。
| PUF类型 | 物理原理 | 面积开销 | 稳定性 | 典型应用 |
|---|---|---|---|---|
| 仲裁器PUF (APUF) | 路径延迟差异 | 小 | 中(受温度电压影响大) | FPGA、低端MCU |
| 环形振荡器PUF (RO PUF) | 振荡频率差异 | 中 | 高(可通过校准提升) | 传感器节点、IoT设备 |
| SRAM PUF | 上电初始状态随机性 | 极小(复用SRAM) | 中(需纠错码辅助) | 通用MCU、安全芯片 |
| 蝴蝶PUF (Butterfly PUF) | 交叉耦合门的不稳定态 | 小 | 高 | FPGA、ASIC |
| DRAM PUF | 电容放电时间差异 | 极小(复用DRAM) | 低(需频繁刷新) | 内存丰富的SoC |
我个人习惯,在工业传感器芯片上,首选环形振荡器PUF。为什么?
- 稳定性好——工业现场温度范围宽(-40°C到85°C),RO PUF通过频率计数和校准,能保持较好的稳定性
- 实现简单——不需要特殊的工艺选项,标准CMOS工艺就能做
- 面积可控——一个RO单元大概几十个门,做64位密钥也就几百个门
但RO PUF也有坑。我曾经在一个项目中,RO PUF的响应在高温下出现了比特翻转。后来加了温度补偿电路和纠错码(ECC),才把误码率降下来。
4.4 PUF在传感器防篡改中的典型应用
PUF在传感器身份溯源中,主要解决两个问题:密钥生成和芯片认证。
4.4.1 密钥生成:不需要存储的密钥
传统方案需要把密钥烧录到芯片里。用PUF,密钥是在芯片上电时“实时生成”的。
// PUF密钥生成伪代码示例
// 输入:PUF原始响应(128位)
// 输出:稳定密钥(128位)
uint8_t puf_raw_response[16]; // PUF原始响应
uint8_t stable_key[16]; // 稳定密钥
// 步骤1:读取PUF响应
puf_read(puf_raw_response);
// 步骤2:纠错码解码(BCH码)
// 辅助数据存储在片上,不泄露密钥信息
ecc_decode(puf_raw_response, helper_data, stable_key);
// 步骤3:哈希提取(消除偏置)
sha256(stable_key, stable_key);
// 现在stable_key就是芯片的唯一密钥
// 这个密钥从未被存储过,只在运行时存在寄存器中
这个流程的关键是:辅助数据(Helper Data)可以公开存储,它不泄露密钥信息。攻击者拿到辅助数据,也无法反推出PUF响应。
4.4.2 芯片认证:挑战-响应协议
在传感器接入网络时,可以用PUF做身份认证。流程是这样的:
- 注册阶段——传感器芯片在安全环境下,生成一组CRP(激励-响应对),存入服务器数据库
- 认证阶段——服务器随机选择一个激励,发送给传感器
- 响应阶段——传感器用PUF生成响应,返回给服务器
- 验证阶段——服务器比对返回的响应与数据库中存储的响应是否一致
这个协议的好处是:每次认证用的激励都不同,即使攻击者截获了一次CRP,也无法伪造下一次响应。
4.5 PUF技术的核心挑战与应对
PUF不是万能的。我在实际项目中遇到过几个棘手问题。
4.5.1 稳定性问题
PUF响应受环境因素影响很大。温度变化、电压波动、芯片老化,都会导致PUF响应发生比特翻转。
应对方法:
- 纠错码(ECC)——BCH码、Reed-Muller码,可以纠正少量比特错误
- 模糊提取器(Fuzzy Extractor)——结合ECC和哈希,从有噪声的PUF响应中提取稳定密钥
- 温度补偿——在RO PUF中,用参考频率做归一化
4.5.2 建模攻击
有些PUF结构(比如APUF)的激励-响应关系,可以用机器学习模型拟合。攻击者收集一定数量的CRP后,就能预测新的响应。
应对方法:
- 使用非线性PUF——比如XOR APUF、Feed-Forward APUF,增加建模难度
- 限制CRP暴露次数——每个激励只用一次
- 结合哈希函数——对PUF响应做哈希处理,破坏线性关系
4.5.3 老化效应
芯片长时间工作后,晶体管参数会漂移,PUF响应也会变化。
应对方法:
- 定期校准——在系统空闲时,重新生成辅助数据
- 冗余设计——用多个PUF单元做投票,取多数结果
- 选择抗老化的PUF结构——蝴蝶PUF和SRAM PUF的老化特性相对较好
4.6 PUF选型决策框架
说了这么多,到底怎么选?我总结了一个简单的决策框架。
这个框架是我在多个项目中总结出来的。记住,没有完美的PUF,只有最适合你场景的PUF。
4.7 小结
PUF技术给工业传感器身份溯源带来了一个全新的思路——密钥不是存进去的,而是长出来的。它从根本上解决了密钥存储的安全问题。
但PUF也不是银弹。稳定性、建模攻击、老化效应,这些都是需要工程师在设计中认真对待的挑战。我个人建议,在工业场景中,把PUF作为密钥生成和芯片认证的底层技术,上层仍然需要完整的PKI体系来管理证书和信任链。
嗯,这一章就到这里。PUF的内容其实很深,后面讲到具体实现时,我还会再展开。