物理不可克隆函数(PUF)基础
各位好,欢迎来到第二章。上一章我们聊了防克隆的整体图景,这一章咱们要深入核心——物理不可克隆函数,也就是 PUF。
说实话,我第一次听到“物理不可克隆”这个词时,心里想的是:“这玩意儿真能防克隆?芯片不都是流水线造出来的吗?”后来踩过坑、流过片,才明白这里面的门道。今天我就把 PUF 的底裤扒开,给你讲清楚它到底是什么、凭什么不可克隆、以及这些特性从哪来。
2.1 PUF 的定义:芯片的“物理指纹”
PUF,全称 Physical Unclonable Function。翻译过来就是“物理不可克隆函数”。
但这个名字有点绕。我更喜欢叫它——芯片的物理指纹。
你想想看,人的指纹为什么能用来识别身份?因为每个人的指纹纹路是独一无二的,而且几乎不可能被完全复制。PUF 也是这个道理。它利用芯片制造过程中不可避免的物理差异,给每一颗芯片生成一个独一无二的“身份标识”。
从数学角度看,PUF 是一个输入-输出映射系统:
- 输入:称为“挑战”(Challenge),通常是一组电信号或比特串
- 输出:称为“响应”(Response),是芯片对该挑战的物理反应结果
- 映射关系:由芯片的物理微观结构决定,而非逻辑算法
用公式表示就是:R = PUF(C),其中 C 是挑战,R 是响应。
关键点:PUF 不是一个存储在芯片里的密钥,而是一个“函数”。同样的挑战输入,同一颗芯片永远给出同样的响应;但换一颗芯片,哪怕来自同一晶圆、同一批次,响应也会完全不同。
我在项目中遇到过不少工程师把 PUF 当成“存储密钥的 ROM”,结果设计出来的方案漏洞百出。记住:PUF 是动态生成的,不是静态存储的。这个区别至关重要。
2.2 核心特性:三大支柱
PUF 之所以能成为防克隆的基石,靠的是三个核心特性。缺一个,它就是个普通电路。
2.2.1 唯一性
唯一性,说白了就是:每颗芯片的 PUF 响应都不同。
衡量唯一性的指标叫“片间汉明距离”(Inter-chip Hamming Distance)。理想情况下,不同芯片对同一挑战的响应,应该有 50% 的比特位不同。
| 指标 | 理想值 | 实际可接受范围 |
|---|---|---|
| 片间汉明距离 | 50% | 45% - 55% |
| 片内汉明距离 | 0% | < 5% |
我曾经测试过一批 1000 颗芯片的 SRAM PUF,片间汉明距离稳定在 49.7% 左右。嗯,这个结果让我松了口气——说明制造工艺的随机性足够好,没有出现系统性偏差。
2.2.2 不可预测性
不可预测性指的是:即使你知道某颗芯片的部分挑战-响应对,也无法推断出其他挑战的响应。
这跟加密算法有点像。你拿到一堆明文-密文对,能不能推出新密文?好的加密算法做不到,好的 PUF 也做不到。
为什么?因为 PUF 的响应是由芯片内部复杂的物理随机性决定的,不是由数学公式算出来的。没有数学模型可以拟合它。
避坑指南:我曾经见过一个团队用线性回归去预测 PUF 响应,结果自然是失败。PUF 的物理来源是非线性的、混沌的,别拿传统建模思路去套它。
2.2.3 不可克隆性
这是 PUF 的终极特性。不可克隆性分为两个层面:
- 物理不可克隆:即使拿到芯片的版图、制造工艺参数,也无法制造出一颗 PUF 响应完全相同的芯片
- 数学不可克隆:即使拿到大量的挑战-响应对,也无法构建一个数学模型来精确模拟该 PUF
你想想看,制造过程中的随机掺杂、氧化层厚度波动、线宽偏差……这些微观变量是制造工艺本身无法控制的。你让台积电用同一套光罩、同一套工艺参数再跑一次,出来的芯片 PUF 响应还是不一样。
注意:不可克隆性不等于“绝对安全”。PUF 可能受到建模攻击、侧信道攻击、环境扰动等威胁。我们会在后续章节详细讨论这些攻击手段和防护措施。
2.3 PUF 的物理来源:随机性从哪来?
好了,核心问题来了:PUF 的随机性到底从哪来?
我习惯把 PUF 的物理来源分成三类。咱们一个一个看。
2.3.1 制造工艺偏差
这是最根本的来源。芯片制造过程中,哪怕是最先进的工艺,也存在各种微观偏差:
- 掺杂浓度波动:离子注入时,杂质原子在硅晶格中的分布是随机的
- 氧化层厚度不均:栅氧化层的厚度在原子尺度上存在起伏
- 线宽边缘粗糙:光刻和刻蚀过程导致晶体管尺寸存在微小差异
- 阈值电压漂移:上述因素综合导致每个晶体管的开关阈值不同
这些偏差在纳米尺度下是不可避免的。你想想看,7nm 工艺下,一个晶体管只有几十个原子宽。原子位置的随机波动,足以让相邻的两个晶体管产生可测量的电学差异。
2.3.2 电路结构的随机初始化
有些 PUF 结构利用电路的“亚稳态”或“随机初始状态”来提取随机性。典型的例子是 SRAM PUF。
SRAM 单元在上电时,两个交叉耦合的反相器会竞争到一个稳定状态。理论上,这个状态是随机的——50% 概率为 0,50% 概率为 1。但实际上,由于制造偏差,每个单元会有固定的偏好。
我在项目中调试 SRAM PUF 时发现,大约 70% 的单元是“稳定偏好”的——每次上电都给出相同的值。剩下 30% 是“不稳定单元”,会受温度、电压、噪声影响而翻转。嗯,这些不稳定单元需要特殊处理,我们后面会讲。
2.3.3 时序与延迟差异
第三类来源是信号传播路径上的延迟差异。典型代表是环形振荡器 PUF(RO PUF)和仲裁器 PUF。
逻辑门和互连线的延迟,受制造偏差影响,每条路径的延迟都不同。通过比较两条路径的延迟谁快谁慢,就能提取出 1 比特响应。
举个例子:
- 路径 A 和路径 B 在版图上设计成完全对称
- 但由于制造偏差,路径 A 的实际延迟可能比路径 B 大 2ps
- 每次测量,路径 B 的信号先到达,输出为 1
- 换一颗芯片,可能路径 A 更快,输出为 0
这种延迟差异极其微小,但足够被片上电路检测到。
2.4 PUF 分类与对比
根据物理来源的不同,PUF 可以分为几大类。我整理了一个对比表,方便你快速了解:
| PUF 类型 | 物理来源 | 典型结构 | 优点 | 缺点 |
|---|---|---|---|---|
| 存储型 PUF | 电路随机初始化 | SRAM PUF、蝴蝶 PUF | 实现简单,兼容标准工艺 | 对环境敏感,需要纠错 |
| 延迟型 PUF | 路径延迟差异 | RO PUF、仲裁器 PUF | 响应稳定,可生成大量 CRPs | 面积较大,易受建模攻击 |
| 模拟型 PUF | 模拟电路参数偏差 | 电流镜 PUF、电压比较 PUF | 抗攻击能力强 | 设计复杂,功耗较高 |
2.5 知识体系总览
说了这么多,咱们用一张图把 PUF 的基础知识串起来。下面这张 SVG 图展示了 PUF 的定义、三大核心特性、物理来源以及典型应用场景之间的关系。
2.6 小结与个人体会
PUF 的核心思想其实很简单:利用制造过程的随机性,把缺陷变成资产。
我刚开始接触 PUF 时,总觉得这东西太“玄学”——芯片制造不是越一致越好吗?怎么还故意利用偏差?后来做了几个项目才明白,有些偏差是消除不了的。与其花大价钱去控制它,不如用它来做安全。
这里分享一个我踩过的坑:有一次做 SRAM PUF 的芯片测试,室温下片间汉明距离 49%,完美。结果拿到高低温箱里一测,60°C 时掉到了 42%。嗯,温度对 PUF 的影响比我想象的大得多。从那以后,我设计 PUF 方案时一定会留足纠错余量,并且做全温度范围的验证。