第二章:物理不可克隆函数(PUF)基础
各位同学,今天我们来聊聊芯片安全里一个特别有意思的东西——物理不可克隆函数,简称PUF。说实话,我第一次接触这个概念时,觉得这名字起得挺唬人的。但搞明白之后,你会发现它其实是个很巧妙的设计思路。
2.1 PUF原理:芯片的“指纹”
什么叫物理不可克隆?说白了,就是每个芯片天生自带一个独一无二的“身份ID”。就像人的指纹一样,世界上找不出两个完全相同的芯片。
为什么会这样?嗯,这得从芯片制造工艺说起。即便我们用同一套光罩、同一台设备、同一批晶圆,生产出来的芯片在微观层面也会有细微差异。比如晶体管的阈值电压、氧化层厚度、互连线的电阻电容值,这些参数都会存在随机波动。
我当年第一次流片回来,测试时发现同一批芯片的SRAM上电初始值居然不一样。当时还以为是设计出了问题,后来才意识到——这不就是天然的PUF嘛!
核心思想:利用芯片制造过程中的工艺偏差,产生一个不可预测、不可克隆的物理特征。这个特征可以用于身份认证和密钥生成。
PUF的几个关键特性:
- 唯一性:不同芯片的PUF响应不同
- 不可克隆:即使知道设计细节,也无法制造出相同的PUF
- 不可预测:无法通过数学模型预测PUF的输出
- 可靠性:同一芯片在不同环境下应产生稳定的响应
2.2 基于SRAM的PUF实现
在所有PUF实现方式中,SRAM PUF是最经典、最常用的一种。为什么选SRAM?因为几乎每个芯片里都有SRAM,不需要额外增加硬件成本。
SRAM PUF的原理其实很简单。每个SRAM单元由两个交叉耦合的反相器组成。上电时,这两个反相器会竞争,最终稳定在0或1状态。理论上,这个状态应该是随机的。但实际中,由于工艺偏差,每个单元会有固定的偏置倾向。
我给你们画个简化的示意图:
SRAM单元上电行为:
理想情况:50%概率为0,50%概率为1
实际情况:由于工艺偏差,某些单元偏向0,某些偏向1
示例(8个SRAM单元的上电值):
芯片A: 1 0 1 1 0 0 1 0
芯片B: 0 1 0 1 1 0 0 1
芯片C: 1 1 0 0 1 1 0 0
你看,三个芯片的上电模式完全不同。这就是SRAM PUF的原始响应。
实战经验:我在做一款IoT安全芯片时,用了4KB的SRAM作为PUF。但要注意,不是所有SRAM单元都稳定。有些单元在不同温度下会“翻盘”。所以我们需要做稳定性筛选,只保留那些偏置强的单元。
SRAM PUF的实现步骤:
- 上电采样:在芯片上电瞬间,读取SRAM的初始值
- 稳定性筛选:多次上电,只保留那些每次都稳定的单元
- 纠错编码:使用纠错码(如BCH码)处理原始响应
- 密钥生成:将稳定的PUF响应作为密钥种子
2.3 PUF在密钥生成中的应用
好了,现在我们知道PUF能产生芯片唯一的响应。那怎么用它来生成密钥呢?
传统做法是把密钥存在Flash或EEPROM里。但这样做有个致命问题——攻击者可以用探针、聚焦离子束等手段直接读出密钥。我见过一个案例,某公司把AES密钥明文存在Flash里,结果被竞争对手用简单的微探针台就破解了。
PUF的方案就聪明多了:密钥不是“存”在芯片里,而是“算”出来的。每次需要密钥时,通过PUF实时生成。用完就消失,攻击者根本没机会读到。
重要提醒:PUF的原始响应不能直接当密钥用!因为原始响应有噪声,不同环境下可能产生1-2位的翻转。必须经过纠错和哈希处理。
典型的PUF密钥生成流程:
1. 上电 → 读取SRAM PUF响应(128位原始数据)
2. 纠错 → 使用辅助数据(Helper Data)纠正错误位
3. 哈希 → 对纠错后的数据进行SHA-256哈希
4. 输出 → 得到256位安全密钥
这里有个关键点:辅助数据。辅助数据是在芯片注册阶段生成的,它记录了PUF响应的纠错信息。但辅助数据本身不泄露密钥信息,可以公开存储。
| 存储方式 | 安全性 | 成本 | 抗物理攻击 |
|---|---|---|---|
| Flash存储密钥 | 低 | 低 | 差 |
| eFuse存储密钥 | 中 | 中 | 一般 |
| PUF生成密钥 | 高 | 低(复用SRAM) | 好 |
我个人习惯在PUF密钥生成后,再做一次密钥派生。比如用HKDF算法,把PUF密钥和芯片ID、应用场景等信息一起派生,这样即使PUF密钥泄露,攻击者也很难在其他场景下使用。
避坑指南:我曾经遇到过一个坑——SRAM PUF在低温下稳定性会变差。零下40度时,某些单元的偏置方向会改变。后来我们加了温度补偿电路,并在筛选阶段增加了温度循环测试。这个教训告诉我:PUF的可靠性验证一定要覆盖全温度范围。
最后总结一下PUF的优势:
- 零存储:密钥不在非易失存储器中,物理攻击无效
- 低成本:复用芯片现有SRAM,几乎零硬件开销
- 高安全:每次上电密钥不同,防重放攻击
- 抗克隆:即使拿到设计文件,也无法复制PUF
嗯,PUF这部分内容就讲到这里。下一章我们会深入讨论PUF的可靠性问题,以及如何设计一个工业级的PUF密钥管理系统。到时候我会分享更多实战中的踩坑经验。