CN103684749A - 一种基于面积与性能平衡优化的klein加密实现方法 - Google Patents

一种基于面积与性能平衡优化的klein加密实现方法 Download PDF

Info

Publication number
CN103684749A
CN103684749A CN201310611131.9A CN201310611131A CN103684749A CN 103684749 A CN103684749 A CN 103684749A CN 201310611131 A CN201310611131 A CN 201310611131A CN 103684749 A CN103684749 A CN 103684749A
Authority
CN
China
Prior art keywords
dout
box
key
klein
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310611131.9A
Other languages
English (en)
Other versions
CN103684749B (zh
Inventor
李浪
刘波涛
焦铬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hengyang Normal University
Original Assignee
Hengyang Normal University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hengyang Normal University filed Critical Hengyang Normal University
Priority to CN201310611131.9A priority Critical patent/CN103684749B/zh
Publication of CN103684749A publication Critical patent/CN103684749A/zh
Application granted granted Critical
Publication of CN103684749B publication Critical patent/CN103684749B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于面积与性能平衡优化的KLEIN加密实现方法,包括S盒优化以及两子模块共用S盒,构造一个Tab盒进行快速查表,密钥扩展轮常量i为自加方式,对轮密钥加、字节替换、行移位、列混合、密钥扩展基本子模块都封装整合到一个模块,算法赋值过程采用连续赋值assign语句实现,时钟信号控制计数器更新。再利用Verilog HDL硬件描述语言并行执行特点及各子模块整合到一个模块的方式,采用全局同步时钟脉冲触发,充分利用器件本身的触发器与布线资源。本发明方法可以有效的节省KLEIN加密算法实现时所需占用的面积资源,提高加密速度,使KLEIN加密算法在较少硬件面积实现同时保持高性能。

Description

一种基于面积与性能平衡优化的KLEIN加密实现方法
技术领域
本发明涉及信息安全技术中的密码算法领域,特别是涉及一种基于面积与性能平衡优化的KLEIN加密实现方法。
背景技术
随着无线通信和嵌入式系统的发展,我们越来越依赖于普适计算,更关注加密算法在资源受限的物联网中的高效实现应用。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位(四个字节)分别执行左移1个字节操作;左移操作后右半部分输出32位,其32位(计四个字节)中第3个字节异或密钥扩展轮常量,得到轮密钥输出左边部分32位;左移操作后,左右两部分输出各32位进行相互异或的结果为32位(四个字节),第2、3字节查找4次4*4的S盒,得到轮密钥输出的右边部分32位。
KLEIN密码算法传统的优化方式只注重面积或性能中的一个方面优化。传统的优化实现方法现分析如下:
S盒,传统的加密算法实现都是采用case代码实现语句,查表实现,当为r个查表元素,m个模板元素时。其效率最坏的情况为O(r*m)。
列混合变换,传统的加密算法实现都是采用复杂的不同数之间在伽罗华域上计算,当为r个输入运算数,则进行2r次伽罗华域上的乘法运算。
在明文与密钥的S盒替换中,传统的方式明文生成密文与密钥扩展生成子密钥是相互独立的两个部分;对于两部分的S盒替换运算,需要开辟两个S盒模块。
密钥扩展中的密钥扩展轮常量i,传统的方式是寄存器存放所有i常量数据,当i常量数据有r个则要开r个寄存器。
模块整合,传统的方式是把各子模块独自封装,不过这样能方便检查代码错误,但独自封装是很占用加密算法的实现面积,同时加密算法的并行实行效果也较差。
在算法赋值与轮实现时,传统是采用大量的always语句实现,造成大量的寄存器开辟使用,增大硬件实现面积。并且在增大面积的轮数实现过程中,把12轮加密运算全部进行在一起操作,在理论上是用计数器控制每轮重复加密实现面积的12倍。
传统对加密算法的并行实现,常采用局部同步时钟脉冲触发方式,对于整体结构而言增加触发器与布线资源,系统工作频率和实现速度比较低。
发明内容
本发明提供了一种基于面积与性能平衡优化的KLEIN加密实现方法,其目的在于克服上述技术中的不足,有效节省KLEIN加密算法硬件实现所需使用的资源面积,提高加密速度,使KLEIN加密算法小面积实现与加密效率平衡。
一种基于面积与性能平衡优化的KLEIN加密实现方法,包括以下几个步骤:
步骤1:将待加密数据加载至寄存器;
步骤2:将所述待加密数据输出进行n轮运算操作;
1)将待加密数据与密钥进行异或操作,同时对密钥进行扩展,获得扩展密钥;
2)对将待加密数据与密钥进行异或运算得到的运算结果采用S盒进行字节替换运算;
3)对采用S盒进行字节替换运算得到的运算结果进行左移2个字节的行移位变换运算;
4)对行移位变换运算得到的运算结果进行列混合变换运算;
5)对列混合变换运算得到的运算结果和1)得到的扩展密钥进行异或运算,得到的运算结果作为下一轮的待加密数据,如果到达第n轮运算,则进入步骤3,否则返回1);
步骤3:将步骤2中所述5)最后得到的运算结果输出,完成加密操作;
对密钥进行扩展是基于Feistel结构扩展完成;将密钥分为左右长度相等的两部分,对左半部分密钥及右半部分密钥进行移位运算,异或运算及S盒查表运算,其中移位运算为向左移位一个字节;
所述轮运算操作2)中S盒字节替换运算操作通过采用先用寄存器保存S盒数据,然后直接到寄存器内取值;
所述轮运算操作4)中列混合变换操作是通过构建Tab盒,将有限域的矩阵乘法转化为查Tab盒操作运算;
将行移位变换运算操作后得到的数据依次按照每个字节进行列存储的方式存储到4行2列的矩阵B中,矩阵元素为bk,j,其中,k和j均为整数,0≤k≤3,0≤j≤1,将bk,j的高4位赋值给x,将bk,j的低4位赋值给y;
所述Tab盒是指将数据0-255分别乘以2得到的数据依次存储至16*16的表格中,表格的行标x和列标y依次为0~F;
将固定矩阵A与矩阵B相乘的运算结果按照以下公式获得行列混合变换运算的操作结果矩阵: dout 0 dout 4 dout 1 dout 5 dout 2 dout 6 dout 3 dout 7 , 其中,固定矩阵A为 02 03 01 01 01 02 03 01 01 01 02 03 03 01 01 02
dout0=f(b0,0)⊕f(b1,0)⊕b1,0⊕b2,0⊕b3,0
dout1=f(b1,0)⊕f(b2,0)⊕b0,0⊕b2,0⊕b3,0
dout2=f(b2,0)⊕f(b3,0)⊕b0,0⊕b1,0⊕b3,0
dout3=f(b0,0)⊕f(b3,0)⊕b0,0⊕b1,0⊕b2,0
dout4=f(b0,1)⊕f(b1,1)⊕b1,1⊕b2,1⊕b3,1
dout5=f(b1,1)⊕f(b2,1)⊕b0,1⊕b2,1⊕b3,1
dout6=f(b2,1)⊕f(b3,1)⊕b0,1⊕b1,1⊕b3,1
dout7=f(b0,1)⊕f(b3,1)⊕b0,1⊕b1,1⊕b2,1
其中,依据bk,j=(xy)16直接寻找Tab盒中行标为x列标为y的值赋给f(bk,j),bk,j=(xy)16中的16表示为十六进制。
所述对密钥进行扩展时,对左半部分数据的第三个字节进行异或运算时,其异或操作的运算对象为变量i,i表示轮运算中的轮数。
所述对密钥扩展时,对右半部分数据进行字节替换时采用的S盒为所述轮运算过程中2)对1)的S盒。
所述对每一轮加密运算时;对所述轮数运算过程1)到5)中采用assign赋值方式衔接每个步骤之间的相互调用。
所述对每一轮加密运算时;对所述轮数运算过程1)到5)过程中使用时钟信号来控制n轮加密;采用Verilog HDL语言中连续assign语句实现运算过程并行同步执行。
密钥长度为64时,n取值为12;密钥长度为80时,n取值为16;密钥长度为96时,n取值为20。
有益效果
本发明提供了一种基于面积与性能平衡优化的KLEIN加密实现方法,包括S盒优化以及两子模块共用S盒,构造一个Tab盒进行快速查表,密钥扩展中的密钥扩展轮常量i是自加方式,对分装轮密钥加、字节替换、行移位、列混合变换、密钥扩展基本子模块都整合到一个模块,算法赋值过程采用连续赋值assign语句实现,时钟信号控制计数器更新。再利用Verilog HDL语言并行执行特点与各子模块整合到一个模块方式,从而并行实现KLEIN加密运算,模块内部数值同时并行加密运算,各子模块之间并行执行;全局同步时钟脉冲触发,充分利用器件本身的触发器与布线资源。其中Tab盒是指将数据0-255分别乘以2得到的数据按照十六进制依次存储;
与传统硬件实现方法相比,KLEIN算法加密面积与加密速度等性能有很大的提高。S盒优化:采用寄存器预先存储技术,实现查表效率优化到O(1),特别是当S盒数组很大时,查表的速度有大幅度提高。列混合变换优化:模块内部用assign语句连续赋值,提高程序并行性,针对MixColumns本身乘不可约多项式的特征,Tab盒技术,使列混合变换整个运算转化为包含一个乘以{02}模块进行查Tab盒和若干个异或操作,从而避免了有限域GF(28)的复杂多项式乘法运算,当为r个输入运算数,则进行2r次有限域GF(28)上的乘法运算直接化为0次,只需在Tab盒里查表找到相应的值,该方法使用于多轮加密与大量MixColumns乘法运算的效果非常好,加密速度大大加快,加密效率提高明显。
明文加密与密钥扩展两个相互独立部分,融合到一个模块里构成一个部分;共用一个S盒数组,运算明文与密钥扩展替换,节省一个S盒数组面积资源。对于密钥扩展中的密钥扩展轮常量i,利用控制轮数中控制变量来控制i的自加,代替采取寄存器中存放所有i常量数据,减少寄存器的个数,当S盒数组与扩展轮常量i数组在很大的情况下,加密算法面积资源有效减少更为明显。
算法赋值过程采用连续赋值assign语句实现,时钟信号控制计数器更新,完成加密重复n个时钟周期与并行实现KLEIN加密运算,采用全局同步时钟脉冲触发方式,重复进行每一轮算法的加密方法,理论上硬件实现面积降低到串行的n分之一,同时加密性能较高。
所述发明方法在KLEIN加密算法优化实现过程中,能有效节省KLEIN加密算法所需使用的面积资源,提高加密速度。
附图说明
图1为现有技术中KLEIN算法加密流程图;
图2为本发明提出的KLEIN算法加密流程图;
图3为共用S盒模块流程图;
图4为列混合变换模块流程图;
图5为密钥扩展模块流程图;
图6为并行结构进行封装模块流程图。
具体实施方式
以下将结合附图和实施例对本发明做进一步的说明。
不失一般性,以64位密钥长的KLEIN为例,对本发明进行说明。
结合图1和图2的算法流程图对比,可以看出使用优化技术后算法硬件实现设计的合理性。算法中采用Verilog HDL语言中的连续赋值assign语句实现并行执行,采用全局同步时钟脉冲触发方式和所有基本子模块都整合到一个模块。
一种基于面积与性能平衡优化的KLEIN加密实现方法,包括以下几个步骤:
步骤1:将待加密数据加载至寄存器;
步骤2:将所述待加密数据输出进行n轮运算操作,n取值为12;
1)将待加密数据与密钥进行异或操作,同时对密钥进行扩展,获得扩展密钥;
2)对将待加密数据与密钥进行异或运算得到的运算结果采用S盒进行字节替换运算;
3)对采用S盒进行字节替换运算得到的运算结果进行左移2个字节的行移位变换运算;
4)对行移位变换运算得到的运算结果进行列混合变换运算;
5)对列混合变换运算得到的运算结果和1)得到的扩展密钥进行异或运算,得到的运算结果作为下一轮的待加密数据,如果到达第n轮运算,则进入步骤3,否则返回1);
步骤3:将步骤2中所述5)最后得到的运算结果输出,完成加密操作;
对密钥进行扩展是基于Feistel结构扩展完成;将密钥分为左右长度相等的两部分,对左半部分密钥及右半部分密钥进行移位运算,异或运算及S盒查表运算,其中移位运算为向左移位一个字节;
所述轮运算操作2)中S盒字节替换运算操作通过采用先用寄存器保存S盒数据,然后直接到寄存器内取值;
所述轮运算操作4)中列混合变换操作是通过构建Tab盒,将有限域的矩阵乘法转化为查Tab盒操作运算;
将行移位变换运算操作后得到的数据依次按照每个字节进行列存储的方式存储到4行2列的矩阵B中,矩阵元素为bk,j,其中,k和j均为整数,0≤k≤3,0≤j≤1,将bk,j的高4位赋值给x,将bk,j的低4位赋值给y;
所述Tab盒是指将数据0-255分别乘以2得到的数据依次存储至16*16的表格中,表格的行标x和列标y依次为0~F;
将固定矩阵A与矩阵B相乘的运算结果按照以下公式获得行列混合变换运算的操作结果矩阵: dout 0 dout 4 dout 1 dout 5 dout 2 dout 6 dout 3 dout 7 , 其中,固定矩阵A为 02 03 01 01 01 02 03 01 01 01 02 03 03 01 01 02
dout0=f(b0,0)⊕f(b1,0)⊕b1,0⊕b2,0⊕b3,0
dout1=f(b1,0)⊕f(b2,0)⊕b0,0⊕b2,0⊕b3,0
dout2=f(b2,0)⊕f(b3,0)⊕b0,0⊕b1,0⊕b3,0
dout3=f(b0,0)⊕f(b3,0)⊕b0,0⊕b1,0⊕b2,0
dout4=f(b0,1)⊕f(b1,1)⊕b1,1⊕b2,1⊕b3,1
dout5=f(b1,1)⊕f(b2,1)⊕b0,1⊕b2,1⊕b3,1
dout6=f(b2,1)⊕f(b3,1)⊕b0,1⊕b1,1⊕b3,1
dout7=f(b0,1)⊕f(b3,1)⊕b0,1⊕b1,1⊕b2,1
其中,依据bk,j=(xy)16直接寻找Tab盒中行标为x列标为y的值赋给f(bk,j),bk,j=(xy)16中的16表示为十六进制。
字节替换(SubBytes):字节替换是密码算法中非线性变换。该置换包含一个作用在状态字节上的S盒(用S-box表示)。设定S盒的输入为4位g,输出为4位q,即q=S(g)。在实现时可以用一个1*16位的置换表来表示S盒,通过查表即可实现变换,采用优化的S盒。state为64位输入端口,a为64位输出端口,是把64位的数拆开16个4位的数,从而在一个1*16位的S盒进行置换,实现S盒优化代码如下:
Figure BDA0000422673200000063
共用S盒:在加密算法中,明文生成密文与密钥扩展生成子密钥是相互独立的两个部分;只是在轮密钥加中明文与密钥进行异或运算,对于两部分的S盒替换运算,是需要开辟两个S盒模块。在采用共用S盒技术,是把明文生成密文与密钥扩展生成子密钥是相互独立的两个部分进行融合成一个部分;在这一部分模块里只开辟一个S盒数组进行明文S盒与密钥扩展S盒替换运算。man[state[1:64]]为明文的S盒替换,man[w[2][1:4]^w[6][1:4]].......man[w[3][5:8]^w[7][5:8]]为密钥的S盒替换,两者替换都是采用man[]S盒数组,可知两部分在一个模块里。state[1:64]为明文输入,a为man[]S盒替明文输出;w[2][1:4]^w[6][1:4].......w[3][5:8]^w[7][5:8]为密钥输入,h为man[]S盒替密钥输出;结合图3与以下实现代码:
Figure BDA0000422673200000064
Figure BDA0000422673200000071
列混合变换(MixColumns)优化:Tab盒的构建,在KLEIN算法把一个字节看成是在有限域GF(28)上的一个元素,将有限域GF(28)上一个字节二进制数{00000000}到{11111111}共256个元素乘以{02}预先存储在一个Tab盒中,运算公式如下:
f(b0)=b0*{02},f(b1)=b1*{02}.......f(bV)=bV*{02}
b0,b1......bV(其中0<=V<=255)为有限域GF(28)上的一个字节二进制数{00000000}到{11111111}256个元素中的数,十六进制数{02}为二进制数{00000010},*为乘法运算,f(...)为有限域GF(28)乘{02}运算函数。Tab盒把f(...)函数值制成一个如下表1所示,把Tab盒所有元素用寄存器存储起来,在有限域GF(28)上所有元素运算中利用查表方式直接到寄存器内取值。
表1Tab盒
根据KLEIN算法矩阵的多项式乘法运算,列混淆矩阵是4行4列的矩阵,而KLEIN算法是4行2列矩阵。
在KLEIN密码算法中,4行2列的矩阵为:
b={(b0,0,b0,1)(b1,0,b1,1)(b2,0,b2,1)(b3,0,b3,1)}
(b0,0,b0,1)(b1,0,b1,1)(b2,0,b2,1)(b3,0,b3,1)属于GF(28)上的元素b0,b1......bi(其中0<=i<=255),
dout0={02}*b0,0⊕{03}*b1,0⊕{01}*b2,0⊕{01}*b3,0=f(b0,0)⊕f(b1,0)⊕b1,0⊕b2,0⊕b3,0
dout1={01}*b0,0⊕{02}*b1,0⊕{03}*b2,0⊕{01}*b3,0=f(b1,0)⊕f(b2,0)⊕b0,0⊕b2,0⊕b3,0
dout2={01}*b0,0⊕{01}*b1,0⊕{02}*b2,0⊕{03}*b3,0=f(b2,0)⊕f(b3,0)⊕b0,0⊕b1,0⊕b3,0
dout3={03}*b0,0⊕{01}*b1,0⊕{01}*b2,0⊕{02}*b3,0=f(b0,0)⊕f(b3,0)⊕b0,0⊕b1,0⊕b2,0
dout4={02}*b0,1⊕{03}*b1,1⊕{01}*b2,1⊕{01}*b3,1=f(b0,1)⊕f(b1,1)⊕b11⊕b2,1⊕b3,1
dout5={01}*b0,1⊕{02}*b1,1⊕{03}*b2,1⊕{01}*b3,1=f(b1,1)⊕f(b2,1)⊕b0,1⊕b2,1⊕b3,1
dout6={01}*b0,1⊕{01}*b1,1⊕{02}*b2,1⊕{03}*b3,1=f(b2,1)⊕f(b3,1)⊕b0,1⊕b1,1⊕b3,1
dout7={03}*b0,1⊕{01}*b1,1⊕{01}*b2,1⊕{02}*b3,1=f(b0,1)⊕f(b3,1)⊕b0,1⊕b1,1⊕b2,1
dout0,dout1,dout2,dout3,dout4,dout5,dout6,dout7为列混合变换输出值,同样组成为4行2列的矩阵,⊕为异或运算,*为乘法运算,b0,0,b0,1......bk,j(其中k和j均为整数,0≤k≤3,0≤j≤1)为有限域GF(28)上元素,也就是行移位输入的明文值。
整个运算中包含一个乘以{02}模块进行查Tab盒和若干个异或操作。b为64位输入端口,dout为64位输出端口,结合图4与以下实现代码:
Figure BDA0000422673200000081
密钥扩展(KeyExpansions)模块实现密钥变换,它是由原始密钥通过密钥扩展算法导出更新密钥,其长度等于64位。在具体实现过程中主要采用上升沿有效时钟控制密钥生成,使得在生成密钥同一时钟周期的下降沿即可传递密钥,利用count计数器控制轮数,是每轮重复进行子密钥更新,并且密钥扩展中的密钥扩展轮常量i是利用控制轮数的控制变量以控制i的自加。原始密钥key为64位输入端口,更新轮密钥nkey为64位输出端口,clk为时钟信号、siga为轮判断信号、reset为复位信号,结合图5与以下实现代码:
Figure BDA0000422673200000091
并行结构进行封装把S盒、字节替换、行移位、Tab盒(用于列混合变换的伽罗华域乘法运算时查表,大幅度提高运算速率。)、列混合变换、密钥扩展六个基本子模块都整合到一个模块里,各子模块并行执行。赋值采用连续赋值(assign)语句,全局同步时钟脉冲触发方式,脉冲clk时钟信号控制计数器count更新,脉冲reset为复位控制信号,完成加密只需12个时钟周期。明文state,原始密钥key为64位输入端口,密文result为64位输出端口,clk为时钟信号、siga作为轮判断信号、sigb为轮输出信号,结合图6与以下实现代码:
Figure BDA0000422673200000101
对以上KLEIN密钥长为64位的具体实施例,在Xilinx Virtex5FPGA上进行了实现,实验表明时钟频率为102.281MHz时,吞吐率达到了6.55Gb/s,而占用面积资源则只有10277Slices。
该方法同样适应于长度为80或96的密钥,密钥长度为80时,n取值为16;密钥长度为96时,n取值为20。
以上结合具体实施例对本发明进行了详细的说明,这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可以作出许多变形和改进,这些也应属于本发明的保护范围。

