一种高效的安全芯片功耗攻击测试方法
技术领域
本发明涉及芯片的信息安全领域,具体涉及一种高效的安全芯片功耗攻击测试方法。
背景技术
进入21世纪,科技迅猛发展,社会信息化已经是大势所趋,生活变得信息化,数字化和网络化,人们对信息的依赖性不断增强。随着计算机、网络、通讯技术与集成电路技术的发展,安全芯片被广泛应用于自动取款机(Automatic TellerMachine,ATM)的银行卡,小区或公司环境的门禁系统智能卡,手机中的语音加密芯片等各种需要信息安全的环境中。由于集成电路内部的电路结构非常复杂,同时具有封闭性好、不易入侵、运算快速等等特点,使得安全芯片更适合安全要求更高的系统。
但随着信息安全研究的深入,各种旁路攻击手段严重地威胁了密码芯片的安全特性。功耗攻击以其简单易行,普遍适用,低成本高效率,得到了广泛的关注,是一种对安全芯片构成严重威胁的一种旁路攻击手段。
功耗攻击的基本思想就是通过获取密码芯片加解密时的功耗信息,并做出相应的分析来推测出密钥。攻击者控制明文(或密文)的输入,获取大量的功耗迹,然后攻击者选择合适的攻击模型和方法,对功耗迹进行分析,猜测出正确的密钥。目前国际上最流行的旁路攻击技术是功耗分析攻击,大致可以分为简单功耗分析(Simple Power Analysis,SPA)、差分功耗分析(Differential Power Analysis,DPA)和相关系数功耗分析(Correlation Power Analysis,CPA),很多新型的功耗分析攻击方法都是以这些攻击方法为基础演变而来的。
为了应对功耗分析攻击对安全芯片提出的挑战,国内外众多研究机构和学者针对DES、AES、ECC、Hash等多种密码算法的抗功耗分析攻击实现进行了研究。为了验证这些抗攻击方案的有效性,必须建立一种有效的功耗攻击测试方法。国外学者设计了针对FPGA和ASIC实现的芯片的功耗攻击方法,并取得了不错的攻击结果。但是这种方法的使用成本比较高昂,设计与实现上均存在不小的障碍,并且其验证周期比较长,并不适合作为用于理论研究使用。安全芯片的设计者如果直接使用这种方法验证芯片的安全特性,将不得不面临巨大的风险,因为如果芯片设计失败会造成人力与物力成本方面的浪费。如何在芯片设计阶段进行功耗攻击测试成为了安全芯片设计领域的一个日趋解决技术难题。某些学者利用数学建模方式设计的仿真攻击方法,虽然攻击高效,成本低廉,但是其精度很低,结果可信度不高,也不适合用于验证安全芯片的抗功耗分析特性。
综上所述,现有技术中,针对FPGA和ASIC实现的芯片的功耗攻击方法,存在成本高,实现困难,验证周期长的缺陷,数学建模方式设计的仿真攻击方法存在精度低,可信度差的缺陷。
发明内容
本发明的目的在于,针对上述问题,提出一种高效的安全芯片功耗攻击测试方法,仅采样有变化的功耗点,节省大量功耗样本数据,大幅降低功耗攻击计算量,具有评估效率高、速度快的优点,更重要的是,能够在芯片设计阶段进行功耗攻击测试,降低流片后安全性能不佳导致芯片重新设计的风险,从而缩短安全芯片设计周期。
为实现上述目的,本发明采用的技术方案如下:
本发明的安全芯片功耗攻击测试方法对安全芯片在设计阶段进行功耗攻击测试时,对功耗样本的获取及处理如下:
(1)功耗样本获取:采用PTPX功耗仿真工具对功能后仿真结果进行功耗信息提取,将得到的一系列瞬态功耗值作为采样的功耗样本信息,且仅记录有功耗变化时的芯片功耗值
(2)功耗样本预处理:截取加解密时段的功耗样本构成功耗轨迹,并进行对齐处理,使功耗轨迹对齐于同一操作时刻,避免因功耗轨迹不对齐影响攻击效果
(3)假设功耗样本获取:基于汉明距离模型,选取合适的攻击点,使用随机明文和猜测密钥,推导计算假设功耗值矩阵
(4)相关系数的计算和分析:将预处理后的功耗样本与假设功耗样本进行相关性分析,获取相关系数矩阵。由相关系数矩阵做出相关系数曲线图,在攻击点处出现极值的相关性曲线对应于正确密钥。
在步骤(1)中PTPX运行在基于时间的(time based)模式,采样方式与示波器类似,所得到的瞬态功耗作为被处理的功耗信息,且仅采样有变化的功耗点,节省大量功耗样本数据;
在步骤(2)中进行功耗预处理提炼出加解密时刻的功耗值,采用仿真方式,密码芯片每次加密时产生的功耗值个数固定,产生时刻固定,便于攻击者提取并存储为实际功耗值矩阵,并使功耗轨迹对齐于同一操作时刻,避免因功耗轨迹不对齐影响攻击效果;
在步骤(3)中的假设功耗的获取采用汉明距离模型计算数字电路在某个特定时段内0→1转换和1→0转换的总数,来代表电路的功耗;计算选取的攻击点处的相邻两个时钟周期电路的汉明距离,将其作为假设功耗样本,对于M种随机明文和N种猜测密钥,生成的假设功耗矩阵大小为M*N。
在步骤(4)中,相关系数的计算方法如下,已知的明文或者密文测试向量记为向量d=(d1,...,dD)′,其中di表示第i次加密或者解密所对应的数据值。将对应数据di分组的功耗迹记作t′i=(ti,1,...,ti,T),其中T表示密码模块的功耗迹的长度。针对每一个可能的k值,计算对应的假设中间值k=(k1,...,kK)。给定的数据向量d和密钥假设k,得到中间值f(d,k)。采用汉明距离功耗模型,映射由中间值造成的功耗。利用不同密钥加密的模拟功耗和真实功耗之间的相关性,对大量的随机测试向量进行统计分析,做出相关系数曲线图,在攻击点处出现极值的相关性曲线对应于正确密钥。
该测试方法的核心共有三部分:功能仿真模块、功耗仿真模块以功耗分析模块。基本的流程是首先将密码算法的RTL代码通过逻辑综合(Design Compiler,DC)工具生成电路网表文件,然后加载明文、时钟等网表必需的测试向量,和网表使用的标准单元库及时序参数一起通过VCS(Verilog Compile Simulator,Synopsys公司的Digital Simulator工具)进行仿真,生成功能仿真波形。功能仿真波形需要转换成为功耗仿真分析需要的VCD(Value Change Dump,)文件,此文件包含了加密算法运行过程中内部各种标准单元的变化情况。然后设置PTPX的仿真环境参数,对生成的VCD文件进行分析,调用单元库的功耗参数生成功耗仿真文件。然后选取合适的攻击点,利用猜测密钥和随机明文,采用基于汉明距离模型计算出假设功耗值矩阵,随后与PTPX生成的仿真功耗值矩阵进行相关性分析,获取相关系数矩阵。由相关系数矩阵做出相关系数曲线图,在攻击点处出现极值的则攻击成功,极值对应相关性曲线可推测出正确密钥;若未出现极值,则攻击失败。
本发明的数学原理说明如下:
功耗攻击的核心是利用芯片功耗和加密数据之间的相关性,从统计学的观点出发,可以利用协方差或者相关系数刻画数据之间的线性关系。协方差的定义如式(1)所示,式(2)是它的一种等价形式。协方差量化了偏离均值的程度,它是随机变量X和Y的偏离度乘积的平均值。
Cov(X,Y)=E((X-E(X))·(Y-E(Y))(1)
Cov(X,Y)=E(XY)-E(X)·E(Y)(2)
一般用皮尔森系数来表示变量X和Y之间的相关性,表达式如式(3)。相关系数取值在正负1之间,即-1≤ρ≤1。
通常协方差是未知的,需要进行估计,假设估计量为c,则估计量表达式如式(4),将此式代入式(2.8),则可以获得相关系数的估计量r,如式(5)所示。
基于相关系数的差分功耗攻击建立在模拟功耗矩阵H和实测功耗矩阵T之间有一定相关性这样的推论的基础之上的。由正确的密钥推导出的模拟功耗必然与实测功耗有关联;而由错误的密钥推导出的模拟功耗则必然和实测功耗的相关性比较小。而通过大量的测试向量来计算其相关性,能够使与正确密钥对应的相关系数放大,便于推测密钥。基于式(5),可以推导出模拟功耗矩阵和实测功耗矩阵之间的相关系数r的计算公式,如式(6)所示
利用此式,生成相关系数矩阵K*T,由此画出相关性曲线,正确的密钥对应的相关性曲线呈现的相关性系数将最大,将出现一个明显的波峰,而错误的密钥对应的相关性则比较小。
本发明的有益效果是:本发明采用功耗仿真工具对后仿真电路进行功耗提取,近似现实电路功耗采集,可以较准确的获取电路功耗,并且仅采样有变化的功耗点,节省大量功耗样本数据,大幅降低功耗攻击计算量,评估效率高、速度快,,更重要的是,本发明有效的解决了在芯片设计阶段如何进行功耗攻击测试的技术难题,降低流片后安全性能不佳导致芯片重新设计的风险,缩短安全芯片设计周期,优化了安全芯片的设计流程。
附图说明
图1为本发明的安全芯片功耗攻击测试方法的总体框架示意图。
图2(a)为本发明的安全芯片功耗攻击测试方法的功耗样本获取的流程示意图。
图2(b)为本发明的安全芯片功耗攻击测试方法的仿真功耗信息报表示意图。
图3(a)为DES算法的结构示意图。
图3(b)为DES算法轮运算的结构示意图。
图3(c)为DES算法的假设功耗值获取的流程示意图。
图4(a)为本发明的安全芯片功耗攻击测试方法的功耗攻击的原理示意图。
图4(b)为本发明的安全芯片功耗攻击测试方法的功耗攻击的流程示意图。
图5为本发明的安全芯片功耗攻击测试方法的在对DES算法进行攻击的效果图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
如图1所示,为本发明的安全芯片功耗攻击测试方法的总体框架。安全芯片功耗攻击测试方法的核心共有三部分:功能仿真模块、功耗仿真模块以功耗分析模块。基本的流程是首先将算法的RTL代码通过DC(Design Compiler,DC)工具综合生成电路网表文件,然后加载明文、时钟等网表必需的测试向量,和网表使用的标准单元库及时序参数一起通过VCS进行仿真,生成功能仿真波形。功能仿真波形需要转换成为功耗仿真分析需要的VCD文件。然后设置PTPX的仿真环境参数,对生成的VCD文件进行分析,利用工艺库功耗模型生成功耗仿真文件。最后使用Matlab工具提取出功耗仿真文件中网表或对应模块的仿真功耗数据,对功耗数据进行分析,破解出密钥。
如图2(a)所示,为本发明的安全芯片功耗攻击测试方法获取功耗样本的流程。首先设定加密算法工作的环境,即加载一系列的测试向量,比如时钟、IO激励、随机明文和密钥的输入等等。本发明中采用VCS对DES的网表电路进行功能仿真,在仿真结束后,生成VPD(Vcd Plus Deltacycleon,VPD)文件。此文件包含了加密算法运行过程中内部各种标准单元的变化情况。然后将VPD文件转换为供功耗仿真模块使用的VCD文件。功耗仿真模块使用的工具是Synopsys公司的PTPX工具。对PTPX做合适的配置,最后获得仿真功耗迹。
如图2(b)所示,为本发明的安全芯片功耗攻击测试方法的获取仿真功耗信息报表。PTPX工作在time_based的模式下,采样频率设置为1ns,功耗仿真的对象指定为全芯片,加载指定的单元库文件,利用PTPX分析VCD文件,获取电路网表工作时的功耗信息报表。
如图3(a)和3(b)所示,为DES算法的整体结构和每一轮运算的结构。DES算法的加密流程可以划分为3个阶段:
(1)64位明文通过初始置换IP,实现明文的比特重排,同时把64比特明文分为L0和R0两部分。L0是比特重排后的前32位,R0是后32位。
(2)进行16轮迭代运算。16次迭代运算具有相同的结构,包含换位和替代。通过迭代运算,DES将子密钥和数据结合起来,子密钥由初始密钥生成,在每一轮迭代中,每个64位的中间值被分成左右两部分,作为两块独立的数据进行处理,每轮迭代的输入是上轮结果的输出Li-1和Ri-1。
(3)将16次迭代变换后得到的结果通过一个逆变换矩阵IP-1。
如图3(c)所示,为DES算法的假设功耗值获取的流程。将攻击点选择在第一轮S盒运算结束时的寄存器。首先利用Matlab编写DES算法第一个S盒的首轮运算程序。利用该程序结合输入明文和猜测密钥,推导出第一个S盒首轮运算的4位输出。S盒的4位输出进入P盒进行置换运算,P盒输出与Li-1中对应位进行异或操作,根据DES算法可以推导出第二轮加密使用的64位数据的其中4位,分别是第2、10、16、24位。最后利用汉明距离模型,使用明文中的第2、10、16、24位和推导得出的4位数据计算汉明距离,获得假设功耗。
如图4(a)和图4(b)所示,为本发明的安全芯片功耗攻击测试方法进行功耗攻击的流程。功耗攻击的第一步是选择密码芯片所执行密码算法的一个中间值。这个中间值必须满足一个函数f(d,k),其中d是已知的随机明文或者随机密文,而k是密钥的一部分,即子密钥。功耗攻击的第二步是测量密码芯片在加密或者解密D个不同明文或者密文分组时的功耗。其中攻击者已知的明文或者密文测试向量记为向量d=(d
1,...,d
D)′,其中d
i表示第i次加密或者解密所对应的数据值。而将对应数据d
i分组的功耗迹记作t′
i=(t
i,1,...,t
i,T),其中T表示密码模块的功耗迹的长度。攻击的下一步是针对每一个可能的k值,计算对应的假设中间值。将这些可能的值记作k=(k
1,...,k
K),其中K表示k所有的可能值。在功耗攻击中,该向量的各元素通常称为假设密钥。通过给定的数据向量d和密钥假设k,攻击者可以很快的得到中间值f(d,k)。接下来攻击者选择一种功耗模型,用来映射由中间值造成的功耗,即模拟功耗。本发明中采用汉明距离模型作为功耗模型。汉明距离模型计算数字电路在某个特定时段内0→1转换和1→0转换的总数,来代表电路的功耗;计算选取的攻击点处的相邻两个时钟周期电路的汉明距离,将其作为假设功耗样本,对于M种随机明文和N种猜测密钥,生成的假设功耗矩阵H,大小为M*N。对得到的假设功耗矩阵H和实测功耗矩阵T进行数学处理,利用公式
计算出矩阵H和T的相关系数。根据计算的到的相关系数r可以生成K条相关性曲线。如果猜测的密钥是正确密钥,那么模拟功耗和真实功耗之间必然有一定的相关性,通过对大量的随机测试向量进行统计分析,将正确的相关性放大,在相关性曲线中将会出现一个明显的尖峰,反之,错误的密钥,将不会产生明显的尖峰,由此可以破解的到正确密钥。
如图5所示,为对DES算法进行攻击的具体示例,给出了用本发明的安全芯片功耗攻击测试方法对DES算法进行CPA攻击的相关参数列表。输入1000组随机明文和64个猜测密钥构造一个假设功耗矩阵,即H矩阵,该矩阵的大小为1000×64。用相关系数求解的公式,计算H矩阵和T矩阵之间的相关性。
如图6所示,为本发明的安全芯片功耗攻击测试方法的在对DES算法进行攻击的效果图,给出了前6位密钥的所有64种猜测密钥的相关系数图。由图中可以清晰地看到,大概在第12个功耗点附近,相关系数曲线出现了一个尖峰。此尖峰出现在第二轮加密开始的地方,和选择的攻击点相符合,此高峰对应的子密钥为“101011”,正是要猜测的6位密钥。
仿真实验结果证实了本发明的安全芯片功耗攻击测试方法对DES进行功耗攻击仿真的的有效性。1000次的随机明文的输入,就攻击出了DES的密钥。由于DES算法是对称分组加密算法,加密过程中,各个子密钥都进行了类似的迭代操作,所以以上攻击方法对于其他子密钥均适用。对其他的密钥段采用相同的CPA攻击,可快速解出DES的64位密钥。在此平台中若要获取DES的全部密码,只需要1000×8,总共8000组明文。相比较于数学攻击的264大小的样本,采用CPA对密码芯片的攻击显然更加高效,更具威胁性。