Document
拖动滑块完成拼图
首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

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

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:华南师范大学

摘要:本发明公开了一种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步骤上的计算复杂度。

主权项:KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,其特征在于,包括下述步骤:S1、4比特S盒Bitslicing方法:KLEIN的4比特置换盒是算法唯一的非线性处理步骤,用于将待加密数据转换为比特格式,与轮密钥逐比特异或后按照每4比特作为一个分组输入KLEIN所选用的4比特S盒,该S盒的Bitslicing操作首先通过代数标准型转换,将输入4比特转换为输出4比特的布尔运算方程组,故转换为4个布尔函数的形式;S2、RotateNibbles步骤法:将S1步骤输出的比特值再按照字节分组,合计8个字节,循环左移两个字节,再输出到下一步;由于该步骤基于字节进行运算,并且与数据比特值完全无关,因此不需要进行Bitslicing操作;S3、MixNibbles步骤Bitslicing方法:MixNibbles步骤将S2步骤的输出进行线性扩散操作,输出为KLEIN轮函数最终输出,将作为下一轮S1的输入值,即首先将MixNibbles当中所用到的GF上的乘法运算均转换为若干次查表运算与异或运算相结合的结果,基于该矩阵运算的特点,给出了每一个字节中逐比特运算的布尔函数表达式;S4、针对KLEIN不同密钥长度,重复步骤S1、S2、S3,直至获取相应完整加密输出值。