Claims (6)

1.一种基于面积与性能平衡优化的KLEIN加密实现方法,其特征在于,包括以下几个步骤:
步骤1:将待加密数据加载至寄存器;
步骤2:将所述待加密数据输出进行n轮运算操作;
1)将待加密数据与密钥进行异或操作,同时对密钥进行扩展,获得扩展密钥;
2)对将待加密数据与密钥进行异或运算得到的运算结果采用S盒进行字节替换运算;
3)对采用S盒进行字节替换运算得到的运算结果进行左移2个字节的行移位变换运算;
4)对行移位变换运算得到的运算结果进行列混合变换运算;
5)对列混合变换运算得到的运算结果和1)得到的扩展密钥进行异或运算,得到的运算结果作为下一轮的待加密数据,如果到达第n轮运算,则进入步骤3,否则返回1);
步骤3:将步骤2中所述5)最后得到的运算结果输出,完成加密操作;
对密钥进行扩展是基于Feistel结构扩展完成;将密钥分为左右长度相等的两部分,对左半部分密钥及右半部分密钥进行移位、异或及S盒查表运算,其中移位运算为向左移位一个字节;
所述轮运算操作2)中S盒字节替换运算通过采用先用寄存器保存S盒数据,然后直接到寄存器内取值;
所述轮运算操作4)中列混合变换操作是通过构建Tab盒,将有限域的矩阵乘法转化为查Tab盒操作运算;
将行移位变换运算操作后得到的数据依次按照每个字节进行列存储的方式存储到4行2列的矩阵B中,矩阵元素为bk,j,其中,k和j均为整数,0≤k≤3,0≤j≤1,将bk,j的高4位赋值给x,将bk,j的低4位赋值给y;
所述Tab盒是指将数据0-255分别乘以2得到的数据依次存储至16*16的表格中,表格的行标x和列标y依次为0~F;
将固定矩阵A与矩阵B相乘的运算结果按照以下公式获得行列混合变换运算的操作结果矩阵: dout 0 dout 4 dout 1 dout 5 dout 2 dout 6 dout 3 dout 7 , 其中,固定矩阵A为 02 03 01 01 01 02 03 01 01 01 02 03 03 01 01 02
dout0=f(b0,0)⊕f(b1,0)⊕b1,0⊕b2,0⊕b3,0
dout1=f(b1,0)⊕f(b2,0)⊕b0,0⊕b2,0⊕b3,0
dout2=f(b2,0)⊕f(b3,0)⊕b0,0⊕b1,0⊕b3,0
dout3=f(b0,0)⊕f(b3,0)⊕b0,0⊕b1,0⊕b2,0
dout4=f(b0,1)⊕f(b1,1)⊕b1,1⊕b2,1⊕b3,1
dout5=f(b1,1)⊕f(b2,1)⊕b0,1⊕b2,1⊕b3,1
dout6=f(b2,1)⊕f(b3,1)⊕b0,1⊕b1,1⊕b3,1
dout7=f(b0,1)⊕f(b3,1)⊕b0,1⊕b1,1⊕b2,1
其中,依据bk,j=(xy)16直接寻找Tab盒中行标为x、列标为y的值赋给f(bk,j)。
2.根据权利要求1所述的基于面积与性能平衡优化的KLEIN加密实现方法,其特征在于,所述对密钥进行扩展,对左半部分数据的第三个字节进行异或运算时,其异或操作的运算对象为变量i,i表示轮运算中的轮数。
3.根据权利要求2所述的基于面积与性能平衡优化的KLEIN加密实现方法,其特征在于,所述对密钥扩展时,对右半部分数据进行字节替换时采用的S盒为所述轮运算过程中2)对1)的S盒。
4.根据权利要求1所述的基于面积与性能平衡优化的KLEIN加密实现方法,其特征在于,所述对每一轮加密运算时;对所述轮数运算过程1)到5)中采用assign赋值方式衔接每个步骤之间的相互调用。
5.根据权利要求4所述的基于面积与性能平衡优化的KLEIN加密实现方法,其特征在于,所述对每一轮加密运算时;对所述轮数运算过程1)到5)中使用时钟信号来控制n轮加密;采用Verilog HDL语言中连续assign语句实现运算过程并行同步执行。
6.根据权利要求1-5所述的基于面积与性能平衡优化的KLEIN加密实现方法,其特征在于,密钥长度为64时,n取值为12;密钥长度为80时,n取值为16;密钥长度为96时,n取值为20。
CN201310611131.9A 2013-11-26 2013-11-26 一种基于面积与性能平衡优化的klein加密实现方法 Active CN103684749B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310611131.9A CN103684749B (zh) 2013-11-26 2013-11-26 一种基于面积与性能平衡优化的klein加密实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310611131.9A CN103684749B (zh) 2013-11-26 2013-11-26 一种基于面积与性能平衡优化的klein加密实现方法

