面向aes算法电路的差分功耗攻击测试方法
【专利摘要】本发明公开了一种面向AES算法电路的差分功耗攻击测试方法,AES算法是一种广泛应用的分组对称密码算法,本发明对AES密码算法电路在设计阶段进行功耗攻击测试时,对功耗样本的获取及处理步骤如下:(1)功能仿真及功耗样本获取(2)功耗样本预处理(3)假设功耗样本获取(4)相关系数的计算和攻击结果分析。本发明仅采样有变化的功耗点,节省大量功耗样本数据,大幅降低功耗攻击计算量,具有评估效率高、速度快的优点,更重要的是,能够在电路设计阶段进行功耗攻击测试,从而提前评估密码电路的抗攻击能力,降低AES电路的流片风险。
【专利说明】面向AES算法电路的差分功耗攻击测试方法
【技术领域】
[0001]本发明涉及集成电路的信息安全领域,具体涉及面向AES算法电路的差分功耗攻击测试方法。
【背景技术】
[0002]进入21世纪,科技迅猛发展,社会信息化已经是大势所趋,生活变得信息化,数字化和网络化,人们对信息的依赖性不断增强。随着计算机、网络、通讯技术与集成电路技术的发展,安全芯片被广泛应用于自动取款机(Automatic Teller Machine, ATM)的银行卡,小区或公司环境的门禁系统智能卡,手机中的语音加密芯片等各种需要信息安全的环境中。由于集成电路内部的电路结构非常复杂,同时具有封闭性好、不易入侵、运算快速等等特点,使得安全芯片更适合安全要求更高的系统。
[0003]密码算法电路作为安全芯片的核心部分,对安全芯片的安全性能起到决定性的作用。但随着信息安全研究的深入,各种旁路攻击手段严重地威胁了密码算法电路的安全特性。功耗攻击以其简单易行,普遍适用,低成本高效率,得到了广泛的关注,是一种对密码算法电路构成严重威胁的一种旁路攻击手段。
[0004]功耗攻击的基本思想就是通过获取密码算法电路加解密时的功耗信息,并做出相应的分析来推测出密钥。攻击者控制明文(或密文)的输入,获取大量的功耗迹,然后攻击者选择合适的攻击模型和方法,对功耗迹进行分析,猜测出正确的密钥。目前国际上最流行的旁路攻击技术是功耗分析攻击,大致可以分为简单功耗分析(Simple PowerAnalysis, SPA)、差分功耗分析(Differential Power Analysis, DPA)和相关系数功耗分析(Correlation Power Analysis, CPA),很多新型的功耗分析攻击方法都是以这些攻击方法为基础演变而来的。
[0005]相比于SPA,差分功耗分析攻击无须了解关于被攻击设备的详细知识且能够从饱含噪声的功耗迹中获取密钥信息,是一种更为强大更为流行的攻击方法。这种攻击使用大量的功耗迹来分析设备功耗,并将这些功耗迹视为被处理函数进行统计分析和相关性计算。基于相关系数CPA攻击由于强大的破解能力已被广泛采用,它通过将采集到的真实功耗信息与数学分析计算得到的假设功耗信息进行统计分析,从而获得两者的相关性来判断真实功耗,其中需要采用一定的功耗模型将无实际意义的数学分析值映射为有物理意义的假设功耗值。
[0006]为了应对功耗分析攻击对密码算法电路提出的挑战,国内外众多研究机构和学者针对DES、AES、ECC、Hash等多种密码算法的抗功耗分析攻击实现进行了研究。为了验证这些抗攻击方案的有效性,必须建立一种有效的功耗攻击测试方法。国外学者设计了针对FPGA和ASIC实现的密码算法电路的功耗攻击方法,并取得了不错的攻击结果。但是这种方法的使用成本比较高昂,设计与实现上均存在不小的障碍,并且其验证周期比较长,并不适合作为用于理论研究使用。密码算法电路的设计者如果直接使用这种方法验证密码算法电路的安全特性,将不得不面临巨大的风险,因为如果密码算法电路设计失败会造成人力与物力成本方面的浪费。如何在密码算法电路设计阶段进行功耗攻击测试成为了密码算法电路设计领域的一个日趋解决技术难题。某些学者利用数学建模方式设计的仿真攻击方法,虽然攻击高效,成本低廉,但是其精度很低,结果可信度不高,也不适合用于验证密码算法电路的抗功耗分析特性。
[0007]综上所述,现有技术中,针对FPGA和ASIC实现的密码算法电路的功耗攻击方法,存在成本高、实现困难、验证周期长的缺陷,数学建模方式设计的仿真攻击方法存在精度低、可信度差的缺陷。
【发明内容】
[0008]本发明的目的在于,针对上述问题,提出面向AES算法电路的差分功耗攻击测试方法及系统,仅采样有变化的功耗点,节省大量功耗样本数据,大幅降低功耗攻击计算量,具有评估效率高、速度快的优点,更重要的是,能够在密码算法电路设计阶段进行功耗攻击测试,降低流片后安全性能不佳导致密码算法电路重新设计的风险,从而缩短AES密码算法电路设计周期。
[0009]为实现上述目的,本发明面向AES算法电路的差分功耗攻击测试方法包括以下步骤:
[0010]步骤一:功耗样本获取。在电路设计仿真阶段,采用PrimeTimePX功耗仿真工具对仿真结果进行功耗信息提取,将得到的一系列瞬态功耗值作为采样的功耗样本信息;
[0011]步骤二:功耗样本预处理。截取加解密时段的功耗样本构成功耗轨迹,并进行对齐处理,使功耗轨迹对齐于同一操作时刻;
[0012]步骤三:假设功耗样本获取。基于汉明重量模型,选取合适的攻击点,使用随机明文和猜测密钥,推导计算假设功耗值矩阵;
[0013]步骤四:相关系数的计算和分析。将预处理后的功耗样本与假设功耗样本进行相关性计算,获取相关系数矩阵,由相关系数矩阵做出相关系数曲线图,在攻击点处出现明显峰值的则攻击成功,峰值对应相关性曲线可推测出正确密钥;若在攻击点处未出现明显峰值,则攻击失败。
[0014]该测试方法的核心共有三部分:功能仿真模块、功耗仿真模块以及功耗分析模块。所述步骤一由功能仿真模块和功耗仿真模块完成,其中功耗样本的获取是利用Prime TimePower Extension (PTPX)功耗仿真工具对加密算法的功耗迹进行仿真,其中配置PTPX工作在基于时间(Time-based)模式,而不是通常的平均模式(Averaged mode),其优点是可以快速的获得一个较为准确的功耗仿真结果,和Hspice相比,所需的资源和时间都很少,灵活机动。和实际的芯片相比,其功耗迹中只包含芯片加密时的功耗,没有任何噪声,这使得在做功耗分析时,对随机明文的数量要求比较低,方便更快地对加密算法的安全性能做出验证,缩短了检验周期。
[0015]所述步骤一的基本流程是首先将密码算法的RTL代码通过逻辑综合(DesignCompiler, DC)工具生成电路网表文件,然后加载明文、时钟等网表必需的测试向量,和网表使用的标准单元库及时序参数一起通过VCS (VerilogCompile Simulator, Synopsys公司的数字电路仿真工具)仿真工具进行仿真,生成功能仿真波形。功能仿真波形需要转换成功耗仿真分析需要的V⑶(Value Change Dump)文件,此文件包含了加密算法运行过程中内部各种标准单元的变化情况。然后设置PTPX的仿真环境参数,对生成的VCD文件进行分析,调用单元库的功耗参数生成功耗仿真文件,从中提取功耗攻击需要的功耗迹样本,该样本为一个矩阵。
[0016]所述步骤二的对齐处理是通过设计一个在加密开始时刻产生的触发信号进行定位,所有记录的能量迹均在该信号触发时刻对齐,因此能获得完全一致的操作序列的能量消耗,有利于后续功耗攻击的数据处理。
[0017]所述步骤三中的假设功耗的获取采用汉明重量模型,汉明重量(HammingWeight, HW),是字符串相对于同样长度的零字符串的汉明间隔,也就是说,它是字符串中非零元素的个数。对于二进制字符串来说,就是I的个数,例如(11101)的汉明重量为4,可表示为HW(11101)=4。通过计算数字电路存储数据在某个特定时段内字符串中非零元素的个数来代表电路的功耗,将其作为假设功耗样本,对于M种随机明文和N种猜测密钥,生成的假设功耗矩阵大小为M*N。
[0018]所述步骤四中,相关系数的计算方法如下:已知的明文或者密文测试向量记为向量…,dD)',其中(Ii表示第i次加密或者解密所对应的数据值,将对应数据(Ii分组的功耗迹记作t/ =αΜ,…,\τ),其中T表示密码模块的功耗迹的长度,针对每一个可能的k值洪有K种取值),计算对应的假设中间值k= (k1;…,kK),给定的数据向量d和密钥假设k,得到中间值f(d,k);采用汉明重量功耗模型,映射由中间值造成的功耗,利用不同密钥加密的模拟功耗和真实功耗之间的相关性,对大量的随机测试向量进行统计分析,做出相关系数曲线图,在攻击点处出现极值的则攻击成功,极值对应相关性曲线可推测出正确密钥;若未出现极值,则攻击失败。
[0019]本发明的数学原理说明如下:
[0020]功耗攻击的核心是利用密码算法电路功耗和加密数据之间的相关性,从统计学的观点出发,可以利用协方差或者相关系数刻画数据之间的线性关系。
[0021]基于相关系数的差分功耗攻击建立在模拟功耗矩阵H和实测功耗矩阵T之间有一定相关性这样的推论的基础之上的。由正确的密钥推导出的模拟功耗必然与实测功耗有关联;而由错误的密钥推导出的模拟功耗则必然和实测功耗的相关性比较小。而通过大量的测试向量来计算其相关性,能够使与正确密钥对应的相关系数放大,便于推测密钥。
[0022]对DES芯片进行功耗攻击方法通常是:首先,选择DES执行过程的某个中间值,这个中间值要被密钥操作,在大部分攻击场景中,一般选取明文或者密文作为这个中间值;然后,测量DES加密过程的实际功耗,若采集D次加密过程,每次加密采集T个功耗点,则获得一个DXT的功耗矩阵,记为矩阵T ;并计算假设的中间值,假设密钥k有K种可能,对于每一次加密计算出中间值,可获得一个DXK的矩阵V ;然后将中间值映射为模拟功耗值,并采用功耗模型(汉明距离或者汉明重量模型),计算得出一个DXK的矩阵,记为H矩阵;再计算模拟功耗矩阵与实际功耗矩阵之间的相关性,得出一个KXT的矩阵,记为Z矩阵,其每一行分别对应一种猜测的密钥,每一列对应在该时刻模拟功耗与实际功耗之间的相关系数,计算公式如式I所示;最后利用Z矩阵按行绘制出曲线(密钥一相关性曲线),出现峰值的曲线即对应功耗攻击结果。[0023]
【权利要求】
1.一种面向AES (Advanced Encryption Standard,高级加密标准)算法电路的差分功耗攻击测试方法,其特征在于,包括以下步骤: 步骤一:功能仿真和功耗样本获取,在电路设计仿真阶段,在电路功能仿真验证的基础上,采用Prime Time PX功耗仿真工具对仿真结果进行功耗信息提取,将得到的一系列瞬态功耗值作为采样的功耗样本信息; 步骤二:功耗样本预处理,截取加解密时段的功耗样本构成功耗轨迹,并进行对齐处理,使功耗轨迹对齐于同一操作时刻; 步骤三:假设功耗样本获取,基于汉明重量模型,选取合适的攻击点,使用随机明文和猜测密钥,推导计算假设功耗值矩阵; 步骤四:相关系数的计算和分析,将预处理后的功耗样本与假设功耗样本进行相关性计算,获取相关系数矩阵,由相关系数矩阵做出相关系数曲线图,在攻击点处出现明显峰值的则攻击成功,峰值对应相关性曲线可推测出正确密钥;若在攻击点处未出现明显峰值,则攻击失败。
2.根据权利要求1所述的面向AES算法电路的差分功耗攻击测试方法,其特征在于,步骤一的具体流程如下: 首先将该方法的RTL代码通过DC (Design Compiler,设计综合)工具综合生成电路网表文件,然后加载明文、时钟等网表必需的测试向量,和网表使用的标准单元库及时序参数一起通过VCS (Verilog Compile Simulator, Synopsys公司的数字电路仿真工具)功能仿真工具进行仿真,生成功能仿真波形,并将其转换成为功耗仿真分析需要的VCD (ValueChange Dump,改值转储)文件;然后在PTPX仿真工具下对生成的V⑶文件进行分析,利用工艺库功耗模型生成功耗仿真文件。
3.根据权利要求1所述的面向AES算法电路的差分功耗攻击测试方法,其特征在于,步骤一中,配置Prime Time PX工作在基于时间(Time-based)的模式,在采样的大量功耗点中,仅记录有功耗变化时的电路功耗值。
4.根据权利要求1所述的面向AES算法电路的差分功耗攻击测试方法,其特征在于,步骤二的对齐处理是通过设计一个在加密开始时刻产生的触发信号进行定位,所有记录的能量迹均在该信号触发时刻对齐。
5.根据权利要求1所述的面向AES算法电路的差分功耗攻击测试方法,其特征在于,步骤三中的假设功耗的获取采用汉明重量模型,通过计算数字电路存储数据在某个特定时段内字符串中非零元素的个数来代表电路的功耗,将其作为假设功耗样本,其中,对于M种随机明文和N种猜测密钥,生成的假设功耗矩阵大小为MXN。
【文档编号】G06F17/50GK103530474SQ201310513475
【公开日】2014年1月22日 申请日期:2013年10月25日 优先权日:2013年10月25日
【发明者】单伟伟, 孙华芳, 王学香 申请人:东南大学