APP下载

对加掩加密算法的盲掩码模板攻击

2019-02-25王燚吴震蔺冰

通信学报 2019年1期
关键词:掩码高斯分布成功率

王燚,吴震,蔺冰

(成都信息工程大学网络空间安全学院,四川 成都 610225)

1 引言

能量分析是利用加密设备在加密过程中泄露能量与敏感信息的相关性来攻击其密钥的一种方法。能量分析攻击有各种各样的实现方法[1-4],但大体可分为无学习和有学习这两类。无学习的能量攻

击包括简单能量分析(SPA, simple power analysis)[5]和差分能量分析(DPA, differential power analysis)[6]。DPA根据某种泄露模型,利用统计方式来识别猜测密钥的正确性,主要的泄露模型有汉明重量模型和汉明距离模型[7]。DPA采用的统计识别方法主要有分组能耗均值差[8]、Pearson相关系数[9]和互信息[10]。有学习的能量分析利用一台可控制的、与目标设备相似或相同的设备(称为实验设备[11]),精确地建立泄露信息的能耗模型(称为模板),以此对同类设备进行攻击。有学习的能量分析包括模板攻击(TA, template attack)[11]、随机攻击(SA,stochastic attack)[12]等。无学习的能量分析的优势是攻击者不需要拥有实验设备便直接对目标设备进行攻击,缺点是在能迹较少时攻击成功率比较低。有学习的能量分析由于建立了关于泄露信息的精确能耗模型,攻击时仅需较少的能迹(甚至只需要一条能迹)就能攻击成功,但缺点也很明显,即攻击者必须拥有一台可控制的实验设备。模板攻击是有学习能量分析中最成功、研究得最深入的一种方法,其中模板最基本的形式是多元高斯分布,其分布参数在模板训练阶段统计计算。为提高模板的攻击效果,部分研究着眼于改进多元高斯分布协方差矩阵,分别采用单位协方差、共享协方差、池化协方差等方法,在一定程度上降低计算成本、提高攻击效果[13-15]。也有一些研究着眼于充分利用多种类型泄露信息的联合能量攻击,以提高模板攻击的效率[16]。其他提高模板攻击效率的方法包括:利用相位相关性消除构架模板中的数据干扰,以构建高质量的模板[17];采用主成分分析(PCA, principal component analysis)对能耗数据进行降维处理,有效降低协方差矩阵的计算复杂度并在一定程度上提高攻击效率[18-19]。模板攻击的另一种研究思路是采用机器学习中的分类算法替代传统的多元高斯分布模板,例如,将贝叶斯分类的算法应用在模板攻击中[20],利用多类支持向量机作为模板实施模板攻击[21-22],采用神经网络作为模板进行模板攻击[23-24]等。

为应对能量分析对加密设备造成的显著威胁,研究人员发展出很多对抗措施,如抖动防护、加掩防护[25]等。加掩防护的原理是使用一个或多个随机掩码与可能发生泄露的中间值进行异或,从而使其泄露的能耗随机化,达到防御DPA攻击的目的。而研究人员又发展出高阶 DPA攻击[26-27]的方法来攻击具有加掩防护的加密设备。高阶DPA攻击利用多个中间值的组合值与它们对应泄露能耗的组合值具有一定的相关性这一事实实施攻击。高阶DPA比一阶DPA攻击需要更多的能迹,并且非常耗时。这是因为攻击者无法通过统计手段发现多个中间值的能耗泄露的准确位置,只能在猜测的泄露范围内对能耗进行交叉组合。这种方式极大地增加了攻击的计算量,降低了攻击的效率。虽然文献[28]中提出采用 FFT(fast Fourier transform)加速能耗组合计算的方法,但仍不能从根本上解决高阶DPA攻击效率低的问题。

模板攻击也被应用于攻击具有加掩防护的加密设备(后文中简称为加掩设备)。一种途径是利用模板辅助对加掩设备实施DPA攻击[29],包括几种具体方法。1) 在训练阶段根据已知掩码和明文,建立关于带掩中间值的模板,用于识别和计算攻击能迹的带掩中间组合值,攻击时以此代替能耗组合值实施高阶 DPA攻击。2) 在训练阶段根据已知掩码建立关于掩码的模板,攻击时识别攻击能迹的掩码并过滤特定的掩码以造成掩码不平衡,从而可以实施一阶 DPA攻击。3) 在训练时根据已知的明文和掩码,发现多个中间值的准确泄露位置,并计算其能耗组合值,建立无掩中间组合值关于能耗组合值的模板,用于在攻击时识别攻击能迹的无掩中间组合值,进而通过计算与猜测密钥对应的猜测中间组合值的相关系数实施DPA攻击。在不采用DPA而完全基于模板攻击的方法中,一种方法是采用<密钥,掩码>对的模板实施攻击[30],这种方法需要建立大量的模板,并同时攻击掩码和密钥;另一种方法是使用支持向量机(SVM, support vector machine)和神经网络(NN, neural network)建立攻击掩码的模板以及攻击带掩中间值的模板,采用先攻击得到掩码,去掩后攻击带掩中间值的方式获取设备密钥[31-32]。根据了解,所有对加掩设备的模板攻击均需要攻击者在训练阶段(profiling phase)了解使用的掩码。这样,在训练阶段使用的加密代码中必须包含对掩码的输入或输出,这与真实加密设备的代码必然有所不同。这种差异可能导致习得的能耗模型与真实设备的能耗模板存在一定差异,进而可能导致对真实设备的攻击成功率不高。此外,对硬实现的加密算法,攻击者无法改变加密的实现,无法获取设备加密时采用的随机掩码,因而以上方法均无法实施。

