旁路密码攻击建模分析方法研究进展与分析

2021-07-14 00:23刘林云陈开颜李雄伟刘俊延
无线电工程 2021年7期
关键词:旁路密钥加密

刘林云,陈开颜,李雄伟,张 阳,刘俊延

(陆军工程大学石家庄校区 装备模拟训练中心,河北 石家庄 050003)

0 引言

信息时代,信息安全日益成为人们关注的焦点,嵌入加密算法的密码芯片成为信息安全的有效保障。虽然加密算法在数学理论上安全,但破密者仍可以通过旁路密码分析手段获取密钥和加密信息,对信息安全造成重大威胁。旁路分析(Side Channel Analysis,SCA)[1]在密码学中是指绕过对加密算法的繁琐分析,利用密码算法的硬件实现在运算中泄露的信息,如执行时间、功耗、电磁辐射等,结合统计理论快速地破解密码系统。这类新发现的物理泄漏信息被研究学者称为旁路信息(Side-channel Leakage),与之对应的攻击方法称为旁路攻击(Side-channel Attack)。

旁路密码分析方法分为建模方法和非建模方法。非建模类方法包括差分能量攻击[2](Differential Power Attack,DPA)、相关系数攻击[3](Correlation Power Attack,CPA)以及互信息攻击[4](Mutual Information Attack,MIA);建模类方法包含模板攻击[5](Template Attack,TA)、基于多层感知器的旁路密码攻击(MLPSCA)以及基于卷积神经网络的旁路密码攻击(CNNSCA)。虽然非建模方法攻击方式简单直接,但旁路信号微弱或环境噪声过大会造成攻击失效,而建模方法能有效分析旁路信号特征,预先获得攻击设备的加密知识,更易破获密钥。

早期,从信息论角度看,如果有大量的旁路泄露信号(简称能量迹),那么传统建模方法中破密效果最好的是TA[5-9]。但研究人员随后发现,TA处理高维度旁路信号时存在统计困难,也无法攻击带防护加密实现。中期,随着计算机硬件性能的提升和人工智能领域机器学习的兴起,受监督机器学习算法在其他领域中能有效分析类似能量迹的一维数据,一些研究人员开始提出基于机器学习的旁路密码分析(MLSCA)[10-12],这些方法主要针对带加密算法AES的设备,自此传统建模方法向结合机器学习算法的新型建模方法转变。新型建模方法MLPSCA在攻击性能上超越了传统建模方法[8,13],克服了TA不能处理高维度旁路信号的缺陷,但攻击带防护的加密实现时也失去效力。如今,随着机器学习的发展,在图像分类、目标识别上性能表现优异的深度学习技术开始盛行,已有研究表明深度学习下的卷积神经网络算法应用在旁路分析上能产生较好的破密性能[14-15],而且CNNSCA能有效攻击带防护的加密实现。

目前在SCA领域,对传统和新型建模方法的汇总分析较少,或者不够完善,本文将展开旁路建模方法的研究综述,研究不同时期建模类SCA分析方法的性能特点,这对如何提升信息安全防护有重要的启发作用。

1 相关说明

本文使用SCA领域已公开的数据集做研究分析,采用ASCAD[15]数据库,并使用统一的符号来表示能量迹、密钥、明文以及能量迹模型。

1.1 旁路泄露公开数据集说明

最新公布的ASCAD数据库采集的目标是带一阶掩码防护的AES-128实现,即8 bit AVR微控制器(ATmega8515),其中能量迹是由采集的电磁辐射转换的数据信号。敌手针对AES第一轮加密的第3个S盒输出采集信号,并针对第一个AES密钥字节发起攻击,该数据库遵循MNIST数据库规则,共提供4个数据集,每个数据集有60 000条能量迹,其中50 000条能量迹用于分析/训练,10 000条能量迹用于测试/攻击。前3个ASCAD数据集分别代表设置3种不同随机时延防护对策的加密实现泄露,分别用信号偏移desync=0,50,100来表示这3个带掩码和时延2种策略的数据集。在前3类数据集中所有能量迹都包含700个特征点,这些特征点是在包含100 000个特征点的原始能量迹里选取,选取依据是信号尖峰最大的位置。在掩码已知的情况下,数据集的信噪比最大值可达0.8,而在掩码未知的情况下几乎为0。最后一个ASCAD数据集存放的是原始能量迹。

1.2 符号说明

