3、PUF核心特性:唯一性、随机性、可靠性、不可克隆性。评估指标与测试方法。
各位工程师朋友,咱们今天聊点实在的。PUF 这玩意儿,圈里炒得火热,但真正把它用明白的人不多。我见过不少项目,芯片选型时看 PUF 指标,结果量产时良率崩了——说白了,就是没搞懂那四个核心特性到底怎么测、怎么算。
这章我就把 PUF 的四个命根子特性掰开揉碎讲清楚。唯一性、随机性、可靠性、不可克隆性,一个都不能少。每个特性我都会告诉你:它是什么、为什么重要、以及——我最拿手的——怎么用测试数据把它量化出来。
3.1 唯一性:每个芯片都得有自己的“指纹”
唯一性,顾名思义,就是不同芯片之间产生的响应要各不相同。你想想看,如果两个芯片的 PUF 响应一模一样,那跟用同一个密钥有什么区别?
衡量唯一性的核心指标是片间汉明距离(Inter-chip HD)。我习惯用归一化汉明距离,公式很简单:
HD_inter = (2 / (k * (k-1))) * Σ HD(R_i, R_j) (i < j)
其中 k 是芯片数量,R_i 是第 i 个芯片的响应。理想情况下,这个值应该接近 50%。
实战经验:我在一个物联网安全项目中测试过 1000 颗芯片,算出来的平均片间 HD 是 49.8%。但有个批次只有 47.2%——查了半天,发现是工艺角偏差导致某些比特位“扎堆”了。所以我的建议是:别只看平均值,还要看分布直方图。正态分布、均值在 50% 附近,才算合格。
| 评估指标 | 理想值 | 可接受范围 | 测试方法 |
|---|---|---|---|
| 片间汉明距离 | 50% | 45% - 55% | 多芯片响应两两对比 |
| 片间HD标准差 | 尽可能小 | < 5% | 统计分布分析 |
3.2 随机性:比特位不能有偏
随机性关注的是单个芯片内部,各个比特位是否均匀分布。说白了,就是 0 和 1 的比例要接近 1:1。如果某个芯片的响应全是 0,那攻击者猜中的概率就是 100%。
我常用的评估方法是片内汉明重量(Intra-chip HW)和NIST 随机性测试套件。片内 HW 就是统计一个响应中 1 的个数,理想值是响应长度的一半。
避坑指南:我曾经遇到过一个 PUF 设计,片内 HW 看起来是 50%,但用 NIST 的“频率测试”一跑,p-value 只有 0.01。为什么?因为比特位之间有相关性——相邻位容易相同。所以我的建议是:随机性测试不能只看比例,一定要跑完整的 NIST 套件,至少包括频率测试、游程测试和块内频率测试。
# 片内汉明重量计算示例(Python)
def hamming_weight(response):
return sum(bin(int(byte, 16)).count('1') for byte in response)
# 假设响应是 128 位十六进制字符串
response = "a1b2c3d4e5f6789012345678abcdef01"
hw = hamming_weight(response)
print(f"汉明重量: {hw}, 占比: {hw/128*100:.2f}%")
3.3 可靠性:同一个芯片,不同时间测,结果要一样
可靠性可能是 PUF 落地时最头疼的问题。同一个芯片,今天测和明天测,或者温度从 25°C 变到 85°C,响应就变了——那这 PUF 还能用吗?
衡量可靠性的指标是片内汉明距离(Intra-chip HD),也叫误码率(BER)。具体做法是:在相同条件下多次读取同一个 PUF,计算每次响应与参考响应之间的差异。
注意:可靠性测试必须在不同环境条件下进行。我一般会设置三个温度点:-40°C、25°C、85°C,每个温度点测 100 次。如果 BER 超过 5%,这个 PUF 设计就需要加纠错码(ECC)了。
| 环境条件 | 典型BER | 是否需要ECC |
|---|---|---|
| 常温(25°C) | < 1% | 可选 |
| 高温(85°C) | 1% - 5% | 建议 |
| 低温(-40°C) | 2% - 8% | 必须 |
| 电压波动(±10%) | 1% - 3% | 建议 |
3.4 不可克隆性:物理上复制不了
不可克隆性是 PUF 的终极目标。它说的是:即使攻击者知道了你的 PUF 设计、制造工艺、甚至拿到了你的响应数据,他也造不出一个一模一样的 PUF。
这个特性很难用单一指标量化。我一般从两个角度评估:
- 物理不可克隆性:制造过程中的工艺偏差是随机的,理论上无法精确复制。这需要工艺验证。
- 数学不可克隆性:即使攻击者能建模,模型复杂度也要足够高,使得建模攻击在计算上不可行。
我的经验:曾经有个客户拿了一个“PUF”方案给我看,说用了 64 位 SRAM 上电值。我一测,片间 HD 只有 30%,而且用机器学习模型(逻辑回归)预测准确率高达 85%。这哪是 PUF?这就是个弱随机数发生器。真正的 PUF 应该让建模攻击的准确率接近 50%(随机猜)。
3.5 知识体系总览
下面这张图是我自己整理的 PUF 核心特性评估框架。每次做项目前,我都会对着这张图过一遍,确保没有遗漏。
3.6 综合评估流程
在实际项目中,我一般按以下步骤来评估一个 PUF:
- 收集样本:至少 100 颗芯片,每颗在不同条件下采集 100 次响应。
- 计算片间 HD:验证唯一性。如果均值不在 45%-55% 之间,直接打回重做。
- 计算片内 HW:验证随机性。如果偏离 50% 太多,检查设计是否有偏置。
- 计算 BER:验证可靠性。如果 BER > 5%,考虑加 ECC 或改进 PUF 结构。
- 建模攻击测试:用 SVM、随机森林、神经网络尝试建模。如果准确率 > 60%,说明不可克隆性不达标。
小技巧:我习惯把测试结果做成一张雷达图,四个维度分别对应四个特性。这样一眼就能看出哪个特性是短板。有一次,一个 PUF 方案的唯一性和随机性都很好,但可靠性只有 60 分——后来发现是电源噪声没处理好。
好了,这章的内容就到这里。PUF 的四个特性是评估任何 PUF 方案的基石。下次你拿到一个 PUF 芯片,别急着用,先按我上面说的流程跑一遍测试。数据不会骗人。