IC卡芯片DES加密差分功耗分析方法
2013-08-17李林森
李 菁,李林森
(1.上海交通大学信息安全工程学院,上海 201203;2.上海市信息安全测评认证中心,上海 200011)
1 概述
数据加密是安全保密领域的重要手段,相应的,密码破解就成为密码学研究领域以及恶意用户尝试攻击破解的热点问题。目前破解密码主要有 2种途径:传统的数学分析攻击和旁路密码分析攻击。传统的建立在数学分析基础上的密码分析学主要针对数学模型,它一般在数学算法的层面上进行分析,力求找出加密算法或协议设计上的缺陷,但由于密码算法或协议的数学基础比较牢固,因此在对IC卡芯片的加密协处理模块进行传统的数学分析时会非常困难,目前IC卡芯片的加密破解运用较多的攻击方式为旁路攻击方式。
本文研究差分功耗分析(Differential Power Analysis,DPA)攻击的原理和方法,并在此基础上分析IC卡芯片工作时功率消耗与密码处理的关系,通过Risure公司的Inspector旁路攻击平台完成对某款商业芯片DES加密模块的DPA攻击,以破解DES运算的加密密钥。
2 旁路攻击与功耗分析
旁路攻击又称侧信道分析(Side-channel Analysis,SCA),它无需对密码算法进行繁琐的数学分析,是一种新型密码分析技术[1]。它突破了传统密码分析的思维模式,利用加密器件在加解密过程中产生的物理泄露(温度、声波、电磁辐射、执行时间、功率消耗等)获取密钥信息。与传统的密码分析方法相比,旁路攻击具有较小的密钥搜索空间和较高的分析效率。常见的旁路攻击方法包括简单旁路攻击、差分旁路攻击、高阶差分旁路攻击和模板攻击。1996年Cryptography Research公司的Kocher P等人提出功率攻击的概念。
功耗攻击又称为能量分析,是旁路攻击中的一种,它通过分析密码设备操作时的功率消耗,推导出加密系统所进行的操作中涉及到的秘密参量。根据对功率消耗的不同分析方法,可将其分为简单功耗分析(Simple Power Analysis,SPA)和DPA。SPA是一种直接解释功率消耗测定值的技术,SPA能够给出关于一个设备的运行信息以及密钥信息。在SPA攻击中,攻击者直接观察一个系统的功率消耗,利用加密操作实现细节与功耗之间的关系,直接从一次测量的功耗轨迹获取密钥信息。而DPA通过对大量的密文和功耗轨迹的统计分析获取密钥信息,而不须了解加密的具体实现技术细节[1],此种方法的攻击力要比 SPA强得多,而且更加难以预防,甚至一个完全不懂得智能卡技术的编程人员也可以利用专用程序对没有DPA防范的智能卡芯片实现攻击。
国际上,自从Kocher P发现密码芯片运算时泄漏的执行时间信息能被用于密码分析后,旁路攻击技术引起了业内的广泛关注,一系列新的攻击方法和解决方案层出不穷。从攻击技术方面来看,几乎每一种加密算法(如常见的DES、AES、RSA等)实现都已经有了相应的攻击方法,并且攻击方法的可操作性也在不断地改进和优化,近年来又出现了模板攻击等新型的攻击方法。Mangard S等人所著的Power Analysis Attack一书,详细地介绍了芯片功耗分析的基本原理、技术方法和防御对策,特别是对于DES差分能量分析有着详尽的分析和实践举例,此外,对于隐藏技术和掩码技术的攻击也有独到的见解。国际上著名的 CC检测实验室,如 Brightsight等,也基于上述理论针对芯片旁路攻击研制了相应攻击分析工具或检测设备。
3 DPA原理和测试方法
3.1 芯片功耗泄露原理
目前多数加密器件是由晶体管组成的半导体逻辑门实现的,当对逻辑门进行充电或放电时,电子流过半导体衬底,产生功耗和电磁辐射。芯片电路门接通和断开时产生功率消耗,功率消耗轨迹同密钥信息相互密切关联。当集成电路内部处理的数据发生变化时,反映在CMOS电路上即为状态的变化,这种状态的变化导致CMOS电路的功率消耗,通过仪器可在电源端或接地端测量到,即导致芯片功耗泄漏。
以CMOS电路为例,CMOS电路为压控型电路,只在动态下才消耗电流,静态电流为泄漏电流,理想情况下静态电流为0。考虑到CMOS电路中存在PN结漏电和MOS晶体管的亚阈值漏电,因此,实际的CMOS电路的静态功耗并不为0。电路在开关操作过程中,对负载电容的充放电所消耗的动态功耗是主要功耗。随着负载电容增大和工作频率的提高,动态功耗将迅速增大。在栅极电压的施加或释放的同时,电流从晶体管的衬底流过,并将电荷传输到其他晶体管、连接线以及电路负载。电荷的充放电表现为功耗的变化并产生电磁辐射,这两者均可被外界探测到。
3.2 功耗分析原理
功耗分析是指通过分析密码运算过程中呈现的电流/电源变化,从而引起消耗能量的变化,获得密钥信息。功耗分析技术从最初的简单功耗分析技术,发展为差分功耗分析技术,这是一种以能量消耗曲线为基础,再以统计分析和误差修正方式推演密钥的攻击技术[2]。该攻击利用密码设备能量消耗的数据依赖性,通过使用大量的能量迹来分析密码设备的能量消耗,并将能量消耗视作被处理数据的函数,其优点就是无须知道关于密码设备的详细知识,测试人员完全可以利用专用设备对没有DPA防范的IC卡芯片的加密算法实现攻击[3]。
本文使用均差测试方法[4]。在均差测试中用S表示加密操作过程中的中间预测值。对于一组足够数量的功耗采样轨迹 Trace,通过数学模型对捕捉到的功耗曲线分别按照相应位为 0或l进行分类,得到集合 S0与S1,T0和 T1分别表示猜测位分别为0或1时的功耗,然后计算2个集合对应元素的均差,记如果猜测的密钥正确,那么会有差值出现;反之,则没有差值出现。对集合进行分类等同于用一个随机函数对集合进行分类,由数理统计理论可知,当用一个随机函数将集合一分为二后,当这2个集合中的元素趋于无穷大时,2个子集合的平均值之差将趋于0。如果功耗分析曲线的样本空间足够大,模型选择合适,采样噪声的影响足够小,经过上述差分统计方法可以获得带有尖峰的差分功耗曲线,尖峰位置即为猜测的密钥位置。
DPA攻击的常规策略如下:(1)选择被攻击密码设备所执行密码算法的一个中间值;(2)测量密码设备在加密或解密不同数据分组时的能量消耗;(3)对每个可能的k值,计算对应的假设中间值;(4)将中间值映射为能量消耗值;(5)比较假设能量消耗值和能量迹[5]。
DPA攻击主要利用了密码运算中中间值的信息泄露。典型DPA攻击的实现方法如下:首先进行N次密码运算,获取N个随机输入的明文PTi(1≤i≤ N); Si[j]为对第i次密码运算产生的功耗进行离散采样形成的功耗数组[6],其中,1≤ i≤ N;j表示采样的时间点;对应PTi的相应密文输出CTi(1≤ i≤ N)。定义与密钥相关的功耗区分函数 D(C Ti,K b),D(C Ti,K b)=SBOX1(C TiKb)[7],其中,CTi取密文扩展48 bit后的前6 bit,Kb为第16轮子密钥的前6 bit,SBOX1为第1个k盒函数前4 bit输出中的1 bit。猜测令Kb=000000,将基于采样时间点j的信号数组集合{Si[j] |1≤ i≤ N}分成2个子集合,SBOX1为0的功耗曲线划分到集合S0,SBOX1为 1的功耗曲线划分到集合S1:
3.3 DES算法和DPA攻击
在DPA分析测试中,本文尝试破解的算法是DES加密算法。DES算法采用16轮迭代,每一轮由8个S盒完成,每个S盒有6 bit输入、4 bit输出,这样48 bit的输入被分为 8个6 bit的分组,每一个分组对应一个 S盒操作。这48 bit的输入与明文和子密钥有关。
对于DES分组加密算法,如果攻击者猜对某一轮进入S盒的子密钥时,那么按一定规则进行差分处理后,相关曲线将显示出一些很突出的尖峰。DPA攻击测试中DES密钥的破解在一般是通过先破解第一轮子密钥 K1或第 16轮子密钥K16,进而破解整个DES密钥[8]。由于48位的子密钥K16有248个组合,很难破解,因此把48 bit的子密钥K16以6 bit为一组成分成8组[9],K16={K16S1,K16S2,K16S3,K16S4,K16S5,K16S6,K16S7,K16S8},其中,KiSj(j=1,2,…,8)为子密钥块。若一次破解一组,那么一次仅有 26=64个组合,要破解就相对简单。
差分功耗分析就是先尝试破解K16S1,本文使用功耗区分函数D函数,取S盒输出的第2位进行0/1集合分类,功耗区分函数D函数如图1所示。
图1 功耗区分函数
依据 3.2节中阐述的工作原理,如果T[ j]代表的差分功耗曲线出现明显的尖峰,则表示子轮密钥 K16S1猜测成功,否则继续猜测,6 bit子轮密钥K16S1最多猜测26次。破解了 K16S1,再破 K16S2,依此类推,最后把子密钥 K16破解。
当获取DES第16轮子密钥K16后,根据DES子密钥生成算法,可逆推获取DES 56 bit有效密钥Key中的48 bit。Key中剩余的8 bit密钥可通过穷举搜索获得,这样通过K16可以推算出整个DES的Key。
差分功耗分析DPA最重要的点在于选择与密钥相关的功耗分类D函数,针对不同的算法和不同的实现,所选的攻击D函数有所不同。
但DPA也有它的局限性,即D函数只选取1 bit的输出,没有考虑其他 S盒输出位数的影响,在实际测试工作中,也可采用Correlation相关性分析的方式,即D函数取S盒输出的多位,并计算猜测子密钥输出多位的汉明重量(Harming Weight,HW),然后通过统计分析方法与实际功耗曲线的HW进行相关性分析。与DPA方式类似,相关性分析方式猜测子密钥也从000000开始,如果计算结果表明猜测值与实际值有明显的相关性,则猜测子密钥正确,反之继续猜测直到111111,后续其他步骤与DPA相同。这种分析方法的优点是效果更显著,受噪声干扰的影响更小。
4 测试平台
针对密码芯片的典型能量攻击的测试平台包括以下组件:被测对象,密码芯片,时钟信号源,电源(读卡器),能量测试电路,数字采样示波器,信号处理和攻击分析设备。
在本文中开展密码芯片DPA攻击测试所使用的工具平台是Riscure公司的SCA Inspector平台。该平台由Power Tracer(功耗分析测试工具)、Oscilloscope(示波器)以及控制控制台(包含Inspector软件)等部件构成,如图2所示。
图2 Riscure SCA Inspector测试平台
Riscure Inspector平台开放了常见智能卡旁路攻击和信号处理方法的源代码,提供超过60种包括对齐、滤波,各类加解密算法的模块。
5 针对DES算法的DPA攻击测试
5.1 DPA测试方案
DPA攻击测试主要分为3个阶段:数据采集,数据处理和数据分析。
(1)数据采集处理阶段对功耗曲线进行采样形成功耗能量迹。
(2)数据处理阶段通过滤波、重采样、对齐和相关性分析等步骤对功耗能量迹的原始波形进行一系列信号数据处理,从而在功耗能量迹上找出加密执行位置。
(3)数据分析阶段针对加密位置调用加密破解模块尝试进行破解,以获取芯片加密密钥。
相关操作如下:
(1)采样:在Inspector PowerTracer工具中调用预先编制好的芯片初始化脚本,执行DES加密,并对功耗波形进行采样。
(2)滤波:根据采样的 Trace信号选取大致的加密运算范围,进行频谱分析,找出芯片精确工作频率和 Power Tracer读卡器工作频率,对采样信号进行滤波处理。
(3)重采样:依据芯片工作频率对 Trace信号进行重采样。
(4)对齐:对重采样后的Trace信号选取基准trace进行对齐处理,以便去掉差异较大的trace信号。
(5)相关性分析:分析波形的相关性,更精确确定DES的运算位置。
(6)密钥分析:即密码模块破解,选中加密执行位置,调用相应的DES加密分析模块,设置相应的参数,尝试对芯片密钥进行破解。
5.2 针对某款芯片DES密码模块的DPA测试
本文针对某款芯片DES加密算法进行DPA攻击测试。
(1)芯片功耗采集
通过编写测试脚本将工具与被测芯片建立通信,进一步采集芯片运行时的功耗特征。根据芯片DES运算过程,编写DPA功耗采集脚本:
该脚本产生随机明文发送给芯片,用同样的密钥进行加密后,存取明文和密文结果。对功耗波形进行采样(采集200000条左右的trace),Sample frequency为1 GSamples/s,采样点为1 MSamples。因为考虑到采集200000条功耗波形的时间较长,先采集 100条 DES运算功耗曲线,使用Inspector的Verify工具对DES运算的正确性进行验证。验证通过后,再进行200000条功耗波形的采集。采集到的芯片加密功耗曲线如图3所示。
图3 采集到的芯片加密功耗曲线
(2)功耗曲线频谱分析和滤波
通过频谱分析找出读卡器的工作频率,并将读卡器工作频率的波形过滤。
对部分功耗曲线(选择其中几百条左右)做傅里叶变换,得到频谱曲线,对频谱曲线作平均,在这条平均的频谱曲线上观察出智能卡芯片的工作频率和读卡器的频率。功耗曲线频谱分析结果如图4所示。
图4 功耗曲线频谱分析结果
频域曲线在4 MHz及4 M倍频位置有明显的尖峰,是因为读卡工具Power Tracer的工作频率为4MHz,使用菜单中的Harmonics工具将Power Tracer 4M频率及其倍频进行滤除。
(3)重采样Resample
依据芯片工作频率对Trace信号进行重采样,重采样的目的就是根据工作频率,把工作频率上的工作点都重采样下来,实现对初始采样信号的压缩。此时可采集10000条左右的trace,以便分析。重采样功耗曲线如图5所示。
图5 重采样功耗曲线
(4)对齐Alighment
将重采样到的所有波形位置与基准波形进行静态对齐,去除差异较大的波形,以提高相关性分析的准确性。对齐的目的一方面确保在分析波形时比较的是相同的点和相同的操作,另一方面使信号泄露在较小的分布区间。本文采用的是静态对齐,先在波形上选择一段参考波形,设置对齐偏离阈值 Threshold 0.6~0.8(数值越高,对齐精度越高,抛弃的trace数会越多)。对齐后再将波形overlap进行观察,如果发现对齐的质量不好,可以选择后面一点的波形作为基准波形重新对齐。功耗曲线对齐结果如图6所示。
图6 功耗曲线对齐结果
(5)相关性分析
分析对齐后波形的相关性,找出DES加密输入和输出的位置,以便更精确地确定DES的运算位置。因为DES分组是64 bit/8 Byte,为方便测试,本文选择相关性分析的单位为Byte,范围为16个Byte(输入、输出各8个Byte)。相关性分析结束后,将波形叠加,可以分别清楚地看到前8 Byte明文输入的位置和后8 Byte密文输出的位置。将对齐后的波形和Resample+Align后的波形进行坐标对齐,输入和输出之间的位置(即图7左右8个尖峰中间的位置)可确定为DES运算的位置。
图7 功耗曲线相关性分析结果
(6)DES密钥的破解
确定 DES加密位置后,运用DES加密算法分析模块Crypto-AdvancedDES尝试破解DES加密密钥,分析目标选择S-BOX,比较位置选择S-BOX输出的HW,破解位置选择DES加密第1轮和第2轮。执行破解,经过2轮破解,先破解第1轮的轮密钥,再破解第2轮的轮密钥,最终即可破解整个密钥。
使用被破解的密钥通过软件DES算法进行验证,与硬件算法实现一致,可以确认 DPA攻击测试破解芯片 DES密钥成功。
6 结束语
本文在分析DPA的原理和方法的基础上,完成了某款芯片DES加密算法的DPA攻击测试。通过攻击测试实验过程及结果可以看出,差分功耗分析是一种有效的分析芯片DES等加密算法的手段。同理,如后续需对3DES加密算法进行破解,则在功耗分析曲线上找到位置后,需进行密钥 K1、K2的加密、解密、加密的破解操作,从而获取 K1和 K2。当然本文的攻击测试是在没有对芯片加密算法做额外防护的情况下进行,如果对芯片进行了加大幅值噪声水平,随处理中断引入时间噪声和不同的时钟频率,采用随机处理顺序来减少相关的信号等干扰防护措施,采用DPA分析测试的难度将大大增加,则需要引入高阶DPA分析方法[10],这也是下一步的研究方向。
[1]赖坤锋.智能卡 SPA/DPA 攻击[J].现代电子技术,2005,28(17): 28-29.
[2]钱思进,张凯泽,王衍波,等.DES加密算法差分能量分析的研究[J].计算机工程与应用,2007,43(32): 146-149.
[3]周开民,陈开颜,赵 强,等.DPA 方法对加密系统的FPGA旁路攻击研究[J].军械工程学院学报,2006,18(2):51-54.
[4]陈开颜,赵 强,褚 杰,等.差分功耗分析单片机DES加密实现的旁路攻击[J].计算机科学,2007,34(11): 58-61.
[5]Paul K,Jaffe J,Jun B.Differential Power Analysis[C]//Proc.of CRYPTO’99.[S.l.]: IEEE Press,1999.
[6]孙海涛,赵 强,何遁来.面向 DES加密算法的差分功耗分析攻击方法[J].网络与信息技术,2007,26(6): 53-55.
[7]郑建新,张翌维,沈绪榜.SPA和DPA攻击与防御技术新进展[J].小型微型计算机系统,2009,4(4): 726-729.
[8]Canovas C,Clédière J.What Do DES S-boxes Say in Differential Side Channel Attacks[EB/OL].(2005-03-11).http://eprint.i-acr.org/2005/311.pdf.
[9]Sommer R M.Smartly Analyzing the Simplicity and the Power of Simple Power Analysis on Smart Cards[C]//Proc.of CHES’00.[S.l.]: IEEE Press,2000.
[10]Waddle J,Wagner D.Towards Efficient Second-order Power Analysis[C]//Proc.of CHES’04.[S.l.]: IEEE Press,2004.