全文数据:KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法技术领域[00011本发明涉及密码算法的技术领域,特别涉及一种KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法。背景技术[0002]随着物联网(InternetofThings应用的不断发展,相关信息安全问题也得到了越来越多的重视。轻量级密码学算法,特别是轻量级分组密码算法,由于可以在低功耗环境下保证数据的机密性和完整性,在物联网安全中起着非常重要的作用。由于密码学算法分析与设计技术的成熟,采用传统密码学分析方法对于相关应用的实际威胁往往较小,但攻击者可以通过能量、时间或存储上所产生的边界信道信息进行攻击,在实际中往往更加具有威胁性。[0003]爱特梅尔ATMEL公司设计并制造的AVR系列微处理器具有低功耗、成本低、开发环境友善等优点,在物联网领域得到了广泛的应用。在RFIDSec2011会议上,Gong等人提出了一种新的面向软件实现的轻量级分组密码算法KLEIN在荷兰语中表示"mini"的意思)。如图1所示,KLEIN算法基于Substitution-PermutationNetwork结构加以设计,分组长度固定为64比特。算法密钥长度可选择64、80和96比特,但需要不同迭代轮数为12、16和20轮,对应名称为KLEIN-648096。为了达到受限环境下软件实现的高效性,KLEIN算法尽可能的采用了面向字节的处理模式。在算法的非线性模块上,KLEIN采用了具有自反性质的4比特S盒,使得算法仅需要付出一个S盒的代价来实现加解密运算。在扩散模块上,KLEIN将AES的MixColumns函数变形为算法中的MixNibbles函数,同时与面向字节的循环左移函数RotateNibbles相结合。这种设计思路既保证了KLEIN算法的软硬件效率,又继承了MixColumns函数最大距离码MDS特性。在密钥调度模块上,KLEIN选择了比较复杂的处理方法,从而保证基于KLEIN的哈希函数也具有较高的安全性。通过典型传感器硬件平台TelosB和IRIS上大量的实验数据分析,KLEIN算法在软件实现上比现有轻量级分组密码算法具有一定的优势。在硬件开销上,Synopsis软件综合输出结果表明三种密钥长度的KLEIN算法的硬件实现开销都低于1530个门电路。上述结果表明KLEIN算法在软硬件实现上均适用于WSN或RFID。在嵌入式密码算法实现上,攻击者往往采用边界信道的方式对密码算法所使用的密钥进行恢复攻击。算法在不同密钥下的时间、cache存储特征等边界信道都已在实际中证明能够被攻击者所利用。对于KLEIN分组密码算法而言,如果要在实际环境中加以使用,那么抵抗timing和Cache边界信道攻击是必须考虑的安全因素。[0004]Bitslicing实现技术最初用于DES分组加密算法的抗边界信道保护。在Bitslicing实现中,每一个输入分组都将基于比特的方式来进行计算操作。由于每一个比特的处理均由相同的处理步骤得到最终输出,算法实现在抵抗timing和Cache边界信道攻击上具有非常好的安全性。虽然在安全性上得到提高,但由于Bitslicing技术将以往基于分组的计算操作转变为基于比特,在软件实现上将会大大增加计算复杂度。因此往往只用于高性能并行化设备上的分组密码算法抗边界信道攻击实现。由于物联网设备价格低廉,设备的计算与存储开销均受限制,如何在相应的低功耗设备上给出分组密码算法的抗timing或Cache边界信道攻击实现,在当前学术界与工业界仍是热点研究问题。在已公开发表文献和专利中,尚未有针对KLEIN的抗timing或Cache边界信道攻击实现。发明内容[0005]本发明的目的在于克服现有技术的缺点与不足,提供一种针对KLEIN加密算法的AVR环境下高速抗timing和cache的保护方法。[0006]本发明的目的通过下述技术方案实现:[0007]KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,包括下述步骤:[0008]Sl、4比特S盒Bitslicing方法:KLEIN的4比特S盒是算法唯一的非线性处理步骤,用于将待加密数据转换为比特格式,与轮密钥逐比特异或后按照每4比特作为一个分组输入KLEIN所选用的4比特S盒,该S盒的Bitslicing操作首先通过代数标准型转换,将输入4比特转换为输出4比特的布尔运算方程组,故转换为4个布尔函数的形式;[0009]S2、RotateNibbles步骤法:将S1步骤输出的比特值再按照字节分组,合计8个字节,循环左移两个字节,再输出到下一步;由于该步骤基于字节进行运算,并且与数据比特值完全无关,因此不需要进行Bitslicing操作;[0010]S3、MixNibbles步骤13;^81;[3;[1^方法:]\^1附1313168步骤将32步骤的输出进行线性扩散操作,输出为KLEIN轮函数最终输出,将作为下一轮S1的输入值,即首先将MixNibbles当中所用到的GF上的乘法运算均转换为若干次查表运算与异或运算相结合的结果,基于该矩阵运算的特点,给出了每一个字节运算的布尔函数表达式;[0011]S4、针对KLEIN不同密钥长度,重复步骤SI、S2、S3,直至获取相应完整加密输出值。[0012]优选的,步骤S1中采用了基于读取特性的操作优化,在原始操作中,每次产生一个比特的输出后,再对下一个比特进行操作,需要重新读取整个字节。[0013]优选的,采用读取优化方法是在读取一个比特的数据后,进行相应的Bitslicing计算,然后在该比特数据写回存储器之前将所有与该字节变化相关的比特进行更新,减少数据字节重复读取的次数。[0014]优选的,针对S3步骤当中数据存储操作频繁,采用了基于存储特性的操作优化,由于KLEIN加密分组为8字节,因此可以通过将加密输入输出数据在存储器中集中排列的方式,由于AVR汇编中低位地址已经足够访问全部8字节空间,使得存储的高位地址在存储过程中不需要改变,减少Bitslicing操作中对数据进行存储时对地址进行访问的次数。[0015]优选的,步骤S1中,KLEIN的S盒的Bitslicing实现如下:[0016]y0=1+χ0+χ1+χ0χ2+χ1χ2+χ0χ1χ2+χ3+χ1χ3+χ0χ1χ3[0017]yl=1+χ0+χ2+χ1χ2+χ3+χ1χ3+χ0χ1χ3+χ2χ3[0018]y2=1+χ1+χ2+χ0χ2+χ1χ2+χ0χ1χ2+χ0χ3+χ0χ2χ3+χ1χ2χ3[0019]y3=xl+x0x2+x3+x0x3+x0xlx3+xlx2x3[0020]其中&〇414243和70,71,72,73分别为输入值乂和¥的从低到高4个比特。[0021]优选的,步骤S3中,MixNibbles步骤的Bitslicing方法,将GF上的乘2转换为字节布尔运算操作,再通过乘2运算构造其他元素的乘法运算。[0022]优选的,MixNibbles步骤每个输入输出字节的对应计算可转换为如下布尔运算表达式:[0031]其中i、j代表所在字节的矩阵行、列值,0-7表示字节内比特位置,0为最低位,7为最高位。[0032]优选的,步骤S4中,针对KLEIN-648096不同密钥长度,分别重复S1至S3的轮数为121416轮,获得相应完整加密输出值。[0033]本发明相对于现有技术具有如下的优点及效果:[0034]本发明从AVR微处理器的特点出发,基于AVRASM语言给出了面向物联网应用的轻量级分组加密算法KLEIN的Bitslicing实现级及相关优化方法。在实现过程中,本发明首先针对Sbox的ANF表达式,给出了Bitslicing下的优化处理方法。其次本发明分别基于读取和存储操作进行相应的优化,降低了算法在MixNibbles步骤上的计算复杂度,从而使得KLEIN算法能通过Bitslicing方式对timing和Cache等边界信道攻击方式进行防御。从AVR平台实际试验结果来看,优化后的KLEIN算法Bitslicing实现在AVR微处理器平台下具备可实用性。附图说明[0035]图1是KLEIN算法描述示意图;[0036]图2是本发明的流程图。具体实施方式[0037]下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。[0038]实施例[0039]本实施例从AVR微处理器的特点出发,基于AVRASM语言给出了面向物联网应用的轻量级分组加密算法KLEIN的Bitslicing实现级及相关优化方法。在实现过程中,首先针对Sbox的ANF表达式,给出了Bitslicing下的优化处理方法。其次分别基于读取和存储操作进行相应的优化,降低了算法在MixNibbles步骤上的计算复杂度,从而使得KLEIN算法能通过Bitslicing方式对timing和Cache等边界信道攻击方式进行防御。从AVR平台实际试验结果来看,优化后的KLEIN算法Bitslicing实现在AVR微处理器平台下具备可实用性。如图2所示,本实施例针对KLEIN加密算法的avr环境下高速抗timing和cache的保护方法具体为:[0040]1、4比特S盒Bitslicing方法[0041]在分组密码算法中,S盒往往作为唯一的非线性构件,实现算法在迭代若干轮数之后的抗密码学分析能力。在软件或硬件实现上,S盒运算往往采用查表法L〇〇k-UPTable,LUT的形式,从而加快加解密运算的速度。但在边界信道攻击中,由于不同的S盒输入会对查表时间造成影响(例如排在LUT表前面的查询速度快一点,排在后面的速度相对会慢一点)。攻击者可以通过timing或cache所泄漏的边界信道信息进行密钥的恢复。因而在S盒的实现上,我们可以通过Bitslicing的方式来避免查表所造成的时间或存储差异。常用的S盒Bitslicing方法就是将其转换为布尔运算表达式的方式AlgebraicNormalForm,ANF。由于KLEIN所用的S盒为4比特输入输出(如表1所示),因此可以转换为4个布尔函数的形式。根据ANF转换,可以得到KLEIN的S盒的Bitslicing实现如下:[0042]y0=1+χ0+χ1+χ0χ2+χ1χ2+χ0χ1χ2+χ3+χ1χ3+χ0χ1χ3[0043]yl=1+χ0+χ2+χ1χ2+χ3+χ1χ3+χ0χ1χ3+χ2χ3[0044]y2=1+χ1+χ2+χ0χ2+χ1χ2+χ0χ1χ2+χ0χ3+χ0χ2χ3+χ1χ2χ3[0045]y3=xl+x0x2+x3+x0x3+x0xlx3+xlx2x3[0046]其中(如41^243和70,71,72,73分别为输入值父和¥的从低到高4个比特。八册表达式中的加法与乘法运算均为二进制上的AND和XOR运算。[0047]表1KLEIN4比特S盒[0048][0049]如果采用上述方法来实现S盒,其处理速度将会比采用查表方法慢。我们可以通过并行化处理的方法来提高逐比特运算S盒的处理速度。其核心思想在于将S盒输入值当成与S盒输出长度相当的二维向量进行处理。举例而言,对于KLEIN的S盒而言,如果采用传统的ANF方式进行处理,每次输入4个bitx0,xl,x2,x3,输出则为y0,yl,y2,y3。如果我们把&〇010203看作是4个16比特向量值而不是单独1个比特,那么由于3盒处理都是在6?2上的运算,没有进位处理,所以输出值70,71,72,73也将变为向量值,这将降低5盒在Bitslicing后的速度损失。[0050]2、RotateNibbles步骤Bitslicing方法[0051]在KLEIN算法中,RotateNibbles步骤是将S盒输出值循环左移两个字节。由于该步骤在运算上与输入值无关,因而在Bitslicing上不需要进行特殊处理。所以在软件实现上,我们可以将RotateNibbles步骤和S盒操作步骤合并,从而省去该步骤开销。[0052]3、MixNibbles步骤Bitslicing方法[0053]在KLEIN算法中,MixNIbbles步骤与AES的MixColumns步骤在运算上是一致的。不同之处在于AES面向128192256比特进行处理,而KLEIN算法只需处理648096比特。AES的快速实现采用了256比特查表的方式,将MixColumns当中所用到的GF28上的乘法运算均转换为若干次查表运算与异或运算相结合的结果。在MixNibbles的Bitslicing实现上,基于该矩阵运算的特点,给出了每一个字节运算的布尔函数表达式如下:[0062]其中aijI0代表MixNibbles步骤中第i行、第j列所在字节的第0个比特。[0063]4、基于读取特性的操作优化[0064]在AVR微处理器环境下,要读取一个数组中的元素,计算其下标通常是复杂的。尤其在bt_Mixnibbles,下标形如((i+1%4*8+j*32,在i+Ι和j已知的情况下,仍然需要2次lsr、10次lsr和1次add操作。原来采用的方法是每读取一个数据只更新一个值。[0065]CALCULATEi%4+j[0066]READai4j|7[0067]CALCULATEi+l%4+j[0068]READai+l4j|〇[0069]READai+l4j|7[0070]bij|〇-ai4j|7X0Rai+l4j|0X0Rai+l4j|7[0071]CALCULATEi%4+j[0072]READai4j|〇[0073]READai4j|7[0074]CALCULATEi+l%4+j[0075]READai+l4j|〇[0076]bij11-ai4j|0X0Rai4j|7X0Rai+l4j|〇[0077]这样会增加下标计算和取数的操作。优化后采取的方法是读取一个数据更新所有与此数据相关的值。[0078]CALCULATEi%4+j[0079]READai4j|7[0080]bij|〇-ai4j|7[0081]bij11-bij11X0Rai4j|7[0082]bij|3-bij|3X0Rai4j|7[0083]bij|4-bij|4X0Rai4j|7[0084]此方法以增加空间的开销为代价,需要保存bijI0到bijI7的值。但值是保存在寄存器中的,所以不会增加实际开销。且根据bt_MixnibbleS算法的特点,可线性读取数据a的值。在AVR微处理器环境下,线性取值是很简单的,只需指针加1:LDRd,X+。[0085]5、基于存储特性的操作优化[0086]在AVR微处理器环境下,变量存放在RAM中,地址是16位的,寄存器是8位的。因此需使用两个寄存器分别保存高位地址和低位地址。而对数组变量进行读写操作,就必须修改高位地址寄存器和低位地址寄存器。采用原来的方法更新bt_state[20]的值:[0087]LowAddress^1owAddress+offset0xl4[0088]HighAddress^HighAddress+carryOor1[0089]bt_state[HighAddressILowAddress]-0x01[0090]利用存储特性来调整数据位置,使得对所有数组变量都不跨越低8位的地址空间carry为0,从而省去了所有对高位地址寄存器操作。采取优化后的方法更新bt_state[20]的值:[0091]LowAddress^1owAddress+offset0xl4;[0092]bt_state[HighAddressILowAddress]-0x01〇[0093]实验结果[0094]为了测试Bits1icing优化实现后的KLEIN算法的实用性,本申请采用ATMELATting45系列微处理器作为实验平台,在平台上使用AVRASM汇编语言(编译环境AVRStudio4.12来实现KLEIN-80加解密算法。ATtiny45系列微处理器具有4K字节可编程FlashROM,256字节EEPR0M,256字节SRAM,工作模式下主频可自适应调整,最大可为20MHz,KLEIN算法在AVR微处理器上的实现开销如表2所示。[0095]表2KLEIN算法在AVR微处理器上的实现开销比较[0098]为了体现针对AVR汇编的优化方法的效果,本申请将优化前后的Bits1icing[0096][0097]KLEIN算法也做了比较。各项性能数据均由AVRStudio4.12测试给出,其中代码大小是加解密算法所占FlashROM字节数,内存开销为所占SRAM字节数,处理速度则是算法加、解密一个分组所需要的微处理器时钟数;KLEIN算法在AVR微处理器上的加解密速度比较如表3所示。[0099]表3KLEIN算法在AVR微处理器上的加解密速度比较[0100][0101]从表2与表3给出的性能数据可以看出,采用Bitslicing方法来实现KLEIN算法大大增加的加解密所需的时间开销,但在实现的内存和代码大小开销上符合AVR硬件环境限制要求。造成该测试结果的关键在于基于比特而不是字节来进行加解密运算操作,对速度的影响十分明显。尽管在速度上与面向字节的实现相比没有优势,但由于Bitslicing实现能将每一次运算都规约到结果的一个比特,对于边界信道攻击者而言无法从计算或存储的差异性上获得优势。同时根据表3中具体工作频率下的加解密速度来看,Bitslicing后的KLEIN算法仍然在毫秒级别,可以满足AVR设备上的加解密要求。由于分组密码算法仅仅具有理论上的安全性往往会造成实际中的安全性问题,因而上述Bitslicing实现在需要抵抗timing和cache攻击的边界信道应用场景下具有很好的实用性。[0102]上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

权利要求:1.KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,其特征在于,包括下述步骤:51、4比特S盒Bitslicing方法:KLEIN的4比特S盒是算法唯一的非线性处理步骤,用于将待加密数据转换为比特格式,与轮密钥逐比特异或后按照每4比特作为一个分组输入KLEIN所选用的4比特S盒,该S盒的Bitslicing操作首先通过代数标准型转换,将输入4比特转换为输出4比特的布尔运算方程组,故转换为4个布尔函数的形式;步骤S1中采用了基于读取特性的操作优化,在原始操作中,每次产生一个比特的输出后,再对下一个比特进行操作,需要重新读取整个字节;52、RotateNibbles步骤法:将S1步骤输出的比特值再按照字节分组,合计8个字节,循环左移两个字节,再输出到下一步;由于该步骤基于字节进行运算,并且与数据比特值完全无关,因此不需要进行Bitslicing操作,采用读取优化方法是在读取一个比特的数据后,进行相应的Bitslicing计算,然后在该比特数据写回存储器之前将所有与该字节变化相关的比特进行更新,减少数据字节重复读取的次数;53、MixNibbles步骤Bitslicing方法:MixNibbles步骤将S2步骤的输出进行线性扩散操作,输出为KLEIN轮函数最终输出,将作为下一轮S1的输入值,即首先将MixNibbles当中所用到的GF上的乘法运算均转换为若干次查表运算与异或运算相结合的结果,基于该矩阵运算的特点,给出了每一个字节中逐比特运算的布尔函数表达式,针对数据存储操作频繁,采用了基于存储特性的操作优化,由于KLEIN加密分组为8字节,因此可以通过将加密输入输出数据在存储器中集中排列的方式,由于AVR汇编中低位地址已经足够访问全部8字节空间,使得存储的高位地址在存储过程中不需要改变,减少Bits1icing操作中对数据进行存储时对地址进行访问的次数;54、针对KLEIN不同密钥长度,重复步骤SI、S2、S3,直至获取相应完整加密输出值。2.根据权利要求1所述的KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,其特征在于步骤S1中,KLEIN的S盒的Bitslicing实现如下:yO=1+x0+x1+x0x2+x1x2+x0x1x2+x3+x1x3+x0x1x3yl=1+x0+x2+x1x2+x3+x1x3+x0x1x3+x2x3y2=1+x1+x2+x0x2+x1x2+x0x1x2+x0x3+x0x2x3+x1x2x3y3=xl+x0x2+x3+x0x3+x0xlx3+x1x2x3其中xO,xl,x2,x3和yO,yl,y2,y3分别为输入值X和Y的从低到高4个比特。3.根据权利要求1所述的KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,其特征在于,步骤S3中,MixNibbles步骤的Bitslicing方法,将GF上的乘2转换为字节布尔运算操作,再通过乘2运算构造其他元素的乘法运算。4.根据权利要求3所述的KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,其特征在于,MixNibbles步骤每个输入输出字节的对应计算可转换为如下布尔运算表达式:其中i、j代表所在字节的矩阵行、列值,0-7表示字节内比特位置,0为最低位,7为最高位。5.根据权利要求1所述的KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法,其特征在于,步骤S4中,针对KLEIN-648096不同密钥长度,分别重复S1至S3的轮数为121416轮,获得相应完整加密输出值。

百度查询: 华南师范大学 KLEIN加密AVR环境下抗timing和cache边信道攻击的快速保护方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。