本研究的目标是攻击者使用一个仅知道密钥的加掩设备作为实验设备,不需要了解掩码,直接学习关于无掩中间组合值的模板,从而可以采用模板攻击的方法获取同类设备的密钥。这种方法称为盲掩码模板攻击。本文的主要贡献包括以下3个方面。

1) 提出了对加掩加密算法的盲掩码模板攻击方法,并从实验上证实了该方法的可行性。盲掩码模板攻击极大地降低了对加掩防护加密设备实施模板攻击条件和门槛。

2) 提出采用人工神经网络作为优化的盲掩码模板。通过大量的训练和攻击的实验,指出了在使用信噪比极低的能耗特征数据的神经网络训练中,必须采用全批而不能采用 mini-batch的训练策略。

3) 针对实验中神经网络训练极易出现过拟合的问题,分析并指出了导致这种过拟合的原因,并提出了有针对性的部分特征 PCA的数据预处理方法。该方法与L2权重正则化配合,可以有效地防止神经网络的训练发生过拟合,且不易出现欠拟合的现象。实验结果表明,基于神经网络的盲掩码模板攻击的成功率接近对无加掩防护设备的模板攻击。在对实验数据的攻击中,仅需8条攻击能迹就能够达到100%的成功率,最少攻击能迹数仅为一条(成功率为12%)。

2 对加掩设备的模板攻击研究现状

Oswald等[29]提出了几种对加掩设备的模板攻击方法。第一种称为预处理前的模板,该方法要求攻击者了解训练能迹所使用的掩码r,从而可以计算出带掩的Sbox(substitution-box)的输入ur和输出vr。训练时建立ur和vr的能耗模型Pr(e|ur)和Pr(e|vr)。攻击时使用这些能耗模型识别攻击能迹的ur和vr,并计算带掩中间组合值pre(ur,vr)与根据猜测密钥k计算的猜测无掩中间组合值pre(u,v)的相关系数,从而实施 CPA(correlation power analysis)攻击。其中能迹预处理函数pre(·)和中间值组合函数comb(·)采用三角多项式实现组合,以提高两者的理论相关系数。第二种方法称为预处理中的模板,该方法同样要求攻击者了解训练能迹所使用的掩码。攻击者建立关于掩码的能耗模型Pr(e|r),用于识别攻击能迹的掩码r。攻击时通过抛弃使用部分特定掩码的能迹,使攻击能迹中的掩码分布不平衡,导致中间值不能完全被掩码所掩盖,从而可以使用一阶DPA攻击设备密钥。第三种方法称为预处理后的模板,该方法利用已知的密钥、明文和掩码,在训练能迹中发现 Sbox输入和输出的准确泄露位置,据此计算能耗组合值pre,然后建立无掩中间组合值comb与pre的能耗模型Pr(pre|comb)。攻击时利用该模型识别攻击能迹的无掩中间组合值comb,并据此实施高阶DPA攻击。文献[29]中指出,由于计算能耗组合值pre时丢失了大量信息,这种攻击方法需要大量攻击能迹,不能体现模板攻击的优势。Lemke-Rust和Paar[30]提出建立<中间值c,掩码r>对的能耗模型Pr(e|c,r),攻击时需要同时攻击密钥和掩码对 <kˆ,rˆ> 。由于<k,r>的组合数非常多,只能实施按位的攻击。而按位攻击的弱点是,当攻击第i位时,其余位的数据产生的能耗对第i位而言就是噪声,这使得攻击时数据的信噪比更低,需要更多的能迹才能攻击成功。Lerman等[31]提出使用概率型支持向量机建立掩码的能耗模型SVM(e|r),用于攻击时识别攻击能迹的掩码rˆ,一旦攻击能迹的掩码被获知,加掩防护也就失去了作用。Gilmore等[32]采用的思路与上文基本相同,但使用神经网络建立掩码的能耗模型NN(e|r),获得了更高的掩码识别准确率。

上述对加掩设备的模板攻击均需要在学习阶段了解训练能迹所使用的随机掩码。因此攻击者必须能够完全控制加密设备的代码,以便输出每次使用的掩码,或从外部输入每次使用的掩码。这一要求不仅不易达到,而且其实验设备使用的代码由于需要输入或输出随机掩码,与真实加密设备的代码必然有所不同,对真实设备进行实际攻击时往往成功率比较低。

3 对加掩设备的盲掩码模板攻击原理

3.1 盲掩码模板攻击的基本思路

盲掩码模板攻击的思路来源于高阶DPA攻击。高阶 DPA是对加掩设备的无学习攻击方法。高阶DPA攻击不需要了解设备的随机掩码,利用多个无掩中间值的组合值对能迹进行分组,各分组的组合能耗的均值呈现出差异[26],从而可以采用组间差实施攻击。高阶CPA是高阶DPA的一种特殊方式。Coron等[33]证明了尽管由于随机掩码的作用,无掩中间值ci与其对应操作oi的泄露能耗ei不再具有相关性,但特定的多个无掩中间值的组合值comb(c1,…,cd)与相应的能耗组合值 pre(e1,… ,ed)之间却存在一定程度的线性相关性,即它们的Pearson相关系数ρ(comb,pre)≠ 0,从而可以实施高阶CPA攻击。

