物理不可克隆函数(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 的定义、三大核心特性、物理来源以及典型应用场景之间的关系。

物理不可克隆函数(PUF)知识体系 PUF:芯片物理指纹 定义 R = PUF(C) 挑战 → 物理映射 → 响应 核心特性 唯一性 · 不可预测性 不可克隆性 物理来源 工艺偏差 · 随机初始化 延迟差异 唯一性 片间汉明距离 ≈ 50% 不可预测性 无法建模预测 不可克隆性 物理+数学不可克隆 制造工艺偏差 掺杂 · 氧化层 · 线宽 阈值电压漂移 随机初始化 SRAM 上电状态 亚稳态竞争 延迟差异 路径延迟比较 RO 频率差异 典型应用:密钥生成 · 设备认证 · 防克隆标签 · IP 保护

2.6 小结与个人体会

PUF 的核心思想其实很简单:利用制造过程的随机性,把缺陷变成资产。

我刚开始接触 PUF 时,总觉得这东西太“玄学”——芯片制造不是越一致越好吗?怎么还故意利用偏差?后来做了几个项目才明白,有些偏差是消除不了的。与其花大价钱去控制它,不如用它来做安全。

这里分享一个我踩过的坑:有一次做 SRAM PUF 的芯片测试,室温下片间汉明距离 49%,完美。结果拿到高低温箱里一测,60°C 时掉到了 42%。嗯,温度对 PUF 的影响比我想象的大得多。从那以后,我设计 PUF 方案时一定会留足纠错余量,并且做全温度范围的验证。