一种用于防御能量分析攻击的密码算法实现保护方法

文档序号:7841120阅读:172来源:国知局
专利名称:一种用于防御能量分析攻击的密码算法实现保护方法
技术领域
本发明涉及一种密码算法实现的保护方法,尤其涉及一种用于防御能量分析攻击的密码算法实现保护方法,属于信息技术安全领域。
背景技术
能量分析攻击是一种新兴的密码分析方法。能量分析攻击利用密码设备执行密码运算时的能量消耗与设备所执行的操作或者所处理的数据之间的相关性实施密码破解,具有攻击成本低,破解效率高的特点,已经对智能卡、RFID等嵌入式密码设备的安全性造成了严重的现实威胁。轻量级分组密码是一类在资源受限的工作环境下应用非常广泛的分组密码算法。轻量级分组密码最大的特点在于分组长度以及密钥长度相对较短,该特点使其更容易受到能量分析攻击的威胁。分组密码是将明文消息序列,划分成长度为η的组,每组分别在密钥的控制下变换成等长的输出序列。分组密码广泛地应用于电子支付、付费电视以及电子护照等领域。在这些领域中,分组密码大多基于智能卡、RFID等嵌入式的密码设备实现,而嵌入式的密码设备在计算能力与存储空间方面存在着严格的限制,一般称其为资源受限的工作环境。轻量级分组密码与其他非轻量级的分组密码算法的区别在于其分组长度相对较小、密钥长度相对较短,因此其加/解密过程对存储空间、计算能力的要求较低。可见,轻量级分组密码是特别适合资源受限的工作环境的一类分组密码算法。近年来,侧信道攻击作为一种新型的密码分析方法受到了产业界和学术界的广泛关注,得到迅速发展。传统的密码分析将密码实现视作黑盒子,只利用其输入与输出实施密码破解;而侧信道攻击区别于传统的密码分析方法的显著特征在于其不仅仅考虑密码实现的输入输出,而是同时利用密码实现在进行密码计算时泄露的时间信息、能量消耗信息或者电磁辐射信息等物理信息,辅助实施密码破解。能量分析攻击是一种利用密码设备运行时的能量消耗信息实施密钥恢复的侧信道攻击方法。自从Kocher等人于1998年提出差分能量分析(Differential Power Analysis)以来,大量行之有效的能量分析攻击方法被相继提出,包括模板攻击(Template Attack)、相关系数分析(CPA,Correlation Power Analysis)、基于随机模型的攻击 (Stochastic Model)、互信息分析(Mutual Information Analysis)、方差能量分析 (Variance Power Analysis)等。这些攻击方法对嵌入式的密码设备的实际安全性构成了严重的威胁。鉴于能量分析攻击对智能卡、RFID等嵌入式密码设备造成的巨大威胁,学术界与产业界提出了大量针对能量分析攻击的防御对策。基于软件方法的防御对策由于无需对嵌入式设备本身进行重新设计,所以具有设计周期短、部署成本低等优点。软件防御对策一般利用编码技术(或者信息共享技术)将易遭受能量分析攻击的中间值表示为与之没有统计相关性的值(即掩码技术),或者在保证计算正确的前提下,随机扰乱密码算法的执行流程,这些方法都能有效的降低能量消耗与目标中间值的相关性,从而起到防御能量分析攻击的作用。轻量级分组密码的密钥长度较短且其宿主嵌入式设备(如智能卡、RFID标签等) 往往没有高安全等级的访问控制机制,因此,很容易受到能量分析攻击,必须被给予特别的保护。现有的防御对策在轻量级分组密码中适用性较低。例如,掩码技术的实现需要较大的时间和空间开销,这种开销对于资源受限的应用环境而言是不现实的。而一些较高效的硬件对策,如双栅预充电逻辑(Dual-rail Precharge Logic)等,其设计和部署成本较高, 应用存在困难。