无掩中间组合值comb与能耗组合值pre有一定程度的相关性,意味着能够根据pre的值以一定的概率识别出正确的comb值,即存在概率分布Pr(comb|pre)。在统计或训练该概率分布时,由于无掩中间组合值comb与掩码无关,因此可以消除训练时对掩码的依赖。如果能够在训练阶段得到该概率分布,就可以采用模板攻击的方法识别正确的猜测密钥,如式(1)所示。

其中,comb(xi,k)表示根据明文xi和猜测密钥k计算得到的无掩中间组合值。由于训练概率分布Pr(comb|pre)时并不使用掩码,攻击时也不需要掩码,因此本文把这种模板攻击方式称为盲掩码模板攻击。

盲掩码模板攻击的关键在于找到能耗有一定程度泄露的无掩中间组合值。不同加密算法或同一加密算法的不同实现,无掩中间组合值comb的组合形式可能不同。由于训练设备的密钥已知,可以计算得到各种无掩中间组合值与能耗组合值的相关系数,并选择相关系数较大的无掩中间组合值的组合形式。

盲掩码模板攻击的首要目标是降低对加掩防护加密算法实施的模板攻击的门槛。根据上述的论述,通过对无掩中间值建模,可以消除创建模板时对掩码的依赖,从而实现了该目标。但之所以要对加掩防护加密算法实施模板攻击,就是希望在攻击阶段可以使用少量攻击能迹获取设备密钥,提高攻击的效率,要实现该目标,就需要高质量的模板。但由于掩码的存在,无掩中间组合值对应的能耗组合值中包含了大量掩码带来的噪声,且这类噪声的高斯性不强,可能导致传统的基于高斯分布的模板在攻击中需要大量能迹,而无法体现出模板攻击的优势。而神经网络不需要假设噪声的分布,并具有强大的非线性转换能力,可以用于创建质量更高的模板。

3.2 基于一元高斯分布的盲掩码模板攻击

如果能够找到泄露无掩中间组合值 comb(c1,… ,cd)信息的能耗组 合 形 式 pre(e1,… ,ed),其中e1,… ,ed对应的样本位置为t={t1,…,td},则模板攻击中各训练能迹和攻击能迹可以被转换为一个标量的能耗组合值pre。设无掩中间组合值comb有n个取值,其中combi对应的能迹分组为Si,i∈ [1,n],如果Si分组内各能迹的能耗组合值pre呈高斯分布,则模型Pr(pre|comb)可以用一元高斯分布来描述,如式(2)所示。

其中,

基于一元高斯分布的盲掩码模板攻击实际上是首先对能迹进行预处理,将各能迹转换为一个组合能耗值pre。在实际情况中,无掩中间组合值可能在多种能耗组合形式下发生泄露,而一元高斯分布的模板仅采用其中一种泄露,将丢失大量的泄露信息,对模板的质量和攻击效率不利。

3.3 基于多元高斯分布的盲掩码模板攻击

假设泄露无掩中间组合值 comb(c1,…,cd)信息的能耗组合形式 pre(e1,… ,ed)有多种,它们包含的能耗样本位置的并集为t={t1,… ,tn}, n>d。提取能迹p上位置集t的能耗作为能迹特征向量e=p[t],则 Pr(e|comb)可以用多元高斯分布来描述。

若攻击时使用m条攻击能迹,则最可能的密钥为

其中,

若攻击时使用m条攻击能迹,则最可能的密钥为

3.4 基于神经网络的盲掩码模板攻击

对加掩防护加密算法实施模板攻击的目的是以少量能迹获取设备密钥,提高攻击效率。实现该目标的前提是建立高质量的模板。而由于随机掩码的存在,能耗中包含了大量的数字噪声,且其噪声可能并不符合高斯分布。这将导致前两种基于高斯分布的模板质量低下,其攻击效率并不能体现出模板攻击的优势。因此,需要探索一种弱假设或无假设的创建模板的方法。

模板攻击的基本操作是根据能耗判断某个中间值(或中间组合值)的概率,其本质是机器学习的概率化分类识别。因此,可以用各种机器学习模型来代替高斯分布。目前,已有很多这方面的研究,例如使用支持向量机(SVM, support vector machine)[21-34]、随机森林(RF, random forest)[35-36]、人工神经网络(ANN, artificial neural network)[23-24]等作为概率型的分类模型。能耗的概率分布可能不符合或不完全符合高斯分布,这会导致基于高斯分布的模板攻击成功率不高。这些机器学习模型没有预先假设的概率分布,可以通过训练习得任何类型的概率分布,因此攻击成功率可以高于基于高斯分布的模板攻击。从已发表的实验结果看,当训练能迹足够时,随机森林树的攻击效果不如SVM和ANN。这是因为树的构造中必须将能耗离散化处理,而导致了信息的丢失。SVM与ANN的结果接近,但由于SVM本质上是二类分类器,多类SVM是一对一SVM或一对其余SVM的集合,训练多类 SVM 需要训练大量的二分类SVM,因此训练过程非常漫长。同时,根据实验,对于信噪比很低的数据,SVM的支持向量中包含了大部分训练向量,这意味着训练出现了严重的过拟合。因此,本研究采用神经网络代替高斯分布作为模板。

设训练阶段习得的分类器的概率模型为NN(e|comb),则攻击密钥的操作为

基于神经网络的盲掩码模板攻击中,神经网络的训练效果至关重要。由于是对无掩中间组合值建模,相应的能耗组合值中包含了大量掩码带来的数字噪声,其信噪比极低。在训练中容易出现3种现象:1) 神经网络在训练中无法收敛;2) 在训练精度很低时就出现过拟合;3) 同时出现这2种情况。关于极低信噪比数据的神经网络的训练方法还未见有专门的研究。通过大量实验,本文提出了一种数据预处理的方法——分段PCA处理,并探索出综合现有的防过拟合的措施的神经网络训练方法。

4 实验分析

4.1 实验数据

盲掩码模板攻击的实验采用公开的 DPA Contest V4能迹集。DPA Contest[37]公开了一组标准的能迹集,供研究人员测试和比较各种侧信道攻击方法,其第4版(DPA Contest V4)提供了在Atmel ATMega-163 智能卡上实现 AES-256(advanced encryption standard-256)加密算法,使用电磁探测获取的能迹集,共包括10万条能迹。DPA Contest V4中采用了 RSM (rotating S-boxes making)[38]加掩防护措施。本文的实验中使用其中5万条能迹,其中3万条用于模板训练,1万条用于训练的验证,1万条用于攻击实验。

4.2 攻击目标

根据第3节的介绍,盲掩码模板攻击的目标中间组合值来源于高阶 CPA攻击的目标中间组合值。因此,本文首先对DPA Contest V4实施了二阶 CPA攻击。二阶 CPA攻击的目标中间组合值comb是 Sbox无掩输入和输出的汉明距离。以第一轮 Sbox0为例,其对应的子密钥为k=108。设Sbox0的无掩输入为u=x⊕k,Sbox0的无掩输出为v=Sbox (x⊕k);汉明距离为comb = hw(u⊕v);对应的能耗组合值为 pre=e1×e2,其中e1、e2分别代表 Sbox0输入、输出操作的泄露能耗;位置在攻击前是未知的。通过对3万条训练能迹的平均能迹的可视化观察,确定了 Sbox0输入和输出的 2个大致的样本范围。pre是这2个范围中任意一对位置上能耗的乘积(能迹进行了中心化预处理[39])。攻击方法为

二阶CPA攻击结果如图1所示。

图1 二阶CPA攻击部分结果

图1中,t1与t2表示攻击时组合能耗的位置,corr表示中间组合值与能耗组合值的Pearson相关系数,key为最可能的密钥。图中所示的猜测密钥108与正确的密钥完全相同,说明攻击是成功的。

二阶DPA攻击成功,说明使用正确位置上的能耗组合值 pre=e1×e2,能够以一定的概率识别出正确的中间组合值comb = hw(u⊕v),即存在概率分布Pr(hw(u⊕v) |e1×e2)。这样,可以使用comb=hw(u⊕v)作为盲掩码模板攻击的目标。

此外,还可以选择以comb=u⊕v作为盲掩码模板攻击的目标,这是因为按照u⊕v值分组时,分组中的所有能迹的hw(u⊕v)是相同的,即有Pr(u⊕v|e1×e2)= Pr(hw(u⊕v) |e1×e2)。也就是说,以u⊕v为攻击目标,理论上并不影响概率分布。更重要的是,如果使用 Pr(u⊕v|e1×e2)识别出正确的u⊕v值,就可以根据已知明文x推导出唯一的k值 ; 而 使 用 Pr(hw(u⊕v) |e1×e2)识 别 出 正 确 的hw(u⊕v)值,可能的k值不是唯一的。此外,u⊕v的值实际上表达了所有的位组合形式。而物理电路上,不同的位的能耗不完全相同,以u⊕v为目标建模能够更精确地表达能耗模型,因此,以u⊕v为目标的攻击效率可能高于以hw(u⊕v)为目标。在后面的实验中,本文对这2种目标的模板攻击进行了比较,证实了这一推测。

4.3 特征选择

特征选择是模板攻击的重要步骤,准确选择信息泄露程度高的样本位置,对模板攻击能否成功以及成功率的高低有决定性的作用。最简单的特征选择是观察平均能迹的能耗变化规律,可视化地判断攻击目标操作的样本范围。但这种方法选择的特征区域包含大量与攻击目标信息无关的能耗,会对模板攻击造成非常不利的影响。目前基于统计的特征选择方法有平均能耗差(DOM,difference of means)[11]、能耗方差和(SOSD,sum of squared difference)[40]、能耗学生测试和(SOST,sum of student test)[40]、正则化类间差(NICV,normalized inter-class variance)[41]、基于子空间的方法[18,42]等。这些方法都必须有足够的信息(如明文或密文、密钥、掩码等)来计算要攻击的目标值,并据此对训练能迹分组,然后统计各分组的平均能迹之间的差异,从而得到揭示目标值信息泄露的指标。

本研究的目标是在未知掩码的情况下实施模板攻击,这意味着在训练阶段并不知道各能迹的掩码,无法计算加掩的攻击目标值。因此上述方法均不适用。但4.2节中进行的二阶CPA攻击结果提供了Sbox输入和输出的泄露位置。从图1可以看出,二阶CPA在多个位置组合上都能够攻击成功。事实上,使用3万条能迹的二阶CPA在2 302个位置对上攻击成功,虽然其中包含了大量重复的位置,去重后,仍有193个泄露位置。这些泄露位置上信息泄露的程度并不相同,可以认为,二阶DPA攻击中相关系数较高的位置上,能耗的信息泄露更加明显。因此,仅选择部分泄露位置提取能耗特征,本文根据这些位置对所对应的相关系数,从高到低选择,并计算这些位置对中各位置的并集。

4.4 基于一元高斯分布的盲掩码模板攻击