Publications (2)

Publication Number Publication Date
CN103684749A true CN103684749A (zh) 2014-03-26
CN103684749B CN103684749B (zh) 2016-06-29

Family

ID=50321148

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310611131.9A Active CN103684749B (zh) 2013-11-26 2013-11-26 一种基于面积与性能平衡优化的klein加密实现方法

Country Status (1)

Country Link
CN (1) CN103684749B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104917610A (zh) * 2015-06-15 2015-09-16 上海交通大学 基于量子真随机数的通信中继服务器安全系统及方法
CN109995506A (zh) * 2019-04-09 2019-07-09 司法鉴定科学研究院 Skinny算法优化实现方法、系统、终端、存储介质
CN110071794A (zh) * 2019-04-28 2019-07-30 苏州国芯科技股份有限公司 一种基于aes算法的信息加密方法、系统及相关组件
CN111314079A (zh) * 2018-12-11 2020-06-19 北京思源理想控股集团有限公司 一种加解密方法、装置
CN113282949A (zh) * 2021-07-26 2021-08-20 中国电力科学研究院有限公司 数据加密方法、数据解密方法、装置及电力数据交互系统
CN113645615A (zh) * 2021-08-12 2021-11-12 衡阳师范学院 轻量级分组密码加密及解密方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101588233A (zh) * 2008-05-19 2009-11-25 北京大学深圳研究生院 无线传感器网络节点应用中aes协处理器系统与架构
CN102025484A (zh) * 2010-12-17 2011-04-20 北京航空航天大学 一种分组密码加解密方法
CN102142957A (zh) * 2010-09-17 2011-08-03 华为技术有限公司 数据加密的方法、装置及具有数据加密功能的通信设备
CN102221990A (zh) * 2011-05-26 2011-10-19 山东大学 针对aes对称加密算法的指令优化方法及其处理器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101588233A (zh) * 2008-05-19 2009-11-25 北京大学深圳研究生院 无线传感器网络节点应用中aes协处理器系统与架构
CN102142957A (zh) * 2010-09-17 2011-08-03 华为技术有限公司 数据加密的方法、装置及具有数据加密功能的通信设备
CN102025484A (zh) * 2010-12-17 2011-04-20 北京航空航天大学 一种分组密码加解密方法
CN102221990A (zh) * 2011-05-26 2011-10-19 山东大学 针对aes对称加密算法的指令优化方法及其处理器

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JEAN-PHILIPPE AUMASSON ETC.: "Practical Attack on 8 rounds of the Lightweight Block Cipher KLEIN", 《12TH INTERNATIONAL CONFERENCE ON CRYPTOLOGY IN INDIA》, 30 December 2011 (2011-12-30) *
ZHENG GONG ETC.: "KLEIN:A New Family of Lightweight Block Ciphers", 《7TH INTERNATIONAL WORKSHOP,RFIDSEC 2011》, 30 June 2011 (2011-06-30) *
温雅敏等: "2MyriaNed传感器平台分组密码算法的实现与优化", 《吉首大学学报》, vol. 33, no. 5, 30 September 2012 (2012-09-30) *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104917610A (zh) * 2015-06-15 2015-09-16 上海交通大学 基于量子真随机数的通信中继服务器安全系统及方法
CN104917610B (zh) * 2015-06-15 2018-03-06 上海交通大学 基于量子真随机数的通信中继服务器安全系统及方法
CN111314079A (zh) * 2018-12-11 2020-06-19 北京思源理想控股集团有限公司 一种加解密方法、装置
CN111314079B (zh) * 2018-12-11 2023-09-12 北京思源理想控股集团有限公司 一种加解密方法、装置
CN109995506A (zh) * 2019-04-09 2019-07-09 司法鉴定科学研究院 Skinny算法优化实现方法、系统、终端、存储介质
CN110071794A (zh) * 2019-04-28 2019-07-30 苏州国芯科技股份有限公司 一种基于aes算法的信息加密方法、系统及相关组件
CN110071794B (zh) * 2019-04-28 2022-06-07 苏州国芯科技股份有限公司 一种基于aes算法的信息加密方法、系统及相关组件
CN113282949A (zh) * 2021-07-26 2021-08-20 中国电力科学研究院有限公司 数据加密方法、数据解密方法、装置及电力数据交互系统
CN113282949B (zh) * 2021-07-26 2021-11-02 中国电力科学研究院有限公司 数据加密方法、数据解密方法、装置及电力数据交互系统
CN113645615A (zh) * 2021-08-12 2021-11-12 衡阳师范学院 轻量级分组密码加密及解密方法
CN113645615B (zh) * 2021-08-12 2023-12-22 衡阳师范学院 轻量级分组密码加密及解密方法

