物理不可克隆函数(PUF)基础

各位工程师朋友,咱们今天聊点硬核的——PUF。说白了,物理不可克隆函数就是芯片的“指纹”。你想想看,每个人的指纹都是独一无二的,对吧?PUF 也一样,每一颗芯片天生就带着一个无法复制的身份标识。

我刚开始接触这个领域时,也觉得这东西有点玄乎。直到有一次,我在一个安全芯片项目里,亲眼看着两片同一晶圆、同一批次、相邻位置的芯片,PUF 响应居然完全不同。那一刻我才真正明白——这不是理论,这是实实在在的物理现实。

PUF 的工作原理

PUF 的核心思想很简单:利用芯片制造过程中不可避免的工艺偏差。这些偏差包括掺杂浓度波动、氧化层厚度不均、线宽变化等等。你没法控制它们,也没法预测它们,但它们确实存在。

具体怎么工作的呢?我画个流程图给你看。

PUF 工作原理流程图 输入激励(Challenge) 芯片物理结构 (工艺偏差:掺杂、线宽、氧化层) 输出响应(Response) 核心特性:同一激励 → 不同芯片 → 不同响应 同一芯片 → 同一激励 → 稳定响应(在允许误差范围内)

你看,输入一个激励(Challenge),芯片内部的物理结构会把它映射成一个独一无二的响应(Response)。这个映射关系,就是 PUF 的核心。而且这个映射关系是物理决定的,不是存在存储器里的数字。

关键点:PUF 不存储密钥,它“生成”密钥。每次上电,你给它同一个激励,它就会重新生成同一个响应。这意味着攻击者没法通过物理探针或者侧信道去读一个“存储的密钥”——因为根本不存在。

PUF 的数学原理

从数学角度看,PUF 其实是一个物理单向函数。嗯,这里要注意,它跟密码学里的单向函数不太一样。密码学单向函数是数学上难逆,PUF 是物理上难克隆。

我习惯用一个简单的模型来理解:

R = PUF(C, θ)

其中:

  • C 是输入激励(Challenge)
  • θ 是芯片的物理参数集合(工艺偏差)
  • R 是输出响应(Response)

θ 是每个芯片独有的,而且你没法精确测量它。你想想看,要测量一颗芯片里几亿个晶体管的掺杂浓度?那是不可能的。这就是 PUF 安全的数学基础——θ 的不可克隆性。

PUF 还需要满足几个数学性质:

性质 描述 我的理解
可评估性 给定 C,能快速算出 R 上电就能用,不能等太久
唯一性 不同芯片,同一 C → 不同 R 芯片间差异要大,不然没法区分
可靠性 同一芯片,同一 C → 稳定 R 温度电压变化时,响应不能乱跳
不可克隆性 无法制造出相同 θ 的芯片 这是 PUF 存在的根本理由

避坑指南:我曾经在一个项目中,只关注了唯一性,忽略了可靠性。结果芯片在高温下 PUF 响应漂移严重,密钥恢复失败率高达 30%。后来加了纠错电路才搞定。记住:唯一性和可靠性要一起测,别只盯着一个指标。

PUF 的分类

PUF 的种类挺多的,我按实现方式给你捋一捋。我个人习惯把它们分成两大类:硅 PUF 和非硅 PUF。

硅 PUF

这是目前最主流的,直接在芯片上实现。常见的几种:

  • 仲裁器 PUF(Arbiter PUF):利用两条路径的传播延迟差异。输入信号同时走两条路,看谁先到终点。我做过一个项目,用 64 级仲裁器,生成了 128 位的密钥,效果还不错。
  • 环形振荡器 PUF(RO PUF):测量多个环形振荡器的频率差异。每个振荡器的频率都不一样,排序后就能生成唯一标识。这个实现起来比较简单,但功耗稍大。
  • SRAM PUF:利用 SRAM 上电时的初始状态。每个 SRAM 单元上电后随机变成 0 或 1,这个随机性就是 PUF 的来源。嗯,这里要注意,SRAM PUF 的可靠性受温度影响比较大。
  • 蝴蝶 PUF(Butterfly PUF):交叉耦合两个锁存器,利用它们的亚稳态行为。这个面积小,适合资源受限的场景。

非硅 PUF

这些比较特殊,应用场景相对小众:

  • 光学 PUF:用激光照射特殊材料,观察散射图案。每个材料的微观结构不同,散射图案就不同。这个安全性极高,但需要外部读取设备,不适合嵌入式场景。
  • 涂层 PUF:在芯片表面涂一层掺杂了随机粒子的材料,用电容或电阻测量。我见过一个防拆方案,涂层 PUF 配合破坏检测,一旦拆封 PUF 就失效。
  • 磁 PUF:利用磁性材料的磁畴分布。这个还在研究阶段,我没实际用过。

重要提醒:别以为 PUF 是万能的。它解决的是“物理克隆”问题,不是“数学克隆”。如果攻击者能拿到你的 Challenge-Response 对,他可以用机器学习建模来预测新的响应。所以 PUF 一定要配合协议使用,别裸奔。

我整理了一个对比表,方便你选型时参考:

PUF 类型 面积 功耗 可靠性 安全性 我的评价
仲裁器 PUF 小 低 中 高 适合高性能场景
RO PUF 中 中 高 中 实现简单,稳定
SRAM PUF 小 极低 中 高 我最常用的方案
光学 PUF 极大 高 高 极高 特殊场景才用
涂层 PUF 小 低 中 高 防拆场景首选

最后说一句,PUF 不是银弹。它是个好工具,但要用对地方。我见过太多人把 PUF 当成“绝对安全”的解决方案,结果在协议层、应用层出了漏洞。记住:安全是一个系统问题,PUF 只是其中的一块拼图。