基于高斯分布的模板攻击要求泄露能耗呈高斯分布。根据3.2节与4.2节所述,一元高斯分布盲掩码模板攻击中采用能耗组合值pre,其中e1与e2分别是Sbox0输入和输出的能耗。首先检查pre是否符合高斯分布。设攻击的目标为hw(u⊕v),在hw(u⊕v)=4 的分组能迹上,取二阶CPA攻击中相关系数最高的一对位置的能耗作为e1和e2。能耗组合值pre的正则化直方图与其理想高斯分布的对比如图2所示。

图2 能耗组合值的高斯性定性分析

从图2中可以看出,p re=e1×e2的分布具有一定的高斯性,应该可以支持一元高斯分布的模板攻击。

据此,分别以comb = hw(u⊕v)和comb=u⊕v为目标,训练一元高斯模板。comb = hw(u⊕v)时共有9个模板,comb=u⊕v时共有163个模板。使用测试能迹集进行不同攻击能迹数的攻击实验。图3中比较了这2种模板攻击以及二阶CPA攻击的成功率与攻击能迹数的关系。

图3 一元盲掩码模板攻击与二阶DPA攻击比较

图3中HOCPA表示二阶CPA攻击,TA_HW表示以comb = hw(u⊕v)目标的盲掩码模板攻击,TA表示以comb=u⊕v为目标的盲掩码模板攻击。达到100%攻击成功率时,HOCPA需要的能迹数为1 500条,TA_HW需要700条,TA只需要100条。TA_HW和TA这2种模板攻击成功率达到100%所需的能迹数都比HOCPA所需的能迹数少,证明了盲掩码模板攻击的有效性,其中TA需要的能迹数比 TA_HW 少,说明以comb=u⊕v为目标是更好的选择。因此在以后的实验中,均以comb=u⊕v为攻击目标。

4.5 基于多元高斯分布的盲掩码模板攻击

为了提高模板攻击的成功率,应该尽可能利用能迹上的全部泄露信息。根据4.3节所述,二阶CPA攻击共得到193个泄露位置。这些位置都不同程度地泄露了Sbox0输入或输出的信息。要充分利用这些信息泄露,就需要采用多元高斯分布。实验比较了不同能耗特征数量与攻击成功率的关系,采用50条攻击能迹,实验结果如图4所示。图4中横坐标中的1*表示一元高斯分布的盲掩码模板攻击,作为比较基准。

从图4可以看出,采用2个能耗特征的二元高斯盲掩码模板攻击与基准攻击成功率相同。当能耗特征达到5个时,成功率略有上升,但继续增加能耗特征数量,成功率反而出现大幅下降。产生该现象的一个原因是,单一的能耗特征的分布并不符合高斯分布。图 5是u⊕v=4的分组中,一个泄露位置的能耗分布的直方图与高斯分布的比较。从图 5可以看出,单个位置的能耗分布明显与高斯分布不同。而在多元高斯分布中,各边际概率都应该符合高斯分布,因此多元高斯分布不能准确地反映能耗的实际分布情况,这是造成能耗特征增加、攻击效果不佳的原因之一。

图4 多元高斯分布盲掩码模板攻击中特征数与成功率的关系

图5 单个泄露位置能耗的分布情况

此外,还存在另一个造成能耗特征增加、攻击成功率下降的因素,即由于特征数过多而造成病态协方差矩阵,这个因素在本实验中表现得特别明显。为了尽可能地丢弃泄露信息,本文在选择特征时并未遵循文献[43]中提出的时间间隔原则。因此,有很多特征的样本位置是相邻的,这些特征之间相关性很高,更容易形成病态协方差矩阵。

对此,一个解决方案是采用 PCA对能迹的特征向量进行预处理。PCA在模板攻击中主要用于降维处理[42],这里采用 PCA的主要目的是防止产生病态协方差矩阵。图6是采用PCA预处理后的多元高斯分布的盲掩码模板攻击,其中,PCA0.4、PCA0.6、PCA0.8表示对能耗特征进行PCA处理,分别保留前40%、60%、80%方差的PCA维作为特征向量。ref(npois)表示不使用PCA预处理时,采用n个特征的攻击结果。从图6可以看出,全部能耗特征经 PCA预处理后的攻击成功率均超过未经PCA预处理且采用 100个特征的攻击成功率(ref(100 pois)),这证明了PCA防止产生病态协方差矩阵的能力。然而,所有采用PCA预处理的攻击成功率均未能超过未经PAC预处理且仅使用5个特征的攻击成功率(ref(5 pois))。有以下2个原因:1) PCA在降维的同时会造成信息丢失;2) PCA维是各元素能耗特征的加权和,其概率分布将会产生很大变异。由于本实验中各能耗特征本身就不符合高斯分布,因此PCA维的高斯性更差。

由上述分析可知,对加掩设备的多元高斯分布的盲掩码模板攻击中,不宜采用PCA处理,而只能选择有限的特征数量。这一限制造成了很大的信息损失。

图6 特征PCA处理的多元高斯模板攻击

4.6 基于神经网络的盲掩码模板攻击

4.6.1 神经网络结构与训练