Also Published As

Publication number Publication date
CN103684749B (zh) 2016-06-29

Similar Documents

Publication Publication Date Title
CN103684749A (zh) 一种基于面积与性能平衡优化的klein加密实现方法
Farashahi et al. FPGA based fast and high-throughput 2-slow retiming 128-bit AES encryption algorithm
Akishita et al. Very compact hardware implementations of the blockcipher CLEFIA
Jean et al. Joltik v1. 3
CN109033892B (zh) 基于合成矩阵的轮变换复用电路及aes解密电路
CN111064562A (zh) 一种fpga上的aes算法的实现方法
CN109039583B (zh) 复用轮变换电路、aes加密电路及加密方法
Kouser et al. FPGA implementation of advanced Encryption Standard algorithm
CN109150495B (zh) 一种轮变换复用电路及其aes解密电路
Deshpande et al. AES encryption engines of many core processor arrays on FPGA by using parallel, pipeline and sequential technique
CN109033847B (zh) Aes加密运算单元、aes加密电路及其加密方法
CN109033893B (zh) 基于合成矩阵的aes加密单元、aes加密电路及其加密方法
CN103731257B (zh) 一种Piccolo加密算法硬件实现方法
CN108809627B (zh) 轮变换复用电路及aes解密电路
CN108566271B (zh) 复用轮变换电路、aes加密电路及其加密方法
Standaert et al. Efficient FPGA implementations of block ciphers KHAZAD and MISTY1
Sireesha et al. A novel approach of area optimized and pipelined FPGA implementation of AES encryption and decryption
CN104753662A (zh) 基于aes算法的加密密钥流产生方法
Li et al. Implementation of PRINCE with resource-efficient structures based on FPGAs
CN108989018B (zh) 一种aes加密单元、aes加密电路及加密方法
CN109033023B (zh) 一种普通轮变换运算单元、普通轮变换电路及aes加密电路
CN108964875B (zh) 普通轮变换运算单元、普通轮变换电路及aes解密电路
RU2738321C1 (ru) Способ криптографического преобразования и устройство для его осуществления
Nadjia et al. Efficient implementation of AES S-box in LUT-6 FPGAs
Shastry et al. Rolled architecture based implementation of AES using T-Box

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant