当今社会信息化飞速发展,物理不可克隆函数(PUF)的不断完善为信息安全提供了全新的解决方案。基于FPGA架构的Glitch PUF最初由ANDERSON J H等人提出,后续研究在此基础上进行了优化。文献[4]通过引入多路选择器链和增加激励比特位,增强了系统的随机性和可扩展性。文献[5]和[6]充分利用了FPGA资源,针对不同工艺的FPGA和不同类别的Slice设计了相应的布局布线,显著提升了电路资源利用率,并改进了单元电路结构,提高了输入响应的平衡性。
尽管已有研究在提升Glitch PUF随机性方面做出了努力,但它们并未深入分析Glitch PUF的输入输出映射关系,因此未能从根本上解决其安全性问题。文献[7]指出,RO PUF可以通过2-DL表示法,并利用PAC学习框架进行学习,证明RO PUF是可以被攻击的。文献[8]则提出使用逻辑回归和演化策略方法攻击PUF,并对多种PUF类型进行了机器学习攻击,实验结果表明,当收集到足够数量的激励响应对(Challenge Response Pairs,CRPs)时,这些电路均可以被成功预测,预测精度高达99.9%。
本文对Glitch PUF进行了深入研究,重点分析了其输入输出映射关系,并提出使用多层感知器(MLP)算法进行机器学习攻击,通过实验验证了该方法的有效性。
1 Glitch PUF
1.1 Glitch PUF架构
Glitch PUF本质上利用了FPGA上的路径延迟差产生竞争冒险现象,进而生成毛刺,决定PUF单元电路的输出为逻辑“0”或“1”。由于制造过程中电路延时差异的随机性,即使电路结构相同,也难以复制相同的延时,因此这种电路具有唯一性和物理不可克隆性。
Glitch PUF单元电路主要由两个移位寄存器、两个双路数据选择器和一个异步置位D触发器组成。移位寄存器的输入逻辑分别为Ox5555(0101...0101)和OxAAAA(1010...1010),连接到数据选择器的控制端。两个数据选择器构成传输路径,在理想情况下,顶层数据选择器的输入为逻辑0。异步置位D触发器的初始值为逻辑0,因此单元电路的输出为逻辑0。然而,在实际电路中,由于寄存器转换延时和路径传输延时的不同,顶层数据选择器的输入会产生毛刺。这些毛刺传递到异步D触发器的异步置位端,从而决定电路的输出逻辑。
1.2 Glitch PUF模型分析
Glitch PUF单元电路的输出值由传输延时和转换延时决定。根据统计静态时序分析(SSTA),延时Δ的分布符合平均值为μ、方差为σ的高斯分布N(μ, σ²),且延时Δ落在区间[μ-3σ, μ+3σ]的概率为99.7%。
2 基于MLP算法的机器学习攻击
2.1 数据处理
2.2 MLP算法
机器学习可以对PUF电路进行攻击的主要原因是PUF电路结构相对固定,产生的大量激励响应对具有一定的线性特征,使得机器学习能够预测延时信息和生成信息之间的关系,从而实现对电路的攻击。机器学习算法中,线性可分数据相对容易处理,而非线性可分数据则难以有效学习。Glitch PUF正是利用这一点,通过异或输入增加电路输入的非线性,提高抗建模攻击的能力。
单层感知器由两层神经元组成,可以轻松完成逻辑与、或、非等运算,但对于简单的非线性可分问题(如异或运算)无法正确处理。为了解决这个问题,多层感知器(MLP)应运而生。根据通用逼近定理,MLP通过添加隐藏层和激活函数可以逼近任意函数,将非线性问题转化为更高维度的线性问题。采用的激活函数为阈值函数,即当输入大于阈值时激活,输出为“1”,否则未激活,输出为“0”。
具体而言,MLP在单层感知器的基础上增加了隐藏层。单层感知器的输入输出模型为y = f(x, w, θ),而MLP的输入层到隐藏层模型为h = f₁(x, wᵢ, θᵢ),隐藏层的输入作为下一层的输入,即y = f₂(h, wⱼ, θⱼ),因此MLP的最终输入输出模型为y = fₙ(f₂(f₁(x, w, θ)))。
当MLP的输入与样本一致时,权重和阈值不变;当输入与样本不一致时,权重和阈值会发生变化。通过迭代调整直至满足条件,最终保存权重和阈值以建立模型,并统计分类错误的样本数量,计算错误率。
MLP算法对Glitch PUF攻击的具体算法描述如下:
3 实验评价
本文使用Python建立Glitch PUF模型,模拟其输入输出映射关系,并收集激励响应对,用于后续的机器学习攻击。实验采用数据挖掘软件WEKA,对不同单元数量(32、64、128、256)的Glitch PUF进行建模攻击,采用MLP算法,通过十折交叉验证得到攻击错误率及所需激励响应对数量。
由实验结果可以看出,PUF单元数量越多,攻击所需的激励响应对越多,预测精度也越难提高。单元电路数量较少时,增加输入到WEKA中的激励响应对数量,错误率几乎呈直线下降。图中128位和256位的曲线显示,当输入的激励响应对达到一定数量时,错误率降低速率放缓,基本保持不变,表明机器学习模型已接近最优值,迭代可以结束。
为了验证MLP算法对Glitch PUF攻击的优越性,本文参考文献[8]、[12]、[13],采用常用的随机森林(RF)和逻辑回归(LR)算法进行对比。以64位Glitch PUF激励响应对数据作为样本,测试结果表明,随机森林和逻辑回归算法在攻击能力上基本一致,逻辑回归算法的效果略逊于随机森林,而MLP算法的攻击能力最强。MLP算法的预测错误率在样本数量为600左右时,已低于1%。随机森林和逻辑回归算法在样本数量小于1000时,预测错误率波动较大,说明算法难以建立有效模型;但当样本数量达到2500时,错误率仍保持在20%左右。由此可见,针对Glitch PUF的机器学习攻击,本文提出的MLP算法的处理能力远优于其他两种算法。
4 结论
PUF的不断完善使其可以应用于信息安全领域,但随着攻击技术的进步,其安全性也面临更多挑战。本文分析了基于FPGA的Glitch PUF的物理架构,针对其单元电路输入的缺陷,分析了输入输出映射关系,并采用MLP算法进行了机器学习攻击,成功实现了对Glitch PUF的攻击和预测。