KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法

文档序号:7798860阅读:332来源:国知局
KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法
【专利摘要】本发明公开了一种KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,包括下述步骤:S1、通过代数标准型转换,将输入4比特转换为输出4比特的布尔运算方程组;S2、将S1步骤输出的比特值再按照字节分组,合计8个字节,循环左移两个字节,再输出到下一步;S3、将S2步骤的输出进行bitslicing化的线性扩散操作,输出为KLEIN轮函数最终输出,将作为下一轮S1的输入值;S4、针对KLEIN不同密钥长度,重复步骤S1、S2、S3,直至获取相应完整加密输出值。本发明使得KLEIN算法能通过Bitslicing方式对Timing和Cache等边界信道攻击方式进行防御。同时分别基于读取和存储操作进行相应的优化,从而降低了算法在MixNibbles步骤上的计算复杂度。
【专利说明】KLE IN加密AVR环境下抗timing和cache边信道攻击的快速保护方法
【技术领域】
[0001]本发明涉及密码算法的【技术领域】,特别涉及一种KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法。
【背景技术】
[0002]随着物联网(Internet of Things)应用的不断发展,相关信息安全问题也得到了越来越多的重视。轻量级密码学算法,特别是轻量级分组密码算法,由于可以在低功耗环境下保证数据的机密性和完整性,在物联网安全中起着非常重要的作用。由于密码学算法分析与设计技术的成熟,采用传统密码学分析方法对于相关应用的实际威胁往往较小,但攻击者可以通过能量、时间或存储上所产生的边界信道信息进行攻击,在实际中往往更加具有威胁性。
[0003]爱特梅尔(ATMEL)公司设计并制造的AVR系列微处理器具有低功耗、成本低、开发环境友善等优点,在物联网领域得到了广泛的应用。在RFIDSec2011会议上,Gong等人提出了一种新的面向软件实现的轻量级分组密码算法KLEIN (在荷兰语中表示“mini”的意思)。如图1所不,KLEIN算法基于Substitution-Permutation Network结构加以设计,分组长度固定为64比特。算法密钥长度可选择64、80和96比特,但需要不同迭代轮数为12、16和20轮,对应名称为KLEIN-64/80/96。为了达到受限环境下软件实现的高效性,KLEIN算法尽可能的采用了面向字节的处理模式。在算法的非线性模块上,KLEIN采用了具有自反性质的4比特S盒,使得算法仅需要付出一个S盒的代价来实现加解密运算。在扩散模块上,KLEIN将AES的MixColumns函数变形为算法中的MixNibbles函数,同时与面向字节的循环左移函数RotateNibbles相结合。这种设计思路既保证了 KLEIN算法的软硬件效率,又继承了 MixColumns函数最大距离码(MDS)特性。在密钥调度模块上,KLEIN选择了比较复杂的处理方法,从而保证基于KLEIN的哈希函数也具有较高的安全性。通过典型传感器硬件平台TelosB和IRIS上大量的实验数据分析,KLEIN算法在软件实现上比现有轻量级分组密码算法具有一定的优势。在硬件开销上,
[0004]Synopsis软件综合输出结果表明三种密钥长度的KLEIN算法的硬件实现开销都低于1530个门电路。上述结果表明KLEIN算法在软硬件实现上均适用于WSN或RFID。在嵌入式密码算法实现上,攻击者往往采用边界信道的方式对密码算法所使用的密钥进行恢复攻击。算法在不同密钥下的时间、cache存储特征等边界信道都已在实际中证明能够被攻击者所利用。对于KLEIN分组密码算法而言,如果要在实际环境中加以使用,那么抵抗Timing和Cache边界信道攻击是必须考虑的安全因素。
[0005]Bitslicing实现技术最初用于DES分组加密算法的抗边界信道保护。在bitslicing实现中,每一个输入分组都将基于比特的方式来进行计算操作。由于每一个比特的处理均由相同的处理步骤得到最终输出,算法实现在抵抗Timing和Cache边界信道攻击上具有非常好的安全性。虽然在安全性上得到提高,但由于bitslicing技术将以往基于分组的计算操作转变为基于比特,在软件实现上将会大大增加计算复杂度。因此往往只用于高性能并行化设备上的分组密码算法抗边界信道攻击实现。由于物联网设备价格低廉,设备的计算与存储开销均受限制,如何在相应的低功耗设备上给出分组密码算法的抗Timing或Cache边界信道攻击实现,在当前学术界与工业界仍是热点研究问题。在已公开发表文献和专利中,尚未有针对KLEIN的抗Timing或Cache边界信道攻击实现。