在神经网络的结构选择上,已有实验证明,单个隐层的前向神经网络最符合模板攻击的需要。这是由于特征能耗中不存在像图像识别等拥有的高阶抽象特征,因而并不需要采用深度神经网络来提取高阶特征。神经网络在本研究中的作用是自动学习能耗的组合方式,并计算组合能耗相对于中间组合值的概率。在神经元的激活函数的选择方面,目前深度学习采用的 RELU(rectified linear unit)、SELU(sealed exponential linear unit)等激活函数也并不适用。这是由于RELU的非线性转换能力不如tanh函数或sigmoid函数。RELU主要应用在多层卷积网络中,其主要作用是防止梯度消失,而梯度消失的问题在单个隐层的前向神经网络中并不严重。经反复实验,本文采用的网络结构为[输入层=特征数,隐层=100个神经元,输出层=分类数],输入层的能耗特征进行了正则化处理(即将输入能耗特征数据映射到平均能耗为 0,标准差为 1的范围内);隐层采用tanh函数;输出层每个神经元代表一个类别的得分,采用softmax转换为各类的概率。需要特别说明的是,由于AES Sbox转换的特点,无掩中间组合值u⊕v的取值范围并不是0~255,而只是其中 163个值,因此,输出层的神经元数量为 163。训练和预测前,需要将实际的u⊕v值映射到连续的[0,162]之间的值域。实验中使用的神经网络结构如图7所示。实验中神经网络在tensorflow中实现,使用一块NVIDIA GTX980Ti显卡(6 GB内存)进行训练。

图7 神经网络结构示意

神经网络采用交叉熵损失函数(cross-entropy),采用Adam优化器训练。经反复测试,学习率采用0.01。每次训练迭代1万次,每次迭代都输入训练集的全部能耗特征向量,计算训练集的损失和精度,并由 Adam优化器调整网络权重。每迭代 10次输入验证集能耗特征向量,计算验证集的损失和精度,并保存验证集精度最高时的网络参数,作为后期攻击时的模型。

每次迭代采用训练集的全部能耗特征向量(以下简称为“全批训练”),这与目前神经网络训练通常建议采用mini-batch的方法不同。为了防止过拟合,也因为学习数据量可能太大,不能一次性加载到内存,训练神经网络时往往采用mini-batch的方式学习,即每次学习迭代时仅采用部分数据。但实验证明这种策略不适用对无掩中间组合值的能耗特征模型的学习。其原因是掩码产生了大量数字噪声,实验中能耗的信噪比太低,采用mini-batch难以发现梯度调整的正确方向。使用mini-batch的实验中,学习损失和精度一直呈现大幅振荡,难以收敛,而且mini-batch越小,振荡越大,收敛越困难。只有当每次迭代输入全部能耗特征数据时,模型的收敛最好。在本文的实验中,由于显卡内存足够大,能耗特征值采用32 bit浮点数表示,全部数据可以一次性加载到GPU中运算。

4.6.2 初步的神经网络盲掩码模板攻击

首先测试能耗特征数量与神经网络盲掩码模板攻击成功率的关系,其结果如图8所示。

图8中,NN20表示采用20条攻击能迹时基于神经网络的盲掩码攻击的成功率,TA20表示采用20条攻击能迹时基于多元高斯分布的盲掩码模板攻击的成功率,在这里作为对比的基准。从图8中可以看出,当特征数小于或等于5时,多元高斯模板的成功率高于神经网络;但特征数超过5个之后,神经网络的成功率迅速上升,而高斯模板的则开始下降。这是因为神经网络不存在病态协方差的问题,而其强大的非线性转换能力,使其可以有效利用更多能耗特征中包含的信息。当特征数达到 40个时,20条能迹的神经网络攻击成功率达到100%;但当特征数超过 60个之后,神经网络的攻击成功率开始急速下跌。这是因为在神经网络的训练中产生了严重的过拟合。神经网络的学习曲线如图9所示,可以清楚地看到过拟合现象的发生。

图8 神经网络盲掩码模板攻击中特征数量与成功率的关系

图9 神经网络训练过程中的过拟合与特征数量的关系

在图9中,当仅使用40个能耗特征时(pois=40),验证集损失持续下降,没有出现过拟合。当使用 50个能耗特征时(pois=50),验证集损失在1 200步之后开始上升,出现轻微的过拟合,但验证精度超过pois=40的精度。当使用60个能耗特征时(pois=60),过拟合变得比较严重,验证集精度也低于pois=50的精度。由于比例关系,图9中没有表示出使用更多特征时的训练情况。事实是,当特征更多时,过拟合更严重,精度下降更大。当使用全部193个特征时,验证集精度下降到只有0.018 2。

此外,从图9可以看出,训练集的最小损失(即出现过拟合时的损失)随能耗特征的增加而减少,验证集中pois=40和pois=50也符合这一规律。这是因为随着特征数量的增加,网络能够更好地拟合到目标值。然而验证集中当pois=60时出现例外,其最小损失大于pois=40或pois=50的最小损失值。这一现象说明,导致过拟合的原因是增加能耗特征数量后,数据中的噪声大量增加,训练中利用了训练集中的噪声特征拟合目标值,导致模型泛化能力大幅下降,从而出现过拟合。

4.6.3 神经网络训练过拟合的处理

过拟合是机器学习中经常出现的现象。常见的防止过拟合的方法有dropout、采用更简单的模型、使用更多的学习数据、权重正则化、在输入或权重或网络响应上增加噪声等。在对能耗数据的训练中,dropout并不适用。根据4.6.1节的实验,能耗特征训练时必须使用全批训练才能收敛。dropout丢弃部分数据,其效果等效于使用mini-batch,会导致学习不收敛。使用更多的数据以防止过拟合的本质是增加训练数据的覆盖范围,避免训练时仅能访问部分特征。而能耗数据的训练中出现过拟合的原因是训练数据的噪声过大,因此使用更多的能迹并不能防止此类过拟合。最后,增加噪声的方法在这里显然更不可取,因为能耗数据本身信噪比就已经非常低了。因此,本文在防止过拟合的实验中采用L2规范化。

1) L2规范化防止过拟合的实验分析