发明内容
基于上述技术需求和困境,本发明目的在于提供一种用于防御能量分析攻击的密码算法实现保护方法,本发明是一种低成本、高性能、高安全性的适用于轻量级分组密码的安全解决方案,提高轻量级分组密码算法在能量分析攻击下的物理安全性。需要指出的是, 该方法不仅仅适用于轻量级分组密码,该方法对于其他的非轻量级分组密码同样有效,只是该方法对于轻量级分组密码具有更好的适用性。能量分析攻击利用算法中间值与其相应能耗之间的相关性实施密钥恢复。攻击者猜测设备的密钥,根据已知的明文或密文计算猜测中间值。之后对猜测中间值与攻击者观察记录的能量消耗使用统计方法进行分析,以验证密钥猜测的正确性。一旦中间值与设备能耗的相关性被打破,攻击者就无法利用这种相关性进行恢复密钥。本方法的主要思路就是打破算法中间值与设备能耗之间的统计相关性,使得不同中间值对应的设备能耗基本相等,从而使攻击者无法利用这种相关性恢复设备的密钥。本发明的技术方案为一种用于防御能量分析攻击的密码算法实现保护方法,其步骤为1)对需要保护的密码算法的输入值进行比特平衡编码将输入数据流中比特值为0的数据比特编码为比特01,将比特值为1的数据比特编码为比特10 ;2)利用比特平衡编码后的数据进行密码运算,设密码算法为η比特分组密码算法;其中a)对于密码运算中的比特异或操作,首先将Encode(An)与一比特串(01)广· (01) n进行异或操作,然后将得到的异或值与Encode (Bn)进行异或操作;Encode (An)为η比特数据A经比特平衡编码后的值,Encode (Bn)为η比特数据B经比特平衡编码后的值;b)对于密码运算中的比特置换操作,将比特平衡编码后的第2i,2i+l两个比特与第2j,2j+l两个比特进行置换;其中,i、j分别为编码前需要置换的第i、j比特;C)对于密码运算中的比特循环移位操作,将比特平衡编码后的数据进行ail比特循环移位,其中,m为编码前要进行的比特循环移位数;3)对步骤2)运算的输出值进行解码,即以顺序输出的两比特为一组,取每组前一比特的值作为输出值。如权利要求1所述的方法,其特征在于设需保护的密码运算轮序列为M,所述输入值为密码算法中第N轮的密码运算中间值。一种用于防御能量分析攻击的密码算法实现保护方法,其步骤为1)对需要保护的密码算法的输入值进行比特平衡编码,将输入数据流中比特值为0的数据编码为比特10,将比特征值为1的数据编码为比特01 ;2)利用比特平衡编码后的数据进行密码运算,设密码算法为η比特分组密码算法;其中a)对于密码运算中的比特异或操作,首先将Encode(An)与一比特串(10)广· (10)n进行异或操作,然后将得到的异或值与Encode (Bn)进行异或操作;Encode (An)为η比特数据A经比特平衡编码后的值,Encode (Bn)为η比特数据B经比特平衡编码后的值;b)对于密码运算中的比特置换操作,将编码后的第2i,2i+l两个比特与第2j,2j+l两个比特进行置换;其中,i、j分别为编码前需要置换的第i、j比特;c)对于密码运算中的比特循环移位操作,将比特平衡编码后的数据进行an比特循环移位,其中,m为编码前要进行的比特循环移位数;3)对步骤2~)运算的输出值进行解码,即以顺序输出的两比特为一组,取每组后一比特的值作为输出值。进一步的,设需保护的密码运算轮序列为M,所述输入值为密码算法中第N轮的密码运算中间值。进一步的,对于密码运算中的S盒代换操作,如果输入S盒的数据是比特平衡编码,则首先对S盒查找表进行变换,生成新的S盒查找表S',使得S' [Encode(An)]=Encode (S[An]);然后根据输入数据查找表S',得到S盒代换操作输出数据;其中,Encode表示对数据进行比特平衡编码的操作,S[An]表示以AJt为输入得到的S盒代换操作的输出,An表示η比特未经编码的数据。进一步的,如果输入S盒的数据是未经过编码的数据,则首先计算新的S盒查找表S “,使得S “ [An] = Encode (S [An]),之后根据S “进行S盒查表操作。进一步的,所述数据A、B可以为任意比特长度。本方法通过对密码算法的执行过程添加适当的编码和解码步骤完成对密码算法中间值的保护。首先,在算法开始之前,对所有参加运算的数据,包括明文、密钥以及可能的初始向量做编码操作。之后在算法运行过程中使用编码后的数据与对应的操作,按照密码算法的步骤进行密码计算,完成加解密过程。在算法结束时,对编码后的结果数据进行解码操作,得到算法正常的输出。本方法只是对密码算法的中间值进行了编码以保证其不泄露信息,并不改变算法的输入与输出,保证算法运行结果正确。在本方法中使用的编码解码方法是比特平衡编码。比特平衡编码比特平衡编码,即通过对算法中间值进行编码,使不同的中间值具有相同的汉明重量。具体方法是对算法中间值的每一个比特使用两个互补比特进行编码,即使用10两个比特对比特1进行编码,使用01两个比特对比特0进行编码。对一个比特数据的编码表见表1。用V表示η比特的算法中间值,V[i]表示中间值V的第i个比特,V'表示经过编码的中间值,V' [j]表示编码之后的中间值的第j个比特。编码规则以及汉明重量变化表示如下V = V
I V[l] I V[2] | |· · · I ν[η-2] | |V[n_l]F' = F
||F
||F[1]||F[1]||F[2]||F[2]||... 11 V[n-2] 11 V[n-2] 11 V[n-l] 11 V[n-l]HW(V) = V
+V[l]+V[2]+. . . | V[n-2]+V[n_l]
权利要求
1.一种用于防御能量分析攻击的密码算法实现保护方法,其步骤为1)对需要保护的密码算法的输入值进行比特平衡编码将输入数据流中比特值为0的数据比特编码为比特01,将比特值为1的数据比特编码为比特10 ;2)利用比特平衡编码后的数据进行密码运算,设密码算法为η比特分组密码算法;其中a)对于密码运算中的比特异或操作,首先将Encode(An)与一比特串(01)Γ..(01)η 行异或操作,然后将得到的异或值与Encode(Bn)进行异或操作;Encode (An)为η比特数据 A经比特平衡编码后的值,Encode (Bn)为η比特数据B经比特平衡编码后的值;b)对于密码运算中的比特置换操作,将比特平衡编码后的第2i,2 +1两个比特与第 2j,2j+l两个比特进行置换;其中,i、j分别为编码前需要置换的第i、j比特;c)对于密码运算中的比特循环移位操作,将比特平衡编码后的数据进行an比特循环移位,其中,m为编码前要进行的比特循环移位数;3)对步骤幻运算的输出值进行解码,即以顺序输出的两比特为一组,取每组前一比特的值作为输出值。
2.如权利要求1所述的方法,其特征在于设需保护的密码运算轮序列为M,所述输入值为密码算法中第N轮的密码运算中间值。
3.如权利要求1或2所述的方法,其特征在于对于密码运算中的S盒代换操作,如果输入S盒的数据是比特平衡编码,则首先对S盒查找表进行变换,生成新的S盒查找表S',使得S' [Encode(An)] =Encode (S [An]);然后根据输入数据查找表S',得到S盒代换操作输出数据;其中,Encode表示对数据进行比特平衡编码的操作,S[An]表示以An作为输入得到的S盒代换操作的输出,An表示η比特未经编码的数据。
4.如权利要求1或2所述的方法,其特征在于如果输入S盒的数据是未经过编码的数据,则首先计算新的S盒查找表S",使得S" [AJ = Encode (S [An]),之后根据S"进行S 盒查表操作。
5.如权利要求1所述的方法,其特征在于所述数据A、B可以为任意比特长度。
6.一种用于防御能量分析攻击的密码算法实现保护方法,其步骤为1)对需要保护的密码算法的输入值进行比特平衡编码,将输入数据流中比特值为O的数据编码为比特10,将比特征值为1的数据编码为比特01 ;2)利用比特平衡编码后的数据进行密码运算,设密码算法为η比特分组密码算法;其中a)对于密码运算中的比特异或操作,首先将Encode(An)与一比特串(10)Γ··(10)η 行异或操作,然后将得到的异或值与Encode(Bn)进行异或操作;Encode (An)为η比特数据 A经比特平衡编码后的值,Encode (Bn)为η比特数据B经比特平衡编码后的值;b)对于密码运算中的比特置换操作,将编码后的第2i,2i+l两个比特与第2j,2j+l两个比特进行置换;其中,i、j分别为编码前需要置换的第i、j比特;c)对于密码运算中的比特循环移位操作,将比特平衡编码后的数据进行an比特循环移位,其中,m为编码前要进行的比特循环移位数;3)对步骤幻运算的输出值进行解码,即以顺序输出的两比特为一组,取每组后一比特的值作为输出值。
7.如权利要求6所述的方法,其特征在于设需保护的密码运算轮序列为M,所述输入值为密码算法中第N轮的密码运算中间值。
8.如权利要求6或7所述的方法,其特征在于对于密码运算中的S盒代换操作,如果输入S盒的数据是比特平衡编码,则首先对S盒查找表进行变换,生成新的S盒查找表S',使得S' [Encode(An)] =Encode (S [An]);然后根据输入数据查找表S',得到S盒代换操作输出数据;其中,Encode表示对数据进行比特平衡编码的操作,S[An]表示以An作为输入得到的S盒代换操作的输出,An表示η比特未经编码的数据。
9.如权利要求6或7所述的方法,其特征在于如果输入S盒的数据是未经过编码的数据,则首先计算新的S盒查找表S",使得S" [An] =Encode (S [An]),之后根据S"进行S 盒查表操作。
10.如权利要求6所述的方法,其特征在于所述数据A、B可以为任意比特长度。
全文摘要
本发明公开了一种用于防御能量分析攻击的密码算法实现保护方法,属于信息技术安全领域。本方法通过对密码算法的执行过程添加适当的编码和解码步骤完成对密码算法中间值的保护,首先,在算法开始之前,对所有参加运算的数据,包括明文、密钥以及可能的初始向量做编码操作;之后在算法运行过程中使用编码后的数据与对应的操作,按照密码算法的步骤进行密码计算,完成加解密过程;在算法结束时,对编码后的结果数据进行解码操作,得到算法正常的输出。本方法只是对密码算法的中间值进行了编码以保证其不泄露信息,并不改变算法的输入与输出,保证算法运行结果正确;同时可以获得比掩码防御措施更高的安全性,性能开销也更小。
文档编号H04L9/08GK102571331SQ20121002685
公开日2012年7月11日 申请日期2012年2月7日 优先权日2012年2月7日
发明者刘继业, 周永彬, 韩阳 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1