【发明内容】

[0006]本发明的目的在于克服现有技术的缺点与不足,提供一种针对KLEIN加密算法的AVR环境下高速抗timing和cache的保护方法。
[0007]本发明的目的通过下述技术方案实现:
[0008]KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,包括下述步骤:
[0009]Sl、4比特S盒Bitslicing方法=KLEIN的4比特置换盒是算法唯一的非线性处理步骤,用于将待加密数据转换为比特格式,与轮密钥逐比特异或后按照每4比特作为一个分组输入KLEIN所选用的4比特S盒,该S盒的Bitslicing操作首先通过代数标准型转换,将输入4比特转换为输出4比特的布尔运算方程组,故转换为4个布尔函数的形式;
[0010]S2,RotateNibbles步骤法:将SI步骤输出的比特值再按照字节分组,合计8个字节,循环左移两个字节,再输出到下一步;由于该步骤基于字节进行运算,并且与数据比特值完全无关,因此不需要进行Bitslicing操作;
[0011]S3、MixNibbles 步骤 Bitslicing 方法:MixNibbles 步骤将 S2 步骤的输出进行线性扩散操作,输出为KLEIN轮函数最终输出,将作为下一轮SI的输入值,即首先将MixNibbles当中所用到的GF上的乘法运算均转换为若干次查表运算与异或运算相结合的结果,基于该矩阵运算的特点,给出了每一个字节运算的布尔函数表达式;
[0012]S4、针对KLEIN不同密钥长度,重复步骤S1、S2、S3,直至获取相应完整加密输出值。
[0013]优选的,步骤SI中采用了基于读取特性的操作优化,在原始操作中,每次产生一个比特的输出后,再对下一个比特进行操作,需要重新读取整个字节。
[0014]优选的,采用读取优化方法是在读取一个比特的数据后,进行相应的Bitslicing计算,然后在该比特数据写回存储器之前将所有与该字节变化相关的比特进行更新,减少数据字节重复读取的次数。
[0015]优选的,针对S3步骤当中数据存储操作频繁,采用了基于存储特性的操作优化,由于KLEIN加密分组为8字节,因此可以通过将加密输入输出数据在存储器中集中排列的方式,由于AVR汇编中低位地址已经足够访问全部8字节空间,使得存储的高位地址在存储过程中不需要改变,减少Bitslicing操作中对数据进行存储时对地址进行访问的次数。
[0016]优选的,步骤SI中,KLEIN的S盒的bitslicing实现如下:
[0017]y0=l+x0+xl+x0x2+xlx2+x0xlx2+x3+xlx3+x0xlx3
[0018]yl=l+x0+x2+xlx2+x3+xlx3+x0xlx3+x2x3
[0019]y2=l+xl+x2+x0x2+xlx2+x0xlx2+x0x3+x0x2x3+x1x2x3
[0020]y3=xl+x0x2+x3+x0x3+x0xlx3+x1x2x3[0021]其中(xO,xl, x2, x3)和(yO,yl, y2, y3)分别为输入值X和Y的从低到高4个比特。
[0022]优选的,步骤S3中,MixNibbles步骤的Bitslicing方法,将GF上的乘2转换为字节布尔运算操作,再通过乘2运算构造其他元素的乘法运算。
[0023]优选的,MixNibbles步骤每个输入输出字节的对应计算可转换为如下布尔运算表达式:
[0024]bij I 0=a (i) 4j | 7 ? a (i+1) 4j | 0 ? a (i+1) 4j | 7 ? a (i+2) 4j | 0 ? a (i+3) 4 j | 0 ;
[0025]bij I l=a (i) 4j | 0 ? a (i) 4j | 7 ? a (i+1) 4j | 0 ? a (i+1) 4j | I ? a (i+1) 4j | 7 ?
[0026]a (i+2) 4 j I ? a (i+3) 4 j | I ;
[0027]bij |2=a(i)4j 11 ? a (i+1) 4 j 11 ? a(i+l)4j |2 ? a(i+2)4j |2 ? a(i+3)4j |2 ;
[0028]bij I 3=a (i) 4j | 2 ? a (i) 4j | 7 ? a (i+1) 4j | 2 ? a (i+1) 4j | 3 ? a (i+1) 4j | 7 ?
[0029]a (i+2) 4 j 3 ? a (i+3) 4 j | 3 ;
[0030]bij I 4=a (i) 4j | 3 ? a (i) 4j | 7 ? a (i+1) 4j | 3 ? a (i+1) 4j | 4 ? a (i+1) 4j | 7 ?[0031 ] a (i+2) 4 j 4 ? a (i+3) 4 j | 4 ;
[0032]bij I 5=a (i) 4j | 4 ? a (i+1) 4j | 4 ? a (i+1) 4j | 5 ? a (i+2) 4j | 5 ? a (i+3) 4 j | 5 ;
[0033]bij |6=a(i)4j |5 ? a(i+l)4j |5 ? a(i+l)4j |6 ? a(i+2)4j |6 ? a(i+3)4j |6 ;
[0034]bij |7=a(i)4j |6 ? a(i+l)4j |6 ? a(i+l)4j |7 ? a(i+2)4j |7 ? a(i+3)4j |7 ;
[0035]其中1、j代表所在字节的矩阵行、列值,0-7表示字节内比特位置,O为
[0036]最低位,7为最高位。
[0037]优选的,步骤S4中,针对KLEIN-64/80/96不同密钥长度,分别重复SI至S3的轮数为12/14/16轮,获得相应完整加密输出值。
[0038]本发明相对于现有技术具有如下的优点及效果:
[0039]本发明从AVR微处理器的特点出发,基于AVR ASM语言给出了面向物联网
[0040]应用的轻量级分组加密算法KLEIN的bitslicing实现级及相关优化方法。在实现过程中,本发明首先针对Sbox的ANF表达式,给出了 bitslicing下的优化处理方法。其次本发明分别基于读取和存储操作进行相应的优化,降低了算法在MixNibbles步骤上的计算复杂度,从而使得KLEIN算法能通过Bitslicing方式对Timing和Cache等边界信道攻击方式进行防御。从AVR平台实际试验结果来看,优化后的KLEIN算法bitslicing实现在AVR微处理器平台下具备可实用性。
【专利附图】

