针对DES密码芯片的CPA攻击仿真设计方案
扫描二维码
随时随地手机看文章
摘 要: 为研究密码芯片抗功耗分析性能,构造了一个功耗分析研究平台,结合DES算法在平台上进行了相关性功耗分析(CPA)攻击仿真实验。根据猜测部分密钥时的模拟功耗与猜测整个密钥时模拟功耗之间的相关系数大小来确定猜测密钥的正确性,由此可以确定整个密钥。这种功耗分析仿真方法,能够揭示未经防御的DES算法面临CPA攻击时的脆弱性。
随着Interne的迅猛发展,智能卡、掌上电脑和移动电话的不断普及应用,不犯罪分子就利用网络对别人进行信息的偷盗,人们需要对一些信息隐私进行保护,因此信息安全问题日益突出。近年来,出现了一种新的攻击方法,通常被称为旁道攻击。它是根据密码芯片在加解密时所泄漏的一些微弱的旁道信息,如功耗、时间、电磁辐射及差错信息等进行攻击。攻击者利用旁道泄漏信息,结合统计学等学科的知识,能够在短时间内成功破解一些密码算法的密钥。以下本文的分析结果。
在旁道攻击方法中,功耗分析方法应用得最为广泛和成熟,因为功耗信息最容易测量和分析。研究针对密码芯片的功耗分析方法是为了检验芯片是否具有抗功耗分析能力或是检验密码芯片抗功耗分析攻击能力的大小。相关性功耗分析是功耗分析中一种,相关性功耗分析每次考虑的相关位比传统的差分功耗分析多,所以更具有威胁性。
1 DES密码算法的硬件结构及功耗泄漏模型
数据加密算法(Data Encryption Algorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的。DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。
1.1 DES密码算法的硬件结构
DES密码算法是分组加密算法,能够对固定长度的一组明文进行加解密,如果采用ASIC方式实现,固定长度意味着运算时的中间结果所需要的存储宽度是相同的。DES密码算法的轮结构也是相同的,每轮运算可以共用一个硬件结构体,所不同的是每轮运算时所用的子密钥是不同的。DES算法的结构特点适合ASIC方式实现,其通用的硬件结构如图1所示。
在ASIC方式实现的硬件电路中,攻击者经常针对寄存器进行攻击。之所以选择寄存器攻击主要原因有:
(1)寄存器在ASIC中通常被用来做存储器,包括暂存一些与密钥相关的关键数据。
(2)与反相器、“与非门”等非时序逻辑相比较,寄存器的功耗大一些。
(3)寄存器是时钟沿触发电路,易于在时序上定位。[!--empirenews.page--]
1.2 功耗泄漏模型
目前绝大多数密码芯片都是基于CMOS工艺,CMOS逻辑电路的动态功耗取决于逻辑门的翻转率。单个逻辑门的功耗可以表示为:
式中, f表示逻辑门最大变化率,P0→1表示0→1转换的概率,CL是逻辑门的负载电容,VDD是电源电压。功耗分析正是以式 (1)中动态功耗对数据的依赖性为理论基础的。整个电路硬件内部结构非常复杂,动态功耗取决于整个逻辑电路的整体翻转率的统计特性和电路所采用的工艺。为简单起见,可以简化地认为电路的总功耗与整体翻转率成一定的正比关系。基于这种相关性建立起来的功耗模型能够反映出当前密码算法电路所处理的数据引起的瞬时功耗的变化情况。功耗分析攻击是通过对多次测量得到的功耗曲线,进行统计分析出电路中相应数据位的变化来破解密钥的。
功耗泄漏模型一般是在寄存器级建立。攻击者经常把攻击点选在DES密码算法首轮或最后一轮的寄存器输出处,记输出时刻为t,则瞬时能耗T(t1)如下:
式中,D0(t0)代表寄存器中在前1个时刻t0所存储的二进制序列, D0(t1)代表寄存器中在下1个时刻t1所存储的二进制序列,δ代表转换时的1个因子。通过比较前后时刻相应码字的变化,当码字由0→1时,总模拟功耗值加1;当码字由1→0时,总模拟功耗值加1×(1-δ)。δ的大小根据算法实现的平台统计分析得到,对于一般的CMOS逻辑电路,δ通常取值为0.17。
2 CPA攻击原理
功耗模型一般是基于所处理数据的线性汉明距建立。如1.2节所述的瞬时功耗为:
式中所示的相关系数说明部分密钥位猜测正确时,中间计算结果与加密器件的瞬时功耗在被攻击时刻能够关联起来,对应时刻的相关系数也是最大的。而用错误的猜测密钥计算出来的中间结果与功耗之间不具有相关性或仅有弱相关性,其相关系数很小。根据这一原理,可以用仿真的方法对密码算法电路进行攻击,根据攻击的难度可以判断抗功耗分析性能。[!--empirenews.page--]
3 功耗分析仿真平台
在系统的设计阶段,人们大多利用计算机进行数学仿真实验,因为修改、变换模型比较方便和经济。在部件研制阶段,可用已研制的实际部件或子系统去代替部分计算机仿真模型进行半实物仿真实验,以提高仿真实验的可信度。在个别情况下,可进行全物理的仿真实验,这时计算机仿真模型全部被物理模型或实物所代替。
建立的仿真平台如图2所示。仿真平台主要由逻辑模拟器、功耗估算器和功耗分析模块组成。框图中应用Mentor公司提供的ModelSim作为逻辑模拟器,逻辑模拟器输入有:所设计密码电路的硬件语言描述代码、电路的激励文件和一些反标延迟信息等。输出的密码电路的功耗仿真结果是以vcd格式存储的文本文件,这个vcd文件包含了所有的信号模拟变化以及相应的仿真时刻标签,然后用VisualC++对vcd文本文件进行处理,得到模拟功耗数据,最后用MatLab对模拟功耗数据进行统计分析,推测密钥信息。
要统计DES密码芯片中每个时钟周期的模拟功耗值,可以通过统计关键寄存器中在相邻时钟周期内0、1的变化情况。根据式(2)所示已经建立的功耗模型,将电路所处理的数据变化转换为模拟功耗变化即可。
4 DES算法的CPA攻击仿真及结果分析
基于所建立的功耗分析仿真平台,结合分组密码算法DES算法进行功耗分析攻击实验。下面是CPA攻击的详细步骤及结果分析。
(1)用仿真的方法进行攻击的第1步是产生1个仿真功耗文件
任意选择1 000个随机明文和1个固定但随机的密钥。每轮加密之后,记录下寄存器中数据二进制序列的变化情况,根据建立的功耗泄漏模型,统计模拟功耗值。这样仿真器就产生1个包含N×16的矩阵M1。
(2)选择寄存器中M个最高位,用与步骤(1)相同的明文及密钥进行仿真实验
仿真器统计寄存器中位的变化数目,结果存储在矩阵1 000×1的矩阵M2中,在这个验证实验中,选择M为8,然后计算M1的所有列和M2的相关系数,如下:
ci=C(M1(1:1000,1),M2) (7)
式中,i=1,…10, M1(1:1000), i代表矩阵M1的第i列向量。步骤(1)和步骤(2)都用了同样的明文的密钥,所不同的是它们考虑的位变化的数目不同。第(2)步产生的值是第(1)步初始化密钥加操作计算值的预测。如果计算是正确的,M2和M1的第一列的相关系数比其他列要高得多。图3为预测的情况。
(3)重复步骤(2),但使用一个不同的密钥
这时产生1个功耗文件矩阵M3。与第(2)步一样计算M3和M1所有列的相关系数:
式中,i=1,…10。由于实验中使用了一个不同的密钥产生M3,所以M3和M1所有列的相关系数将是很小的(或者说是没有相关性),包括第1列。通过计算得出如图4所示的相关系数图,图中的曲线表明其结果和预测的相同。[!--empirenews.page--]
(4)对所有8 bit密钥组合进行实验
对这个实验进行拓展,对密钥的最高L=8比特所有可能性进行猜测,也就是对这8 bit进行强力攻击,这样就能产生1个1 000×2L的矩阵M4。8 bit密钥组合中必有一个是正确的密钥,而且只有这个密钥计算出的第1轮功耗变化与第1轮是统计相关的(相关系数比较大),由此可以通过这种方法推测出密钥。图5为M1的第1列和M4的所有列之间的相关系数。从图中可以看出,所猜测的密钥只有1Ahex=30dec时具有较高的相关性,所以正确的密钥是(30)dec。
式中,i=0,…2L-1。
通过功耗仿真的方法可以对DES密码芯片进行成功的攻击,根据攻击的难度大小,也就是所得到的相关系数的大小,可以判断一个密码芯片抗功耗分析攻击能力的大小,这样就能够在设计阶段评估密码芯片的抗功耗分析攻击的能力大小,为密码芯片设计者提供参考,以便及时添加相应的抗功耗分析的防御措施。
抗功耗分析性能的评估标准在很多文献中只是简单提到过,且没有统一的标准。本文中采用了KrisTri所用的评估标准MTD(Measurements To Disclosure),也就是对于某个密码芯片来说,能够破解1 bit密钥所需要的随机明文数目。本文模拟攻击过程也可以用这种标准来衡量密码芯片的抗功耗分析性能。
为研究密码芯片的抗功耗分析性能,搭建了功耗分析仿真平台,并结合DES分组加密算法进行了相关性功耗分析攻击实验。实验结果表明,搭建的仿真平台是有效的,且说明未经过防御的DES算法容易受到相关性功耗分析的威胁。