能量迹是一维向量。用字母χ表示能量迹的集合,大写字母X表示集合中带有值的随机能量迹变量,小写字母x表示单个变量的随机分量,则能量迹表示为X={x1,x2,…,xD},X∈RN×D,其中D是每条能量迹时间样本数或兴趣点数(在机器学习中称为特征点),N表示能量迹采样总数。令k*表示真实密钥,k表示任一可能的假设密钥,k∈K,K={k0,k1,…,k255},k服从均匀分布,大小为一个字节。令随机变量P表示输入的明文,P={p1,p2,…,pN},p服从均匀分布。敌手攻击密钥时,将能量迹建模为M:{X|(P,K)}(在机器学习中称为标签),该模型代表假设密钥k和已知明文p在执行加密算法后产生的能量迹X,该模型与执行的加密操作密切相关,从而与加密操作中的密钥密切相关。 后文中将用M代替M:{X|(P,K)}。

2 建模类旁路分析

2.1 建模类旁路分析原理

建模类旁路分析原理主要是指攻击方法的攻击原理,为了量化评估攻击方法的性能好坏,通常使用破密性能评估方法来对攻击方法进行评估,以此促进攻击方法的改进和优化。

2.1.1 攻击原理

(1) 旁路泄露采集

旁路攻击者在掌握加密算法知识的前提下,在密码设备副本上采集N条表征泄漏的能量迹χ={X1,X2,…,XN}作为建模集。能量迹Xi由2部分组成:对密码设备电路中一个特定操作进行仿真形成的能量迹和服从高斯分布的电子噪声(即高斯噪声),电子噪声是指在同等采样条件下多次采集的能量迹中产生的波动。能量迹可表示为:

Xi=C(pi⊕k*)+oi,i∈N。

(1)

O={o1,o2,…,oN}表示高斯噪声,C()表示轮密钥加操作(AES-128算法第一轮S盒之前的轮密钥加操作)。攻击者在目标设备副本上测量额外的Q条能量迹χ={X1,X2,…,XQ}作为攻击集。

(2) 能量迹建模

敌手攻击AES-128实现时,按密钥的每个字节依次展开攻击,每个字节对应汉明重量(Hamming Weight,HW)模型分为9类模板。对于分类性能强大的卷积神经网络,256个分类任务很小,因此CNNSCA中直接使用256类标签(类似传统建模方法的模板)。重新定义能量迹模型为M:{X|(P,K)},S={s1,s2,…,sN},S表示AES-128算法的S盒。式(1)可转化为:

Xi=S[C(pi⊕k*)]+oi,i∈N。

(2)

传统建模方法中,敌手通常选择敏感中间值的HW模型,通过减少模板数量来避免统计和计算复杂性。由于HW模型对能量迹的合并建模在本质上不平衡,严重妨碍机器学习/深度学习的性能[16],因此新型建模方法直接使用敏感中间值模型[17],该能量迹模型需要较大的分析集,可避免建模不平衡问题。

(3) 猜测密钥

gk:(X,P)PDF[Xi|(P,K)=(p,k)],i∈N,

(3)

式中,PDF表示概率分布函数(Probability Distribution Function),当采用中间值能量迹模型时,M:{X|(P,K)},式(3)可改写为:

gk:(X,P)PDF[Xi|S[C(P,K)]=si],i∈N。

(4)

综合上述3个步骤,可定义建模类旁路密码分析模型,如图1所示。

图1 建模类旁路密码分析模型

2.1.2 破密性能评估

Standaert等人[18]首次提出了旁路密码分析的评估方法,将评估指标分为2类:第1类是安全指标,包含成功率、猜测熵(Guess Entropy,GE)以及计算时间[19];第2类是信息指标,包含互信息、条件熵与混淆矩阵[20-21]。通常安全员在评估CNNSCA破密性能时考虑两方面指标:一是建模时神经网络模型的训练准确率Acc指标[22];另一个是攻击阶段采用旁路密码分析中的安全指标GE[18-19]。

安全指标中,成功率用来衡量敌手的攻击结果,通过对一定数量能量迹的分析,来反应成功获取密钥的能力;而GE用来衡量密钥破解效率,通过敌手在攻击阶段仅需少能量迹就能破密,来反应破密方法的效率。在旁路分析领域,评估SCA破密性能普遍使用GE指标,GE是通过一个自定义的秩函数R(·)得到,定义为:

(5)

敌手使用建模数据集Dtrain,建立旁路分析模型g,在攻击阶段使用攻击数据集Dtest中n个能量迹样本进行n次攻击,每次攻击后得到256类假设密钥的分布概率对数值,组成向量di=[di[1],di[2],…,di[k]],其索引按假设密钥键空间正序排列(索引从零开始计数),其中i∈n,k∈K,K是假设密钥的键空间。每次攻击结果进行累加。然后,秩函数R(·)将向量di的所有元素按值的大小逆序排序,并保持向量中每个元素对应索引在排序前后的位置与元素的位置一致,得到新的排名向量Di=[Di[1],Di[2],…,Di[k]],其中每个元素Di[k]包含2个值k和d[k],最后输出已知密钥k*概率对数元素在Di中的索引,即猜测熵GE(d[k*])。根据本文2.1.1节的详细叙述,在第i次攻击时,真实密钥的能量迹模型匹配率应该最高,其GE(d[k*])的排名就靠前。猜测熵就是每次攻击输出的GE(d[k*])排名,在n次攻击中,破密方法性能越好,效率越高,GE(d[k*])的排名越快收敛于零。说明在第i次攻击时,猜测熵收敛于零并在后续攻击中持续收敛,敌手破解密钥就只需要进行i次攻击,即只需要i条能量迹就能破密。式(5)可改写为:

(6)

2.2 经典模板攻击

模板攻击又称为多元高斯模板攻击,最早由Chari等人[5]提出,遵循建模类旁路攻击原理,已在本文2.1.1节详细说明。敌手在被攻击的加密设备副本上,分别对不同的明文Pi,i∈N和密钥kj,j∈K(K=256)执行特定的指令序列,并记录对应的能量迹,能量迹按时序切割为多维度的特征点。然后把与(Pi,kj)对应的能量迹按256类密钥k分组,计算每组能量迹均值向量E和协方差矩阵C。每一组明文和密钥(Pi,kj)都可以得到一个模板H:(E,C)。最后利用所建模板来破获密钥。高斯模板攻击的详细步骤如下:

(1) 泄露采集及特征提取

① 在实验装置上对每个密钥k(k∈K)与Q个随机明文执行加密操作,分别采集大量能量迹,得到256个密钥的各自样本集X。

② 计算每个k操作下能量迹样本的平均值E1,E2,…,EK(K=256)。

③ 计算E1~Ek之间两两差值之和,选择差值中差异大的特征点记为P1,P2,…,PN,用这N个点建立高斯模板。通过对高维度的能量迹进行特征提取来降低数据维度的方法,虽然造成极小的精度损失,但极大地减少了计算开销。

(2) 构建能量迹特征模板

① 对于每个密钥,样本集X的N维噪声向量为:

Ni(X)=(X[P1]-Ei[P1],...,X[PN]-Ei[PN])。

(7)

② 计算每个样本集X的噪声向量协方差矩阵:

∑Ni(u,v)=cov(Ni(Pu),Ni(Pv)),u,v∈N。

(8)

由上得到每个密钥k的能量迹模板,记为(Ei,∑N)。

(3) 利用模板实施攻击

用一条能量迹T与模板的均值向量Ei做差,得到噪声向量x,该噪声属于高斯噪声,文献[1]中已论证。然后使用模板的协方差矩阵ΣNi,结合N维多元高斯概率分布函数pNi(x)计算噪声向量x的概率,函数定义如下:

(9)

式中,|ΣNi|表示ΣNi的行列式;Σ-1Ni表示ΣNi的逆。对能量迹T和每一个模板进行计算,得到概率序列P(T|P,kj).概率值的大小反映了T与模板的匹配程度。根据极大似然判定准则,匹配概率最大的模板,其相关的密钥就是正确密钥。

早期Chari等人通过标准模板攻击成功破获RC4流密码,并且在理论上提出模板攻击为当时最强的旁路攻击。文献[9]建议仅用一个模板的协方差矩阵应对统计困难,但破密效果一般。在文献[1]中提出一种折中的办法,基于汉明重量/距离的模板攻击,将加密中间值转换为汉明重量,建立对应9类模板,减少了统计困难,也提高了计算效率和破密性能。然而在具体实施时,模板攻击存在3类缺陷:① 计算复杂性。如计算过程中出现奇异矩阵,选择高维特征点建模时计算和存储压力过大,获取能量迹有限时无法使用较多特征点构建模板等。② 模板攻击的实现依赖多元高斯分布概率密度函数,但目前没有严格的证明,此方法能最好地刻画捕获数据。③ 在攻击带防护策略的加密实现时,模板攻击表现一般。