L2规范化是在原损失函数(本文中为交叉熵损失函数)的基础上,增加连接权重的L2惩罚因子,从而防止权重的方差过大。一般而言,更小的权重方差意味着更简单的拟合模型,而简单的拟合模型不易出现过拟合现象。带有 L2规范的训练损失函数形式为λ= 、 、 、 、 、 进行了防止过拟合的实验。图 10显示了各种λ取值下神经网络的训练精度(用验证集精度表示)的对比情况。本文使用全部 193个能耗特征,分别采用0.01 0.02 0.05 0.1 0.2 0.3

图10 L2规范化神经网络的训练结果对比

图10中NN(50)表示采用50个特征的未经L2规范化的神经网络训练。NN(50)是 4.6.2节特征数量与神经网络攻击实验中训练精度最高、攻击成功率最好的,在这里作为对比的基准。L2规范化训练中,λ= 0.01、 0. 02、 0. 05时网络训练均出现大幅过拟合,即未能阻止过拟合,在图 10中对应的精度也很差;λ= 0.1、 0. 2、 0. 3时网络训练均未出现过拟合,但网络训练精度仍然不如NN(50)。这是因为在网络训练中通过L2规范化在减小权重变化方差的同时,也弱化了神经网络的拟合能力。由此看出,单纯采用 L2规范化虽然可以防止过拟合,但并不能提高网络训练精度。

2) 能耗特征PCA预处理防止过拟合的实验分析

经分析认为,本实验中出现过拟合的原因在于大量的能耗特征中信息泄露并不明显。如4.3节所述,实验中采用的特征位置来源于二阶CPA攻击成功的样本位置对。这些样本位置对按相关系数降序排序,越靠后的特征,其包含的泄露信息越少,与泄露信息无关的噪声特征越多。在训练过程中,当采用更多能耗特征时,训练数据中包含了更多的噪声更大、信息泄露更不明显的能耗特征。这些无关的特征被用于训练集的拟合,虽然提高了训练集的拟合精度,却弱化了模型的泛化能力,从而导致过拟合。

对此,可以对数据进行PCA预处理,通过提取能耗特征中的主成分,消除部分噪声,从而达到防止过拟合的目的。但PCA处理不可避免会同时带来信息的丢失,为了避免出现严重的信息丢失,本文提出一种分段PCA处理的方法。分段PCA是指根据泄露位置对应的Pearson相关系数(参见4.3节),将能耗特征分为高泄露和低泄露2个部分,分别采用不同的降维幅度进行PCA处理。高泄露部分降维幅度小,保留大部分特征;低泄露部分降维幅度大,以过滤更多的噪声。本文对采用全部特征进行PCA预处理(整体PCA预处理)和分段PCA预处理2种方案进行了实验对比,实验结果如图11所示。

图11 PCA预处理的神经网络训练结果对比

图11中,NN(50)表示采用50个特征的无PCA预处理的神经网络攻击结果,在这里作为对比的基准;PCA(x)表示对全部能耗特征进行PCA预处理,x表示保留方差比例为x的主成分作为特征向量;CCy_(a_b)表示对能耗特征进行分段PCA预处理,y表示划分高、低泄露特征的相关系数(以下称为阈值相关系数);分别采用了0.07、0.08和0.09 3种相关系数。a和b分别表示高、低泄露特征的PCA处理中的保留方差比例。

从图11中可以看出,整体PCA处理中,除保留方差比例为0.95外,训练精度均超过基准。保留方差比例为0.9时,训练出现轻微过拟合。保留方差比例为 0.95的训练精度与采用全部特征而不做PCA相近,仍然出现了大幅过拟合,原因是其中包含的噪声仍然过多。分段 PCA预处理中,阈值相关系数为 0.09时,训练达到了最高验证精度20.79%。阈值相关系数为0.07和0.08时,训练均出现了不同程度的较弱的过拟合。

3) 结合PCA预处理和L2规范化防止过拟合实验

鉴于 PCA处理中仍然存在一定的过拟合,因此使用L2规范化进一步优化网络训练。以下实验对图11中的几种PCA预处理方案均采用L2规范化重新训练网络,其中,L2规范化的系数λ根据几种方案中出现的过拟合程度来取值,过拟合严重的取 0.1,比较严重的取 0.01,非常微弱的取0.001,然后根据训练情况调整λ。图12显示了各PCA预处理方案的最佳λ的L2规范化训练精度与未采用L2规范化的训练精度对比。

图12 结合PCA预处理和L2规范化防过拟合的神经网络训练

从图 12的实验结果可以看出,选择恰当的λ时,L2规范化训练均可以提高训练精度。且过拟合越严重,训练精度提高越大。即使对于没有出现明显过拟合的情况,如CC0.09_(0.95_0.85),L2规范化训练仍然能够提高精度。

4.6.4 基于神经网络的盲掩码攻击实验

本实验采用最佳神经网络训练结果作为模板,进行了盲掩码模板攻击,其结果与使用已知掩码的模板攻击的比对如图 13所示。已知掩码的模板攻击是指在训练阶段和攻击阶段,能迹使用的掩码均是已知的。这对加掩防护的加密设备不是一种现实可行的攻击方法,但它模拟了对无掩码防护的加密设备的模板攻击,由于掩码在此并未起到防护作用,因此其攻击成功率应当相当高。本文选择这种攻击模式是为了验证基于神经网络的盲掩码攻击的真实效果。图13中,TA_WITH_MASK表示使用已知掩码的模板攻击,NN_NOMASK表示基于神经网络的盲掩码模板攻击。

