基于FPGA加密芯片的DPA实现与防御研究

2011-06-05 11:02高献伟
电子设计工程 2011年22期
关键词:掩码明文能量消耗

曾 辉 , 李 飞 , 高献伟 , 钱 丹

(1.成都信息工程学院 四川 成都 610225;2.北京电子科技学院 电子信息工程系,北京 100070)

近年来功耗分析技术对密码芯片的安全产生了严重的威胁,功耗分析属于旁路攻击技术的一种且威胁性最高。而差分功耗分析(DPA)是功耗分析攻击中的一种主要手段[1]。攻击者利用通过对硬件加密设备中的CMOS电路锁定时产生的动态能量消耗曲线等边信道信息进行测量和分析,采用非侵入的方式提取设备的加密密钥等秘密信息。所以攻击者者对被攻击器件不需要有深入地了解就能破解例如DES、AES等加密算法。与传统破解加密芯片的方法相比,DPA更隐蔽性而且更难防范。密码芯片应用于人们生活中的各个领域,因而对密码芯片有关DPA等攻击技术的研究很有必要。

为了防范差分功耗分析,以往学者提出多种抗功耗分析的方法。大致有两个方向:一种是从硬件条件为出发点对电路cell级的功耗平均和掩盖方法进行研究,提出相应的措施防止有关密钥信息的泄露。但是这些方法法大多需要较大的硬件代价,也需要特殊的后端工具的支持,不易实现。另外一种就是从软件条件为出发点,也就是对加密算法本身进行优化。其中掩码技术(Mask)就是一种主要的手段,在加密过程中引入与实际处理数据不相关的另外—个变量,从而使加密器件所泄漏的功耗信息与实际处理数据相关性大大降低。这种方法易于实现而且能够很好的防范一阶差分功耗攻击。

文中首先以FPGA为实验平台,实现对AES(Advanced Encryption Standard)的加密流程,然后对没有进行防御的AES算法进行DPA攻击,证明DPA等功耗分析攻击对加密芯片进行破解的可行性。然后对AES加密算法的各个流程通过Mask技术优化,以达到有效地抵御一阶或更高阶的DPA分析。最后实验结果证明文中防御措施的可行性和正确性,并分析这种方法的不足之处。

1 功耗分析概述

差分功耗分析攻击的基本思想是通过分析密码设备的能量消耗来获得密钥[2]。本质上这种攻击利用了两类能量消耗依赖性:数据依赖性和操作依赖性。功耗分析攻击可分为简单功耗分析(SPA)和差分功耗分析(DPA)。

简单功耗分析(SPA)是直接简单的对密码算法运算时的能量信号做分析,SPA利用对于不同的操作和不同的数据,各能量迹各尖峰形状不同这一特性进行攻击。差分功耗分析(DPA)则是分析能量间的差异性,并从这种差异性来寻求密钥。DPA分析固定时刻的能量消耗与被处理数据之间的依赖关系。因此,DPA攻击仅仅关注能量迹的数据依赖性。

1.1 差分功耗分析的原理

差分功耗分析攻击是最普遍的能量分析攻击,与SPA攻击相比实施DPA攻击需要大量的能量迹。

首先分析一次AES加密操作的能量消耗与明文第一个字节MSB之间的依赖关系,记该比特位d(明文第一个字节的最高有效位)。为了确定d对能量消耗的影响,测量微控制器分别加密1 000个随机明文时的能量消耗。这样可以获得约500条当d=0时加密操作的能量迹,以及约500条当d=1时的加密操作能量迹。

确定d对能量消耗影响的一个简单方法就是计算平均值之差,即分别计算所有d=0时的能量迹的平均值(以1 μs为单位的时间点上对500个能量值进行平均)与所有当d=1的能量迹的平均值。以获得一条d=1的平均能量迹和一条d=0的平均能量迹。将这两条平均能量迹作减法运算。可以得到图1。这些尖峰表明了微控制器能量消耗依赖于d的那些时间。在这些时刻,微控制器所执行的指令要么直接对d进行处理,要么所处理的某些数据依赖于d。

图1 d=0和d=1时的平均能量迹之差Fig.1 The difference of average energy about d=0 and d=1

由图1可以看出最大尖峰大概位于76 μs,检查一下微控制器所执行的程序代码就可以证实在这一时刻加载了明文的第一个字节,值d是该字节的MSB,加载操作的能量消耗对d有很强的依赖性。因此利用这一特性就可以确定微控制器使用的密钥。

