一种基于面积与性能平衡优化的klein加密实现方法
【专利摘要】本发明公开了一种基于面积与性能平衡优化的KLEIN加密实现方法,包括S盒优化以及两子模块共用S盒,构造一个Tab盒进行快速查表,密钥扩展轮常量i为自加方式,对轮密钥加、字节替换、行移位、列混合、密钥扩展基本子模块都封装整合到一个模块,算法赋值过程采用连续赋值assign语句实现,时钟信号控制计数器更新。再利用Verilog?HDL硬件描述语言并行执行特点及各子模块整合到一个模块的方式,采用全局同步时钟脉冲触发,充分利用器件本身的触发器与布线资源。本发明方法可以有效的节省KLEIN加密算法实现时所需占用的面积资源,提高加密速度,使KLEIN加密算法在较少硬件面积实现同时保持高性能。
【专利说明】—种基于面积与性能平衡优化的KLEIN加密实现方法
【技术领域】
[0001]本发明涉及信息安全技术中的密码算法领域,特别是涉及一种基于面积与性能平衡优化的KLEIN加密实现方法。
【背景技术】
[0002]随着无线通信和嵌入式系统的发展,我们越来越依赖于普适计算,更关注加密算法在资源受限的物联网中的高效实现应用。KLEIN是中国学者龚征在RFIDSEC2011会议上提出的轻型分组密码算法。KLEIN算法分组长度为64位,支持64/80/96位3种密钥长度,分别对应12/16/20轮加密。KLEIN算法宏观上是SP网络结构,在微观上分为五个模块:轮密钥加(AddRoundKey),字节替换(SubBytes),行移位变换(ShiftRows),列混合变换(MixColumns),密钥扩展(KeyExpansions)。轮密钥加将64位输入明文同对应密钥进行异或,字节替换采用的是4进4出的S盒,行移位将输入明文左移2个字节,列混合变换KLEIN采用AES的伽罗华域运算,将8个字节输入组成的4行2列矩阵乘以AES的列混淆矩阵得到64位输出,密钥扩展采用Feistel结构,由移位、异或、查找S盒部件组成。具体为64位初始密钥按左右32位划作两部分,左右32位(四个字节)分别执行左移I个字节操作;左移操作后右半部分输出32位,其32位(计四个字节)中第3个字节异或密钥扩展轮常量,得到轮密钥输出左边部分32位;左移操作后,左右两部分输出各32位进行相互异或的结果为32位(四个字节),第2、3字节查找4次4*4的S盒,得到轮密钥输出的右边部分32位。
[0003]KLEIN密码算法传统的优化方式只注重面积或性能中的一个方面优化。传统的优化实现方法现分析如下:
[0004]S盒,传统的加密算法实现都是采用case代码实现语句,查表实现,当为r个查表元素,m个模板元素时。其效率最坏的情况为0(r*m)。
[0005]列混合变换,传统的加密算法实现都是采用复杂的不同数之间在伽罗华域上计算,当为r个输入运算数,则进行2r次伽罗华域上的乘法运算。
[0006]在明文与密钥的S盒替换中,传统的方式明文生成密文与密钥扩展生成子密钥是相互独立的两个部分;对于两部分的S盒替换运算,需要开辟两个S盒模块。
[0007]密钥扩展中的密钥扩展轮常量i,传统的方式是寄存器存放所有i常量数据,当i常量数据有r个则要开r个寄存器。
[0008]模块整合,传统的方式是把各子模块独自封装,不过这样能方便检查代码错误,但独自封装是很占用加密算法的实现面积,同时加密算法的并行实行效果也较差。
[0009]在算法赋值与轮实现时,传统是采用大量的always语句实现,造成大量的寄存器开辟使用,增大硬件实现面积。并且在增大面积的轮数实现过程中,把12轮加密运算全部进行在一起操作,在理论上是用计数器控制每轮重复加密实现面积的12倍。
[0010]传统对加密算法的并行实现,常采用局部同步时钟脉冲触发方式,对于整体结构而言增加触发器与布线资源,系统工作频率和实现速度比较低。
【发明内容】
[0011]本发明提供了一种基于面积与性能平衡优化的KLEIN加密实现方法,其目的在于克服上述技术中的不足,有效节省KLEIN加密算法硬件实现所需使用的资源面积,提高加密速度,使KLEIN加密算法小面积实现与加密效率平衡。
[0012]一种基于面积与性能平衡优化的KLEIN加密实现方法,包括以下几个步骤:
[0013]步骤1:将待加密数据加载至寄存器;
[0014]步骤2:将所述待加密数据输出进行n轮运算操作;
[0015]1)将待加密数据与密钥进行异或操作,同时对密钥进行扩展,获得扩展密钥;
[0016]2)对将待加密数据与密钥进行异或运算得到的运算结果采用S盒进行字节替换运算;
[0017]3 )对采用S盒进行字节替换运算得到的运算结果进行左移2个字节的行移位变换运算;
[0018]4)对行移位变换运算得到的运算结果进行列混合变换运算;
[0019]5)对列混合变换运算得到的运算结果和I)得到的扩展密钥进行异或运算,得到的运算结果作为下一轮的待加密数据,如果到达第n轮运算,则进入步骤3,否则返回I);
[0020]步骤3:将步骤2中所述5)最后得到的运算结果输出,完成加密操作;
[0021]对密钥进行扩展是基于Feistel结构扩展完成;将密钥分为左右长度相等的两部分,对左半部分密钥及右半部分密钥进行移位运算,异或运算及S盒查表运算,其中移位运算为向左移位一个字节;
[0022]所述轮运算操作2)中S盒字节替换运算操作通过采用先用寄存器保存S盒数据,然后直接到寄存器内取值;
[0023]所述轮运算操作4)中列混合变换操作是通过构建Tab盒,将有限域的矩阵乘法转化为查Tab盒操作运算;
[0024]将行移位变换运算操作后得到的数据依次按照每个字节进行列存储的方式存储到 4行2列的矩阵B中,矩阵元素为btj,其中,k和j均为整数,0≤k≤3,0≤j≤1,将bk;J的高4位赋值给X,将bk,」的低4位赋值给y ;
[0025]所述Tab盒是指将数据0-255分别乘以2得到的数据依次存储至16*16的表格中,表格的行标X和列标y依次为0~F ;
[0026]将固定矩阵A与矩阵B相乘的运算结果按照以下公式获得行列混合变换运算的操
作结果矩阵:
【权利要求】
1.一种基于面积与性能平衡优化的KLEIN加密实现方法,其特征在于,包括以下几个步骤: 步骤1:将待加密数据加载至寄存器; 步骤2:将所述待加密数据输出进行n轮运算操作; 1)将待加密数据与密钥进行异或操作,同时对密钥进行扩展,获得扩展密钥; 2)对将待加密数据与密钥进行异或运算得到的运算结果采用S盒进行字节替换运算; 3)对采用S盒进行字节替换运算得到的运算结果进行左移2个字节的行移位变换运算; 4)对行移位变换运算得到的运算结果进行列混合变换运算; 5)对列混合变换运算得到的运算结果和I)得到的扩展密钥进行异或运算,得到的运算结果作为下一轮的待加密数据,如果到达第n轮运算,则进入步骤3,否则返回I); 步骤3:将步骤2中所述5)最后得到的运算结果输出,完成加密操作; 对密钥进行扩展是基于Feistel结构扩展完成;将密钥分为左右长度相等的两部分,对左半部分密钥及右半部分密钥进行移位、异或及S盒查表运算,其中移位运算为向左移位一个字节; 所述轮运算操作2)中S盒字节替换运算通过采用先用寄存器保存S盒数据,然后直接到寄存器内取值; 所述轮运算操作4)中列混合变换操作是通过构建Tab盒,将有限域的矩阵乘法转化为查Tab盒操作运算; 将行移位变换运算操作后得到的数据依次按照每个字节进行列存储的方式存储到4行2列的矩阵B中,矩阵元素为bk,」,其中,k和j均为整数,O≤k≤3,O≤j≤I,将bk,」的高4位赋值给X,将bt」的低4位赋值给y ; 所述Tab盒是指将数据0-255分别乘以2得到的数据依次存储至16*16的表格中,表格的行标X和列标y依次为0~F ; 将固定矩阵A与矩阵B相乘的运算结果按照以下公式获得行列混合变换运算的操作结
果矩阵
2.根据权利要求1所述的基于面积与性能平衡优化的KLEIN加密实现方法,其特征在于,所述对密钥进行扩展,对左半部分数据的第三个字节进行异或运算时,其异或操作的运算对象为变量i,i表示轮运算中的轮数。
3.根据权利要求2所述的基于面积与性能平衡优化的KLEIN加密实现方法,其特征在于,所述对密钥扩展时,对右半部分数据进行字节替换时采用的S盒为所述轮运算过程中2)对I)的S盒。
4.根据权利要求1所述的基于面积与性能平衡优化的KLEIN加密实现方法,其特征在于,所述对每一轮加密运算时;对所述轮数运算过程I)到5)中采用assign赋值方式衔接每个步骤之间的相互调用。
5.根据权利要求4所述的基于面积与性能平衡优化的KLEIN加密实现方法,其特征在于,所述对每一轮加密运算时;对所述轮数运算过程I)到5)中使用时钟信号来控制n轮加密;采用Verilog HDL语言中连续assign语句实现运算过程并行同步执行。
6.根据权利要求1-5所述的基于面积与性能平衡优化的KLEIN加密实现方法,其特征在于,密钥长度为64时,n取值为12 ;密钥长度为80时,n取值为16 ;密钥长度为96时,n取值为20。
【文档编号】H04L9/06GK103684749SQ201310611131
【公开日】2014年3月26日 申请日期:2013年11月26日 优先权日:2013年11月26日
【发明者】李浪, 刘波涛, 焦铬 申请人:衡阳师范学院