2.3 基于多层感知器的旁路分析

多层神经网络,也称多层感知器(Multi-Layer Perceptrons,MLP),这种通过增加网络层数来提高学习性能的策略称为深度学习。基于多层感知器的旁路分析(MLPSCA),是利用BP算法[23],在几个堆叠的全连接层上对训练/建模数据集进行训练,得到特征信号的权值模板。然后用分析/攻击数据集上的样本,与权值模板进行非线性计算,并输出特征向量。最后对特征向量分类回归,得到每个标签的匹配概率,该匹配概率在机器学习中称为预测值,根据极大似然准则,将预测值最高的标签密钥判定为正确密钥,到此MLPSCA攻击完成。Benadjila等人[15]提出MLPSCA的MLP模型结构如图2所示。

图2 MLPSCA的神经网络模型结构

该网络结构由6个全连接层堆叠构成,对原始输入信号做一定的降维预处理,在最后一个FC层使用softmax函数(该层也称SOFT层),得到依赖整个输入的各个标签分类概率值,选择最大值作为全局分类结果。

目前MLP已成功应用于旁路密码分析。Gilmore[24]使用神经网络破解了DPA-V4[25]功耗数据集(带掩码防护)。赛峰集团Maghrebi[26]分别使用TA、MLSCA、MLPSCA对DPAContest数据集进行攻击,结果显示MLPSCA攻击效果优于MLSCA与TA,且成功率更高。Martinasek及其同事[27-29]在AES-128加密设备上实验,将MLPSCA与TA、随机攻击、MLSCA等旁路攻击方法进行比较,结果发现MLPSCA破密性能优于TA等传统旁路攻击方法,并且也发现MLPSCA破密性能比基于机器学习算法(SVM和随机森林等)的旁路攻击效果更好。但MLPSCA的MLP网络模型参数化程度高,也没有形成网络模型超参数的泛化标准,导致现实中该方法的攻击效果并不稳定。

2.4 基于卷积神经网络的旁路密码分析

卷积神经网络[30]是人工智能领域比较成功的算法之一,是一种新型结构的多层神经网络。其设计受到视神经感受野研究[31-32]的启发,CNN的核心部件卷积核是局部感受野的结构体现。它属于反向传播训练的深度网络,利用数据二维空间关系减少需要学习的参数数目,在一定程度上提高了BP算法的训练性能。CNN区别于MLP的地方主要是增加了卷积块结构。

在卷积块中,输入数据的一小部分作为网络结构的原始输入,数据信息在网络中逐层向前传递,每层通过若干卷积核对输入的数据进行特征提取[33-34]。

CNN的卷积块由卷积层CONV、批量归一化层BN、激活层ACT构成,在该块之后通常会添加一个池化层POOL以减少特征维度,组成的新卷积块在网络模型中重复n次,直到获得合理大小的输出为止。然后,引入n个全连接层FC,在最后一个FC层使用分类函数softmax,最后输出分类预测结果。旁路密码攻击的卷积网络结构如图3所示。

图3 旁路攻击场景下的卷积网络结构

基于卷积神经网络的旁路密码分析CNNSCA涉及的算法原理有以下几点:

① 卷积计算

将卷积核在一维向量上滑动,每次移动的步数称为步长,每次滑动进行卷积计算得到一个数值,一轮计算完成后得到一个表示向量特征的特征向量。数值运算规则是将一个一维卷积核与一个一维向量对应位置的数值相乘然后再求和。

② 池化计算

池化有最大池化(Max-Pooling)、平均池化(Mean-Pooling)和随机池化(Stochastic Pooling)3种方式。最大池化是提取池化窗口内数值的最大值,平均池化是提取池化窗口内数值的平均值,随机池化是随机提取池化窗口内的数值。

③softmax函数

该函数对输出值进行归一化操作,把所有输出值都转化为概率,概率之和为1,softmax的公式为:

(10)

式中,xi为softmax层第i个神经元的输入;xj为softmax层所有神经元的输入;Σj是对xj的计算求和。函数结果作为第i个神经元标签的拟合概率。

④ 权值调整原理

使用代价函数与梯度下降算法[23],网络模型每训练一次,权值往误差减少的方向自动调整一次,这样重复训练调参,直到所有迭代结束,权值调整完成。

