二、硬件信任根(RoT):PUF物理不可克隆函数、OTP存储、安全密钥注入
好,咱们接着聊硬件信任根。说白了,这就是芯片的「出生证明」和「身份证」。你想想看,一颗AI芯片要安全启动,总得有个最底层的信任锚点吧?这个锚点就是RoT。我个人习惯把RoT比作芯片的「基因」,它必须是唯一的、不可伪造的、不可篡改的。
在实际项目中,我见过太多因为RoT设计不到位导致整个安全体系崩塌的案例。嗯,这里要注意,RoT不是单一技术,而是PUF、OTP、密钥注入这三板斧的组合拳。
2.1 PUF:芯片的「指纹」
PUF,物理不可克隆函数。名字听着玄乎,其实原理很简单——利用芯片制造过程中不可避免的工艺偏差。每颗芯片的晶体管阈值电压、金属线延迟、SRAM上电初始值都不一样,这些差异就是PUF的物理熵源。
核心要点:PUF不是存储密钥,而是「生成」密钥。密钥只在需要时临时产生,用完即消失。这就避免了密钥被静态存储带来的泄露风险。
我在项目中遇到过一种典型的PUF实现——SRAM PUF。SRAM上电时,每个bit单元会随机偏向0或1,这个初始值就是芯片的「指纹」。但有个坑:SRAM PUF的稳定性受温度和电压影响很大。我曾经调试过一个案子,芯片在25℃下生成的密钥,到了85℃就变了5%的bit。这要是用在安全启动上,直接就变砖了。
避坑指南:我曾经因为PUF的可靠性评估不充分,导致量产时5%的芯片无法通过安全启动验证。后来我们加入了纠错码(ECC)和模糊提取器(Fuzzy Extractor),才把错误率压到ppm级别。记住,PUF必须配合辅助数据(Helper Data)使用,否则就是空中楼阁。
常见的PUF类型对比:
| 类型 | 熵源 | 优点 | 缺点 |
|---|---|---|---|
| SRAM PUF | SRAM上电状态 | 无需额外电路,标准CMOS工艺 | 对环境敏感,需要ECC |
| 环形振荡器PUF | 门延迟差异 | 稳定性较好 | 面积大,功耗高 |
| 仲裁器PUF | 路径延迟差异 | 响应速度快 | 易受建模攻击 |
| 蝴蝶PUF | 锁存器亚稳态 | 低功耗 | 需要校准 |
我个人偏好SRAM PUF,因为它在标准CMOS工艺下就能实现,不需要额外的模拟电路。但要注意,SRAM PUF的熵源质量取决于SRAM阵列的设计。我建议在芯片设计阶段就预留专门的PUF SRAM区域,别用系统主存来凑合。
2.2 OTP存储:一次编程,终身锁定
OTP,一次性可编程存储器。说白了就是「写一次,读无数次,再也不能改」。为什么需要OTP?因为安全启动的根密钥必须固化在芯片里,而且不能被篡改。
常见的OTP实现方式有两种:
- 熔丝(Fuse)型:通过大电流烧断金属连线,编程后不可恢复。优点是可靠性高,缺点是面积大。
- 反熔丝(Anti-fuse)型:通过击穿栅氧化层形成导电通道。优点是面积小,但编程电压高。
我记得有一次,客户要求我们在一颗AI芯片上实现安全启动。他们原本打算用Flash来存储根密钥,被我直接否了。为什么?Flash可以擦写,攻击者可以通过电压扰动、激光照射等手段篡改Flash内容。OTP一旦编程,物理上就无法改变,这才是硬件信任根该有的样子。
实战技巧:OTP的容量规划要留余量。我一般建议预留20%的冗余bit用于ECC纠错和后期功能扩展。另外,OTP的编程接口必须在量产阶段物理熔断,或者通过安全策略锁定,防止攻击者通过JTAG/SWD接口重新编程。
OTP在安全启动中的典型用途:
- 存储PUF的辅助数据(Helper Data)
- 存储芯片唯一ID
- 存储根公钥的哈希值
- 存储安全配置位(如调试接口锁定标志)
- 存储生命周期状态(如开发态→量产态→RMA态)
2.3 安全密钥注入:给芯片「上户口」
有了PUF生成密钥的能力,有了OTP存储不可变数据的能力,接下来就是密钥注入环节。这一步是在芯片量产时完成的,说白了就是给每颗芯片写入独一无二的「身份信息」。
安全密钥注入的流程,我总结为三步:
1. 芯片上电,PUF生成原始密钥K_puf
2. 使用K_puf解密从OTP读取的辅助数据,恢复出稳定密钥K_root
3. 将K_root写入安全寄存器,锁定OTP编程接口,完成注入
这里有个关键点:密钥注入必须在安全环境中进行。我参与过的一个项目,量产时直接在SMT产线上用JTAG烧录密钥,结果被中间人攻击截获了密钥流。后来我们改用了加密通道,产线设备与安全服务器之间建立TLS连接,密钥在传输过程中全程加密。
血的教训:我曾经见过一个团队,为了省成本,把密钥注入和功能测试放在同一个工站。结果测试程序有后门,攻击者通过修改测试向量,把量产芯片的密钥全部替换成了自己预设的值。嗯,从那以后,我坚持密钥注入必须使用独立的、物理隔离的安全工站。
安全密钥注入的三种模式:
| 模式 | 适用场景 | 安全等级 | 成本 |
|---|---|---|---|
| 离线注入 | 小批量、开发阶段 | 低 | 低 |
| 在线注入(加密通道) | 中批量量产 | 中 | 中 |
| 硬件安全模块(HSM)注入 | 大批量、高安全要求 | 高 | 高 |
我个人建议,AI芯片这种高价值产品,至少要用在线注入+加密通道的方案。如果涉及车规或金融安全,直接上HSM,别犹豫。
2.4 三者的协同工作
PUF、OTP、密钥注入不是孤立的,它们必须协同工作才能构建完整的硬件信任根。我画个简单的逻辑流:
芯片上电
→ PUF生成临时密钥K_puf
→ 从OTP读取辅助数据Helper Data
→ 使用K_puf和Helper Data恢复根密钥K_root
→ K_root用于验证Boot ROM签名
→ 验证通过后,解锁下一级Boot Loader
→ 锁定调试接口,防止旁路攻击
你想想看,这个链条中任何一个环节被攻破,整个安全体系就崩塌了。所以我在设计时,会特别关注以下几点:
- PUF的熵源质量必须经过充分测试,包括温度、电压、老化测试
- OTP的编程接口必须在量产完成后物理熔断
- 密钥注入过程必须有审计日志,每颗芯片的注入记录都要可追溯
- Boot ROM必须固化在芯片中,不可修改
总结一句话:硬件信任根是AI芯片安全启动的「第一块砖」。PUF提供唯一性,OTP提供持久性,密钥注入提供可控性。三者缺一不可,顺序也不能乱。
好了,这一章的内容就到这里。下一章我们聊聊安全启动的完整流程,看看Boot ROM是怎么一步步把信任链传递下去的。