从图 13可以看出,正确训练的神经网络盲掩码攻击的成功率已接近对无掩码防护的模板攻击成功率。4条攻击能迹时,攻击成功率已达到90%以上;8条攻击能迹已达到100%的成功率;3条能迹的猜测熵[44](多次攻击中正确密钥的平均排名,最小为1)为2.12,已在实际可攻击的范围内;最少一条能迹就能攻击成功,成功率为18.4%。

图13 神经网络盲掩码攻击的成功率与攻击能迹数的关系

5 结束语

相比现有的针对加掩防护加密算法的模板攻击,盲掩码模板攻击可以有效地降低对加掩防护加密算法的模板攻击的条件和难度。现有的技术均要求攻击者能够了解设备在每次加密时使用的随机掩码。这意味着攻击者必须能够完全控制训练设备,可以修改设备上加密算法的实现代码,从而在每次加密时输出使用的随机掩码,而且,为了保证模板的对真实设备攻击时的有效性,修改代码时还要尽可能避免或者减小对能耗的影响。但由于训练设备与被攻击设备的加密实现不可能完全相同,其模板在攻击时往往无效或攻击效率低下。因此现有对加掩防护加密算法的模板攻击技术实施的条件高、难度大、攻击效果不稳定。而且当加密算法采用硬件实现时,由于无法获得训练设备的掩码,因而无法使用现有的技术实施模板攻击。而本文提出的盲掩码模板攻击可以在攻击者完全不了解掩码的情况下,仅使用一台已知密钥的设备作为训练设备,训练或统计出模板,以此实施模板攻击。这一方法显著降低了训练和攻击所需的条件。同时,由于训练设备与被攻击设备的实现完全相同,可以有效保证该方法得到的模板在攻击时的有效性。

本文的实验分析证明了盲掩码模板攻击具有较高的攻击效率。与同样不需要了解掩码的二阶CPA攻击相比,盲掩码模板攻击需要的能迹数小2个数量级,达到100%攻击成功率时,二阶CPA需要1 500条攻击能迹,基于神经网络的盲掩码攻击仅需8条能迹,而所需的代价很小,仅需要一台已知密钥的设备。

此外,实验结果表明,基于神经网络的盲掩码攻击比基于统计的一元或多元高斯模型的盲掩码攻击更为有效,前者达到 100%攻击成功率所需的能迹数为8条,而后者需要100条。但对低信噪比数据的神经网络训练极易出现无法收敛或过拟合,需要采用一系列措施保证神经网络得到有效训练。实验表明,对于信噪比很低的能耗数据,神经网络训练时必须采用全批数据训练才能收敛。本研究认为,这一结论并不局限于对能耗数据的神经网络训练,而是适用于各类极低信噪比数据的神经网络训练。此外,为防止神经网络训练出现过拟合,本文提出了对能耗特征进行分段PCA预处理和L2规范化的训练方案。该方案能够最大限度地利用低信噪比数据中非常有限的信息特征,同时防止噪声产生的过拟合。

需要说明的是,盲掩码模板攻击,特别是基于神经网络的盲掩码模板攻击,其训练阶段需要较长时间。因为盲掩码模板攻击实施的前提是可以对加掩防护的加密设备成功实施高阶CPA攻击。高阶CPA攻击在这里起到2个作用,一是验证盲掩码攻击所攻击的目标中间组合值是否存在信息泄露,二是提供了盲掩码模板攻击所需要的信息泄露位置。高阶CPA非常耗时,此外,神经网络的超参数,如网络隐层大小、学习率,PCA处理中的保留方差比例、L2规范化因子λ等,也需要通过多次实验才能找到最佳的设置,这些都导致模板学习需要较长的时间。但现有的对加掩防护的模板攻击技术也都需要较长的准备和训练时间,因为训练前需要修改训练设备的代码以便输出加密时使用的随机掩码,而且还要防止修改的代码对加密过程的能耗造成过大的影响,这一准备工作需要耗费大量时间。同时,现有技术中最佳的模板模型也是基于神经网络的,其训练同样需要较长时间。虽然由于其数据不含掩码产生的数字噪声,能耗数据信噪比较高,训练相对容易,但需要创建更多的模板(需要分别对掩码和中间值创建模板),这意味着需要较长的训练时间。由于修改设备代码的时间是不确定的,因此无法对本文的盲掩码模板攻击与现有技术的训练时间进行定量比较,但定性上看,盲掩码模板攻击相对于已知掩码的模板攻击,其效率至少是可比的,如果不是更高的话。在盲掩码模板攻击中,由于密钥已知因而不需要猜测,二阶CPA可以在几十分钟到数小时内完成,而已知掩码模版攻击则需要花费数小时甚至数天来改写设备代码。

综上所述,盲掩码模板攻击可以有效地降低对加掩防护加密算法的模板攻击的条件和难度,其中基于神经网络网的盲掩码模板攻击具有很高的攻击成功率。相对于现有技术,本文方案付出的训练时间上的代价并不显著。

猜你喜欢

掩码高斯分布成功率
成功率超70%!一张冬棚赚40万~50万元,罗氏沼虾今年将有多火?
AES高阶掩码方案抗功耗攻击
旁路功耗分析中不同平台的差异化研究*
利用Box-Cox变换对移动通信中小区级业务流量分布的研究
如何提高试管婴儿成功率
2种非对称广义高斯分布模型的构造
什么是IPv6的前缀长度
如何提高试管婴儿成功率
在航集装箱船舶摇摆姿态的概率模型
一种基于改进混合高斯模型的前景检测