3 经典TA与MLPSCA、CNNSCA实验分析

本文实验涉及算法均使用Python语言编程,并使用深度学习架构Keras库[35](版本2.4.3)或直接使用GPU版Tensorflow库[36](版本2.2.0)。实验在配备16 GB RAM和8GB GPU(Nvidia GF RTX 2060)的普通计算机上进行。

基于本文2.2节TA存在的问题,2.3节MLPSCA存在的缺陷,为验证新型旁路分析方法的性能优势,实验将采用传统建模方法中表现最好的基于HW的TA[1],与Benadjila等人[15]提出的MLPSCA和CNNSCA方法进行破密性能比较。以下3个实验使用本文1.1节的ASCAD公共数据集,并使用本文2.1.2节的猜测熵评估方法,进行破密性能评估。

3.1 攻击无防护数据集

实验1对已知掩码的ASCAD数据集进行攻击,代表攻击无防护状态的加密实现,目的是检测旁路分析方法有效性。实验结果如图4所示。

图4 TA、MLPSCA、CNNSCA攻击无防护设备的猜测熵

由图4可以看出,新型旁路分析方法MLPSCA、CNNSCA的猜测熵收敛情况明显优于传统旁路分析方法TA。

3.2 在攻击数据集添加高斯噪声

实验2在实验1的基础上对已知掩码的ASCAD数据集添加高斯噪声,代表攻击有环境噪声干扰的加密实现。添加高斯噪声的方法是在实验1使用的原数据集基础上任选1/3的能量迹,然后在这1/3的能量迹上逐条添加高斯分量,用它模拟采集信号时的高斯噪声[1]。在一维旁路信号中添加高斯噪声的措施,类似于二维图像数据在进行模型训练之前的数据增强手段[32],数据增强有助于避免CNN模型学习不相关的特征,提升CNN模型的整体性能。实验结果如图5所示。

图5 TA、MLPSCA、CNNSCA攻击加高斯噪声数据集的猜测熵

由图5可以看出,CNNSCA的猜测熵明显收敛最快,在未加高斯噪声前其猜测熵完全收敛至零的攻击次数是650左右(如图4所示),添加之后是270左右(如图5所示)。说明对旁路信号使用数据增强手段,能提高原CNNSCA模型的性能。而TA的猜测熵收敛情况变差,向下收敛后,总是在排名零附近波动。MLPSCA的猜测熵收敛情况与实验1相比也变差。

3.3 攻击带随机时延防护的数据集

实验3在实验1的基础上,改换信号偏移desync=100的ASCAD数据集攻击,代表攻击有时延防护对策的加密设备。实验结果如图6所示。

图6 TA、MLPSCA、CNNSCA攻击带防护设备的猜测熵

由图6可以看出,只有CNNSCA的猜测熵依然往真实密钥的排名方向收敛,TA、MLPSCA的猜测熵没有收敛趋势,攻击已经失效。

4 结束语

本文介绍了不同时期破密性能较好的3个建模方法(TA、MLPSCA、CNNSCA),并通过同一数据库的不同数据集进行实验,发现攻击理想低噪的旁路信号时,新型建模方法MLPSCA、CNNSCA破密性能明显优于传统模板攻击TA。在新型建模方法中,比较MLPSCA与CNNSCA依赖的网络模型,发现MLP模型仅关注输入数量级不考虑数据拓扑结构,而CNN具有更为鲁棒的结构特性,对失真功耗数据依旧具有良好的识别性能。因此,CNNSCA能有效攻击因噪声和防护对策而产生畸变的旁路信号。深度学习的CNN算法是当今人工智能领域比较成熟和热门的算法,CNNSCA虽然成功攻击了无防护的加密设备,但攻击有防护的加密设备时,其破密性能仍有很大提升空间。今后可以利用CNN的优异特性,继续探索更适合攻击带防护设备的CNN结构,这对高效攻击带防护设备有重要意义。

猜你喜欢
旁路密钥加密
一种新型离散忆阻混沌系统及其图像加密应用
幻中邂逅之金色密钥
旁路放风效果理论计算
不停跳冠状动脉旁路移植术治疗非ST段抬高型心肌梗死效果分析
密码系统中密钥的状态与保护*
冠状动脉旁路移植术后早期心脏康复对预后的影响
一种基于熵的混沌加密小波变换水印算法
TPM 2.0密钥迁移协议研究
一种对称密钥的密钥管理方法及系统
加密与解密