一种对称密码算法抵抗侧信道分析的方法
【专利摘要】本发明设计了一种对称密码算法抵抗侧信道分析的方法,能够抵抗针对对称密码算法的侧信道攻击,阻止攻击者通过侧信道分析获取对称算法的运算密钥。对称密码算法可以通过软、硬件实现,在运算过程中,实现载体会通过侧信道泄露运算的密钥信息,例如利用运算过程中的功耗信息进行差分功耗分析攻击。侧信道分析对对称密码算法的软、硬件实现安全性产生了很大的威胁。本发明提出了一种对称密码算法抵抗侧信道分析的方法,在整个对称密码运算过程中,没有攻击者已知的明文数据参与运算,对称密码运算中的中间结果具有随机的掩码,且每轮运算的掩码不同,使得攻击者从侧信道分析中获取密钥信息变得极为困难,从而实现对对称密码算法密钥的保护。
【专利说明】一种对称密码算法抵抗侧信道分析的方法
【技术领域】
[0001]本发明涉及在电子部件中安全地执行DES密码算法的方法,尤其涉及电子部件在执行DES算法时抗侧信道攻击的方法。
【背景技术】
[0002]在数学原理上已证明是足够安全的对称密码算法如DES、AES等,在软硬件实现过程中,存在许多安全漏洞。这些安全漏洞往往通过功耗、运算时间和电磁辐射等侧信道形式被攻击者获取并进行统计分析。侧信道分析可以通过测量记录密码算法运算过程中的功耗、时间、电磁辐射等这些侧信道信息,经过数学计算,获取密码运算中使用的密钥信息,对密码算法的实现安全性产生了很大的威胁。因此,对称密码算法的实现安全性得到越来越多的重视。
[0003]对称密码算法通常有多轮运算构成,每轮运算结构相同,每轮运算中,长的密钥会拆成多个子密钥进行运算。在对对称密码算法进行侧信道分析过程中,攻击者需要利用已知明文,通过猜测运算过程中的子密钥,计算出运算过程中的一个中间值,测量记录该中间值产生的侧信道信息,经过统计分析,可以证实子密钥猜测是否正确,从而获取整个密码。
[0004]针对侧信道分析,有多种防御方法,例如增加功耗噪声,使用随机数进行数据掩码,均衡功耗变化等。本文提出的是一种新的基于掩码思想的防御方法。
【发明内容】
[0005]本发明提出了一种对称密码算法抵抗侧信道分析的方法,把对称密码算法的轮运算拆分成了对掩码的运算和对掩码后的明文的运算,使用计数器遍历子密钥,和掩码计算出多个中间结果,以计数器遍历的顺序,存储到存储单元中,存储时,加入了新的掩码;然后使用掩码后的明文和密钥计算出索引值,从存储单元中取出中间结果,经过运算后得出轮运算结果,计算出的轮运算结果具有掩码。在运算时,每轮运算都取用新的随机数作为掩码,使每轮运算结果具有的掩码不同。在整个对称密码运算过程中,没有攻击者已知的数据参与运算,参与运算的明文和中间运算结果都带有随机的掩码,且每轮运算的掩码不同,攻击者通过猜测密钥,计算出的运算过程中的中间值在实际运算中并不存在,也就无法通过对侧信道信息的统计分析,来判断密钥猜测的正确性,从而使得通过侧信道分析获取密钥信息变得极为困难。
[0006]该方法由部件掩码A、计数器、掩码B、密码函数1、存储单元、掩码后的明文、密码函数2、密钥、密码函数3、运算结果组成。把对称密码算法的轮运算分成三个步骤,步骤I)由掩码A,计数器,掩码B,密码函数I计算出中间结果,存储到存储单元中;步骤2)由掩码A掩码后的明文、密钥、密码函数2计算出索引值;步骤3)根据索引值从存储单元中获取中间结果,经过密码函数3计算出轮运算结果。重复上述步骤,直到完成对称密码算法规定的所有轮数。
[0007]本方法中,掩码A,掩码B是两个随机数,且掩码A不等于掩码B,掩码B在存储中间结果到存储单元时使用,在每轮运算时,取用新的随机数作为掩码B,使得每轮运算结果具有的掩码不同。步骤I)计算中,使用计数器遍历子密钥空间,对掩码A,掩码B进行密码函数I运算,运算得出的中间结果以计数器遍历的顺序,存入存储单元中。步骤I)中存储单元实现方式包括但不限于寄存器,单独的RAM存储器,外部SRAM。步骤2)中,使用经过随机数掩码A掩码以后的明文、密钥进行密码函数2运算,计算出的值作为查找存储单元的索引值。步骤3)中根据索引值从存储单元中获取中间结果,经过密码函数3计算出轮运算结果,该轮运算结果是具有掩码的轮运算结果。对称密码算法的全部轮运算都由这三步完成,或者只有部分轮运算由这三步完成。例如前两轮运算和后两轮运算使用该方法进行运算,其他轮数进行正常运算。
【专利附图】
【附图说明】
[0008]图1是本发明方法的原理图。
[0009]图2是以对称密码算法中常见的DES算法为例,说明本发明方法的【具体实施方式】。【具体实施方式】
[0010]本发明适用于多种对称密码算法,下面以对称密码算法中常见的DES算法为例,说明本发明方法的【具体实施方式】。
[0011]DES算法的原始计算流程是把64位明文分为左L0,右R0,各32位,右半边数据RO经过扩展变换E,扩展到48位宽,然后和48位宽的轮密钥Keyl进行异或,生成的48位数据分为6位一组,共8组,经过8个6进4出SBOX生成32位数据,该结果经过P变换然后和左半边数据LO进行异或后生成轮运算结果Rl = L0~F(R0,keyl),R0交换到左半边生成LI=RO。重复该步骤直至完成16轮运算。
[0012]把本发明方法应用到DES算法上,计算流程如图2所示,I)取随机数Ml,M2作为掩码A,掩码B ;2)掩码A为32位随机数,经过扩展变换E变为48位数据Dl ;3)计数器为6Bits计数器Cl ;4) D1、C1异或后,送入8个S盒,S盒为DES算法的6Bits进4Bits出的变换表,输出32Bits数据D2 ;5)PR是DES算法中P置换的逆变换,掩码B为和掩码A不同的32位随机数,左一半数据L经过掩码A掩码,然后经过PR变换后和D2异或生成D3 ;6)计数器Cl从0计数到63,遍历子密钥空间,生成不同的D3存储到存储单元中;7)右一半数据R经过掩码A掩码,然后经过扩展变换E后和密钥异或生成索引值NI ;8)根据NI从存储单元中取出数据D4 ;9)D4经过P置换后生成带有掩码的轮运算结果。完成DES的一轮运算。重复该步骤,完成16轮DES运算。
[0013]下表列出了每轮运算结果掩码值的变化和最终的掩码值。
[0014]
【权利要求】
1.一种对称密码算法抵抗侧信道分析的方法,其特征在于:该方法把对称密码算法的轮运算拆分成了对掩码的运算和对掩码后的明文的运算,使用计数器遍历子密钥,和掩码计算出多个中间结果,以计数器遍历的顺序,存储到存储单元中,存储时,加入了新的掩码;然后使用掩码后的明文和密钥计算出索引值,从存储单元中取出中间结果,经过运算后得出轮运算结果,计算出的轮运算结果具有掩码。
2.如权利要求1所述的方法,其特征在于所述对称密码算法的轮运算具体步骤如下: 1)由掩码A,计数器,掩码B,密码函数I计算出中间结果,存储到存储单元中; 2)由掩码A掩码后的明文、密钥、密码函数2计算出索引值; 3)根据索引值从存储单元中获取中间结果,经过密码函数3计算出轮运算结果; 其中掩码A,掩码B是两个随机数,且掩码A不等于掩码B ;密码函数1、密码函数2、密码函数3是对称密码算法中的函数运算。
3.如权利要求2所述的方法,其特征在于每轮运算时,取用新的随机数作为掩码B,使得每轮运算结果具有的掩码不同。
4.如权利要求2所述的方法,其特征在于步骤I)中,使用计数器遍历子密钥空间,对掩码A,掩码B进行密码函数I运算,运算得出的中间结果以计数器遍历的顺序,存入存储单元中。
5.如权利要求2或3所述的方法,其特征在于所述存储单元实现方式包括但不限于寄存器,单独的RAM存储器,外部SRAM。
6.如权利要求2所述的方法,其特征在于步骤2)中,使用经过随机数掩码A掩码以后的明文、密钥进行密码函数2运算,计算出的值作为查找存储单元的索引值。
7.如权利要求2所述的方法,其特征在于步骤3)中经过密码函数3计算出的轮运算结果具有掩码。
8.如权利要求1所述的方法,其特征在于:使用权利要求1描述的步骤完成对称密码算法的所有轮或部分轮运算。
【文档编号】H04L9/06GK103647639SQ201310636903
【公开日】2014年3月19日 申请日期:2013年12月3日 优先权日:2013年12月3日
【发明者】袁永锋, 陈波涛 申请人:北京中电华大电子设计有限责任公司