1.2 密钥猜测的理论依据假设检验

对于两个独立的样本空间(X1,…,Xn)和(Y1,…,Yn),且Xi~N(μx,σ),Yi~N(μy,σ)。 对于假设 μx-μy=0 和 μx-μy≠0有3种概率分布的可能性,其中一种是验证假设对真实值的影响大小。如假设正确,真实值和假设之间必然有一定的联系并使用下述模型表示。样本期望和方差是DPA攻击的两种假设检验的方法。协方差σxy和相关度ρ(x,y)分别表示为=E(XY)-E(X)E(Y)对于独立随机变量X和Y,ρ(X,Y)=0。 对于普通随机变量变量 X和 Y,使用假设H0:ρ=0和H1:ρ≠0,即被称为计算样本集差异的相关性方法。最常用的距估计是用样本均值来估计总体均值E(X),即E攻击者通常使用T测试比较H0和H1来确定,如果密钥选择正确,则测得的轨迹应存在统计差别,具体表现为轨迹上有明显的尖峰。

1.3 差分功耗分析的攻击步骤

由上可知这种DPA攻击利用统计学方法来破解密钥是一种很强有力的边道攻击技术。

DPA攻击存在一种一般性的攻击策略。该策略包括5个步骤:

第一步:选择所执行算法的某个中间值。这个中间值必须是一个函数f(d,k),其中k是密钥的一小部分。在大部分攻击场景中,d不是明文就是密文(解密过程)。满足这个条件的中间值可用于恢复k。

第二步:测量能量消耗。测量密码设备在加密或解密时的能量消耗。

第三步:计算假设中间值。攻击的下一步是对于每一个可能的k值,计算对应的假设中间值。

第四步:将中间值映射为能量消耗值。v=0和v=1。

第五步:比较假设能量消耗值和能量迹。

2 DPA对AES加密算法的实现

2.1 AES加密算法概述

AES是美国联邦政府采用的一种区块加密标准[3]。AES算法分组长度为128 bit,密钥长度可分别为128 bit/192 bit/256 bit,文中以128 bit密钥长度的AEB为例来说明。AES算法的加密和解密过程分别有10轮迭代,加密过程每一轮迭代包括字节代换(ByteSubstitute)、行移位(ShiftRow)、列混 淆(MixColumn)、轮密钥加(RoundKey)4 个步骤,但最后一轮没有列混合;解密过程每一轮迭代包括行移位(ShiftRow)求逆、字节代换(ByteSubstitute)求逆、轮密钥加(RoundKey)、列混淆(MixColumn)求逆4个步骤,但最后一轮不包括列混合求逆。种子密钥扩展生成轮迭代所需要的10组子密钥。AES算法的加密与解密流程如图2所示。

图2 AES算法加解密过程Fig.2 AES encryption algorithm process

2.2 AES加密算法实现

为了下文进行DPA攻击测试,首先要做的就是基于FPGA的AES加密算法的实现。文中采用Altera公司的CycloneⅡ系列中的EP2C8Q240C8作为AES加密和DPA攻击对象,在QuartusⅡ8.1软件中通过使用verilog硬件描述语言编写程序完成AES加密操作。加密平台可具体分为5个模块:串口接收模块、8位数据转32位数据模块、AES加密模块、32位数据转8位数据模块和串口发送模块,AES加密模块又包含S盒变化模块、轮函数模块和密钥扩展模块。由于EP2C8Q240C8资源有限,只有8 256个逻辑资源和138个用户可分配管脚,所以设计为用32位数据作为AES加密模块的输入经4次输入得到128位数据然后进行加密。

5个模块其中串口接收模块、8位数据转32位数据模块、32位数据转8位数据模块和串口发送模块这4个模块数据数据通信模块用于实现FPGA与计算机之间的通信,AES加密模块是实现对明文加密。图3为AES加密算法的顶层模块原理图。

图3 AES加密算法顶层模块原理图Fig.3 AES encryption algorithm top-level module

经编译、综合完成后,对此顶层模块进行仿真。通过QuartusⅡ8.1自带的仿真工具可以对算法的正确性进行验证。

设明文(16进制)为00112233445566778899AABBCCDD EEFF,初始密钥(16进制)为 0001 0203 0405 0607 08090A0B 0C0D 0E0F,得到的密文(16进制)是 69C4 E0D8 6A7B 0430 D8CD B780 70B4 C55A。加密仿真结果如图4所示。

图4 AES加密算法仿真结果Fig.4 AES encryption algorithm simulation results

从仿真图中可以看出仿真结果完全正确,下一步下载到FPGA芯片中进行功能实现。FPGA芯片通过RS一232连接到计算机,再通过串口调试软件输入明文和密钥,经数据接收模块发送到FPGA密码芯片中,经过加密后,密文经数据发送模块发送到计算机上,实现加密结果的输出。如图5功能实现所示。

2.3 AES加密算法的DPA攻击实现

首先,建立如图6所示实验环境。

图6为DPA攻击系统的整体框图,主要分为3个模块:FPGA模块、示波器模块和PC模块。

1)FPGA模块 该模块也就是3.2节中基于FPGA的AES加密实现,可以执行AES的加密操作。电源两端串接一个50 Ω抗噪电阻用于数据采集过程的容性负载,用于测量FPGA在执行加密操作时所产生的功耗波形。

图5 AES加密算法功能实现Fig.5 AES encryption algorithm functions

图6 DPA攻击系统的整体框图Fig.6 Block diagram of DPA attack system

2)示波器模块 采用双通道的数字示波器来采样FPGA所产生的功耗波形,CH1接收电阻R上的电压波形,CH2接收FPGA给出的触发信号,作为采样的Trigger信号。采样得到的波形数据存储在示波器中,通过通讯模块与PC之间传输数据。

3)PC模块 PC机主要完成对示波器的设置以及数据的传输,它通过RS232串口与示波器建立起数据传输。所有的命令与数据的传输都是通过Visual C++编程,并调用TekVISA的API函数完成。示波器采集得到的波形数据由PC机读取,并以文件形式存储。最后由Matlab完成数据的分析和后期处理。

攻击平台建立完成后,然后选择攻击模型,采用基于异或操作的DPA攻击模型[4]。在AES的第0回合执行轮密钥加(S=d⊕k),其表示明文的第一个字节d与密钥的第一个字节k进行异或运算后存回S,而这种执行异或运算所遗漏的信息。所以有DPA攻击的弱点存在,我们可以此来破解密钥k。如下DPA具体的攻击步骤:

1)输入明文为d。

2)设明文的第i位记为 di。

3)向FPGA加密模块输入明文进行加密并返回密文给PC。

4)若di=0,则将这指令执行时所产生的能量消耗信号放到集合S0;反之,若di=1,则将这指令执行时所产生的能量消耗信号放到集合S1。

5)重复 1~4,输入明文 N 次。

6)将集合S0与集合S1内所收集到的能量迹分别做平均值计算得S0、S1。

7)计算明文差分值Δd=S0-S1,同时也会衍生密文差分值 Δs。

8)观察 Δd与 Δs差异图,若尖峰不同向(一正一负),则表示所猜测密钥的第i位(bit)是1;反之,若尖峰是同向,则表示所猜测密钥的第i位(bit)是0。

9)如此反复的做1~8步骤,直到Key长度的所有位被统计出来。

经由上述描述后可以转成算法来表达,其中第07列即是上述步骤7的意思。若要继续破解下一个bit时,只要重做算法即可一一破解。我们以实验展示破解bit=1与bit=0的能量消耗图的结果。

在AES算法无任何防护的情况下,根据上述步骤对AES的加密过程进行功耗测量分析,可以得到的差分功耗分析曲线如图7、8所示。

图7 尖峰不同表示1Fig.7 Peak different said 1

图8 尖峰相同表示0Fig.8 Peak different said 0

3 功耗分析体系结构级防御对策

目前国内外有关DPA的主要防御措施包括隐藏技术和掩码技术[5]。任何防御对策的目标都是使密码设备的能量消耗不依赖于设备所执行的密码的中间值。文中主要通过掩码技术对密码设备进行防御,通过随机化密码设备所处理的中间值来实现这个目标。这种方法的其中一个优点就是可以在算法级实现,并且不必改变密码设备的能量消耗特性。

3.1 掩码技术概述

随机数m对每一个中间值v进行变化,即vm=v*m.运算*多为布尔异或运算、模加运算或模乘运算,随机数m即称为掩码。通常掩码直接应用于明文或者密钥。一个典型的掩码方案需要详细说明如何对所有中间值进行掩码操作,以及在算法执行过程中如何应用、消除和改变掩码。非常重要的一点就是要保持每一个中间值在计算过程中始终处于被掩码状态。

3.2 掩码技术安全性证明

在布尔掩码中,vm=v⊕m通过此式可以得出给定通vm和m就可以计算出中间值[6]v。换句话说可以用两个共享因子(vm,m)来表示中间值v。只有同时获得两个共享因子,才能确定v,只给定两个共享因子中的任何一个,不会泄露关于v的任何信息;再则每一个掩码中间值vm均与v和m相互独立,则掩码可抵御一阶DPA攻击的安全。因此一个掩码能抵御一阶DPA攻击,采用n个掩码可以抵御n阶DPA攻击。

但是多个掩码应用于同一个中间值,以及跟踪多个共享因子都会增加实现开销。对共享因子的存储和计算需要更大的存储单元以及更长的计算时间。出于对实现性能的考虑,对每一个中间值都采用一个新掩码并不明智。因此,为了获得合适的性能以及安全性,需要仔细选择掩码的数量。

3.3 防御对策的软件实现

根据实现算法的功能模型在2.2节中AES实现的5个模块中添加随机数产生模块。该模块产生的随机数对AES轮变换的4个操作进行掩码操作。

在加密开始时,将明文掩码md与明文d进行异或,将密钥掩码mk与第一轮子密钥k进行异或。

1)字节替换 由于这一操作是非线性的,即Sbox(S⊕f)≠Sbox(S)⊕Sbox(F),所以要用一个掩码型 S盒来实现这一操作。 掩码型 S 盒要满足 Sbox(S⊕f)=Sbox(S)⊕Sbox(F)。

2)行移位 此操作就是将状态中的各个字节移动到不同的位置,所以此处算法状态的所有字节都使用同一个掩码。

3)列混合:为了确保所有的中间值都被掩码,此处算法的每一行都采用一个单独的掩码[7]。

4)密钥扩展 用了带掩码的新字节替代掉密钥扩展中使用的字节替换,其他过程与AES加密过程相同。

掩码处理在计算时间上开销往往很高,约有三分之一的运行时间消耗在掩码预计算上。但就安全性上来讲,这种典型的掩码实现能有效地防范DPA的攻击。再次用DPA攻击经过掩码后的AES加密算法可以得到结果如图9所示。

图9 使用掩码后的DPA攻击Fig.9 DPA attack masked AES

4 结束语

文章首先对功耗分析攻击进行了全面综述。然后在FPGA平台下实现了DPA对AES加密算法的攻击,最后提出了针对这一攻击的防御措施,结果证明这一措施能有效防御DPA攻击,但是掩码技术势必会降低AES加密算法的执行效率,再则针对高阶DPA攻击还没能做到有效防范,有待进一步提出针对高阶DPA攻击的防范措施。

[1]Mangard S,Oswald E,Popp T.冯登国、周永彬、刘继业等译.能量分析攻击[M].北京:科学出版社,2010.

[2]李超,孙兵,李瑞林.分组密码的攻击方法与实例分析[M].北京:科学出版社,2010.

[3]张仕斌.应用密码学[M].西安:西安电子科技大学出版社,2009.

[4]徐光辉,程东旭,黄如.基于FPGA的嵌入式开发与应用[M].北京:电子工业出版社,2006.

[5]陈鲁生,沈世镒.现代密码学[M].北京:科学出版社,2002.

[6]张吉天.8051单片机上实现dpa攻击之aes加密器 [D].台湾:台湾国立中央大学,2004.

[7]王树东,靳雷,吴明永,等.基于PROFINET和PROFIBUS集成网络的熔炼集散控制系统[J].工业仪表与自动化装置,2009(3):26-30.WANG Shu-hua,JIN Lei,WU Ming-yong,etal.Smeltery distributed control system based on profinet and profibus integrated network[J].Industrial Instrumentation&Automation,2009(3):26-30.

猜你喜欢
掩码明文能量消耗
太极拳连续“云手”运动强度及其能量消耗探究
中年女性间歇习练太极拳的强度、能量消耗与间歇恢复探究分析
没别的可吃
低面积复杂度AES低熵掩码方案的研究
基于布尔异或掩码转算术加法掩码的安全设计*
奇怪的处罚
奇怪的处罚
四部委明文反对垃圾焚烧低价竞争
基于掩码的区域增长相位解缠方法
基于掩码的AES算法抗二阶DPA攻击方法研究