【附图说明】
[0041]图1是KLEIN算法描述不意图;
[0042]图2是本发明的流程图。
【具体实施方式】
[0043]下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
[0044]实施例
[0045]本实施例从AVR微处理器的特点出发,基于AVR ASM语言给出了面向物联网应用的轻量级分组加密算法KLEIN的bitslicing实现级及相关优化方法。在实现过程中,首先针对Sbox的ANF表达式,给出了 bitslicing下的优化处理方法。其次分别基于读取和存储操作进行相应的优化,降低了算法在MixNibbles步骤上的计算复杂度,从而使得KLEIN算法能通过Bitslicing方式对Timing和Cache等边界信道攻击方式进行防御。从AVR平台实际试验结果来看,优化后的KLEIN算法bitslicing实现在AVR微处理器平台下具备可实用性。如图2所示,本实施例针对KLEIN加密算法的avr环境下高速抗timing和cache的保护方法具体为:
[0046]1、4 比特 S 盒 Bitslicing 方法
[0047]在分组密码算法中,S盒往往作为唯一的非线性构件,实现算法在迭代若干轮数之后的抗密码学分析能力。在软件或硬件实现上,S盒运算往往采用查表法(Look-UPTable,LUT)的形式,从而加快加解密运算的速度。但在边界信道攻击中,由于不同的S盒输入会对查表时间造成影响(例如排在LUT表前面的查询速度快一点,排在后面的速度相对会慢一点)。攻击者可以通过timing或cache所泄漏的边界信道信息进行密钥的恢复。因而在S盒的实现上,我们可以通过Bitslicing的方式来避免查表所造成的时间或存储差异。常用的S盒bitslicing方法就是将其转换为布尔运算表达式的方式(AlgebraicNormalForm, ANF)。由于KLEIN所用的S盒为4比特输入输出(如表1所示),因此可以转换为4个布尔函数的形式。根据ANF转换,可以得到KLEIN的S盒的bitslicing实现如下:
[0048]y0=l+x0+xl+x0x2+xlx2+x0xlx2+x3+xlx3+x0xlx3
[0049]yl=l+x0+x2+xlx2+x3+xlx3+x0xlx3+x2x3
[0050]y2=l+xl+x2+x0x2+xlx2+x0xlx2+x0x3+x0x2x3+x1x2x3
[0051]y3=xl+x0x2+x3+x0x3+x0xlx3+x1x2x3
[0052]其中(xO, xl, x2, x3)和(yO, yl, y2, y3)分别为输入值X和Y的从低到高4个比特。ANF表达式中的加法与乘法运 算均为二进制上的AND和XOR运算。
[0053]表1KLEIN4 比特 S 盒
[0054]
【权利要求】
1.KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,其特征在于,包括下述步骤: 51、4比特S盒Bitslicing方法=KLEIN的4比特置换盒是算法唯一的非线性处理步骤,用于将待加密数据转换为比特格式,与轮密钥逐比特异或后按照每4比特作为一个分组输入KLEIN所选用的4比特S盒,该S盒的Bitslicing操作首先通过代数标准型转换,将输入4比特转换为输出4比特的布尔运算方程组,故转换为4个布尔函数的形式; 52、RotateNibbles步骤法:将SI步骤输出的比特值再按照字节分组,合计8个字节,循环左移两个字节,再输出到下一步;由于该步骤基于字节进行运算,并且与数据比特值完全无关,因此不需要进行Bitslicing操作; 53、MixNibbles步骤Bitslicing方法:MixNibbles步骤将S2步骤的输出进行线性扩散操作,输出为KLEIN轮函数最终输出,将作为下一轮SI的输入值,即首先将MixNibbles当中所用到的GF上的乘法运算均转换为若干次查表运算与异或运算相结合的结果,基于该矩阵运算的特点,给出了每一个字节中逐比特运算的布尔函数表达式; 54、针对KLEIN不同密钥长度,重复步骤S1、S2、S3,直至获取相应完整加密输出值。
2.根据权利要求1所述的KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,其特征在于,步骤SI中采用了基于读取特性的操作优化,在原始操作中,每次产生一个比特的输出后,再对下一个比特进行操作,需要重新读取整个字节。
3.根据权利要求2所述的KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,其特征在于,采用读取优化方法是在读取一个比特的数据后,进行相应的Bitslicing计算,然后在该比特数据写回存储器之前将所有与该字节变化相关的比特进行更新,减少数据字节重复读取的次数。`
4.根据权利要求1所述的KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,其特征在于,针对S3步骤当中数据存储操作频繁,采用了基于存储特性的操作优化,由于KLEIN加密分组为8字节,因此可以通过将加密输入输出数据在存储器中集中排列的方式,由于AVR汇编中低位地址已经足够访问全部8字节空间,使得存储的高位地址在存储过程中不需要改变,减少Bitslicing操作中对数据进行存储时对地址进行访问的次数。
5.根据权利要求1所述的KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,其特征在于步骤SI中,KLEIN的S盒的bitslicing实现如下:
y0=l+x0+xl+x0x2+xlx2+x0xlx2+x3+xlx3+x0xlx3
yl=l+x0+x2+xlx2+x3+xlx3+x0xlx3+x2x3
y2=l+xl+x2+x0x2+xlx2+x0xlx2+x0x3+x0x2x3+x1x2x3
y3=xl+x0x2+x3+x0x3+x0xlx3+x1x2x3 其中(xO,xl, x2, x3)和(yO,yl, y2, y3)分别为输入值X和Y的从低到高4个比特。
6.根据权利要求1所述的KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,其特征在于,步骤S3中,MixNibbles步骤的Bitslicing方法,将GF上的乘2转换为字节布尔运算操作,再通过乘2运算构造其他元素的乘法运算。
7.根据权利要求6所述的KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,其特征在于,MixNibbles步骤每个输入输出字节的对应计算可转换为如下布尔运算表达式:
8.根据权利要求1所述的KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,其特征在于,步骤S4中,针对KLEIN-64/80/96不同密钥长度,分别重复SI至S3的轮数为12/14/16轮,获得相应完整加密输出值。`
【文档编号】H04L9/06GK103873229SQ201410093165
【公开日】2014年6月18日 申请日期:2014年3月13日 优先权日:2014年3月13日
【发明者】龚征, 温雅敏, 周志荣 申请人:华南师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1