1. PUF基础概念:物理不可克隆函数的定义、起源与核心特性
各位同学,咱们今天聊点硬核的——PUF。说白了,物理不可克隆函数(Physically Unclonable Function)就是芯片的“指纹”。
我第一次接触PUF是在一个安全芯片项目里。客户要求密钥必须“出生即自带”,不能存进Flash或EEPROM。我当时想,这不就是既要马儿跑,又要马儿不吃草吗?后来翻到一篇2002年的论文,才恍然大悟——原来芯片本身就能当密钥源。
1.1 什么是物理不可克隆函数?
PUF不是一个数学函数,而是一个物理实体。它利用芯片制造过程中不可避免的工艺偏差——比如晶体管的阈值电压波动、金属线的宽度差异、氧化层厚度不均——来生成唯一的“响应”。
你给它一个“挑战”(Challenge),它返回一个“响应”(Response)。这个映射关系,就是PUF的核心。
关键点:同一片晶圆上,相邻两颗芯片的PUF响应都不同。这就是“不可克隆”的物理基础。
我习惯把PUF比作人的指纹。指纹是出生时就有的,不需要你记住它;PUF也一样,芯片一上电,响应就自然产生,不需要额外存储密钥。
1.2 PUF的起源与发展
PUF这个概念最早可以追溯到2001年。当时MIT的R. Pappu博士在他的博士论文里提出了“物理单向函数”的想法。嗯,那时候还不叫PUF。
真正让PUF火起来的,是2002年的一篇ISSCC论文。作者用光学PUF做了个实验——用激光照射一个透明介质,散射出来的干涉图案就是响应。效果惊人,但实用性嘛……你想想看,谁会在手机芯片里装个激光器?
后来,硅基PUF出现了。2004年,Intel的B. Gassend等人提出了基于芯片延迟的PUF结构。这玩意儿才真正适合量产。
| 时间 | 里程碑 | 我的评价 |
|---|---|---|
| 2001 | Pappu提出物理单向函数 | 开创性工作,但太学术 |
| 2002 | 光学PUF实验成功 | 惊艳,但没法商用 |
| 2004 | 硅基延迟PUF诞生 | 这才是工业界的菜 |
| 2008 | SRAM PUF被提出 | 简单粗暴,我喜欢 |
| 2015至今 | PUF进入量产阶段 | 终于不再是实验室玩具 |
我在2016年帮一家IoT芯片公司做过PUF评估。当时他们选了SRAM PUF,因为不需要额外电路——芯片上电时SRAM的初始值就是天然的PUF响应。但坑也不少,后面我会细说。
1.3 PUF的核心特性
PUF有三个核心特性:唯一性、不可克隆性、随机性。这三个特性缺一不可,否则就不能叫PUF。
1.3.1 唯一性
唯一性,说白了就是“每颗芯片都不一样”。衡量唯一性的指标是片间汉明距离(Inter-chip Hamming Distance)。理想值是50%。
我见过一个项目,PUF的唯一性只有42%。结果呢?两颗芯片的响应太接近,密钥几乎一样。安全?不存在的。
经验之谈:唯一性低于45%的PUF,我建议直接换方案。别指望后处理能救回来。
1.3.2 不可克隆性
不可克隆性分两种:物理不可克隆和数学不可克隆。
- 物理不可克隆:你没法用另一颗芯片复制出同样的响应。即使你拿到了设计版图,制造偏差也保证了你做不出完全一样的芯片。
- 数学不可克隆:你没法用数学模型预测PUF的响应。即使你收集了100万个挑战-响应对,第100万零1个你也猜不出来。
我曾经遇到一个客户,想用机器学习建模PUF。他们收集了10万组数据,训练了一个神经网络。结果预测准确率只有52%——跟猜硬币差不多。嗯,PUF的不可克隆性不是吹的。
1.3.3 随机性
随机性,就是PUF响应的每一位都像抛硬币一样独立。衡量指标是片内汉明距离(Intra-chip Hamming Distance)和自相关函数。
随机性不好会怎样?举个例子:如果PUF响应的前8位总是0x55,那攻击者只需要猜剩下的位就行了。密钥空间直接缩水。
注意:随机性差的PUF,往往跟芯片布局有关。我曾经见过一个设计,PUF单元全部放在芯片角落,结果响应严重偏斜。后来改了布局,随机性才正常。
1.4 PUF知识体系总览
下面这张图,是我自己整理的PUF知识框架。你看一眼,就知道咱们这门课要讲什么。
1.5 为什么PUF比传统方案强?
传统密钥存储方案,无非就是写进Flash、EEPROM或者熔丝。但这些方案有个致命问题——密钥是“存”进去的。只要你能读到存储介质,密钥就暴露了。
PUF不一样。密钥不是存的,是“长”出来的。芯片断电,密钥消失;芯片上电,密钥重现。攻击者就算把芯片磨到原子层,也找不到密钥存在哪里。
我的建议:如果你的产品需要防物理攻击(比如金融终端、车规芯片),PUF几乎是唯一选择。但如果你只是做个玩具遥控器,用Flash存密钥就够了——别杀鸡用牛刀。
好了,PUF的基础概念就聊到这儿。记住三个核心特性:唯一性、不可克隆性、随机性。后面咱们会深入每种PUF的实现细节,以及怎么把它们用到密钥生成和存储里。