公开/公告号CN101945383A
专利类型发明专利
公开/公告日2011-01-12
原文格式PDF
申请/专利权人 苏州国芯科技有限公司;
申请/专利号CN201010272417.5
申请日2010-09-06
分类号H04W12/02(20090101);H04W84/12(20090101);
代理机构32103 苏州创元专利商标事务所有限公司;
代理人马明渡
地址 215011 江苏省苏州市高新区竹园路209号苏州创业园C2031室
入库时间 2023-12-18 01:22:20
法律状态公告日
法律状态信息
法律状态
2019-05-14
专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L9/06 变更前: 变更后: 申请日:20100906
专利权人的姓名或者名称、地址的变更
2013-09-25
授权
授权
2011-03-09
实质审查的生效 IPC(主分类):H04W12/02 申请日:20100906
实质审查的生效
2011-01-12
公开
公开
技术领域
本发明涉及分组加解密算法的硬件实现方法,尤其涉及一种用于无线局域网的加解密方法。
背景技术
随着无线局域网的广泛应用,其安全性问题越来越突出。对于无线局域网来说,在安全性方面非常脆弱,这是由于传输速率能达到11M,而且覆盖范围达100米。正是其传输速度快,覆盖范围广,才使它在安全方面非常脆弱。因为数据在传输的过程中都曝露在空中,很容易被别有用心的人截取数据包。
目前,在现有算法的实现方式中,大多还是采用软件方法实现,其实现方式简单方便,但其运算速度却不是太理想,很难满足实时的需要,而硬件实现的方式存在硬件开销大,成本过高,电路实现面积和功耗大等不足,因此对于在一些面积要求高的环境,如智能卡的应用等,现有的加解密方式的使用则受到很大的制约。
发明内容
本发明目的是提供一种用于无线局域网的面积紧凑的算法硬件实现方法,该方法硬件实现起来面积紧凑,在保证算法实现效率的前提下大大减少了算法硬件实现电路面积,从而扩大了使用范围。
为达到上述目的,本发明采用的技术方案是:
一种用于无线局域网的面积紧凑的算法硬件实现方法,包括以下步骤:
加密过程:
步骤一、将明文编码以字为单位分为4个编码字,主密钥编码以字为单位分为4个密钥字;
步骤二、将主密钥中第1位密钥字至第3位密钥字与一常量异或运算后,再作可逆变换,再与第0位密钥字异或运算生成一个字长的第一轮密钥,再将第1位密钥字至第3位密钥字前移至第0位至第2位密钥字的位置,将所述第一轮密钥移至第3位密钥字的位置;
步骤三、将所述第一轮密钥与明文编码第1位编码字至第3位编码字异或运算后,再作可逆变换,再与第0位编码字异或运算生成一个字长的第一轮密文字,再将第1位编码字至第3位编码字前移至第0位至第2位编码字的位置,将所述第一轮密文字移至第3位编码字的位置;
步骤四、重复加密过程的步骤二生成31个密钥,依次按顺序使用第2轮密钥至第32轮密钥重复步骤三进行31轮加密后,将第0位至第3位编码字作反序变换;
解密过程:
步骤一、将密文编码以字为单位分为4个密文字;
步骤二、将主密钥编码以字为单位分为4个密钥字;
步骤三、将主密钥中第1位密钥字至第3位密钥字与一常量先异或运算后,再作可逆变换,再与第0位密钥字异或运算生成一个字长的第1轮密钥,再将第1位密钥字至第3位密钥字前移至第0位至第2位密钥字的位置,将所述第一轮密钥移至第3位密钥字的位置;
步骤四、重复解密过程步骤三进行32轮后,分别生成32个密钥,该32个密钥通过Register File方式寄存;
步骤五、将所述第32轮密钥与密文编码第1位密文字至第3位密文字异或运算后,再作可逆变换,再与第0位密文字异或运算生成一个字长的第1轮密文字,再将第1位密文字至第3位密文字前移至第0位至第2位编码字的位置,将所述第一轮密文字移至第3位编码字的位置;
步骤六、依次按顺序使用第31轮密钥至第1轮密钥重复步骤五后,将第0位至第3位密文字作反序变换,获得明文编码。
上述技术方案中的有关内容解释如下:
1.上述方案中,所述加密过程中可逆变换为:T为加密过程中可逆变换,其中T为Z322到Z322的一个可逆变换,由非线性变换τ和线性变化L复合而成,
即T(.)=L(τ(.))。其中:非线性变换τ:它是由4个并行的S盒构成。设输入为A=(a1,a2,a3,a4)∈(Z82)4,输出为B=(b1,b2,b3,b4)∈(Z82)4,则有:
(b1,b2,b3,b4)=τ(A)=(Sbox(a1),Sbox(a2),Sbox(a3),Sbox(a4))
线性变换L:非线性变换τ的输出也即为线性变换L的输入。设输入为B∈Z322,则有:
其中<<i为32比特循环左移i位。
2.上述方案中,所述解密过程中可逆变换;T′为加密过程中可逆变换,T′为Z322到Z322的一个可逆变换,由非线性变换τ和线性变化L′复合而成,即T(.)=L′(τ(.))。其中:非线性变换τ:它是由4个并行的S盒构成。设输入为A=(a1,a2,a3,a4)∈(Z82)4,输出为B=(b1,b2,b3,b4)∈(Z82)4,则有:
(b1,b2,b3,b4)=τ(A)=(Sbox(a1),Sbox(a2),Sbox(a3),Sbox(a4))
线性变换L′:非线性变换τ的输出也即为线性变换L′的输入。设输入为B∈Z322,则有:
系统参数FK的取值,采用16进制表示为:FK=(FK0,FK1,FK2,FK3),其中FK0=(A3B1BAC6),FK1=(56AA3350),FK2=(677D9197),FK3=(B27022DC)固定参数CK=(CK0,CK1,...,CK31)为32个固定参数。
由于上述技术方案运用,本发明与现有技术相比具有下列优点和效果:
(1)本发明算法的设计简洁,加解密方式相同,密钥扩展方式和加解密方式类似,加解密中和密钥扩展中的S盒也相同,该算法实现时硬件的利用率更高,且有利于整个算法在更小的电路面积上实现;其次,安全性高,对于我国的信息安全有更加可靠的保证。
(2)本发明具有硬件实现面积小,通过采用Register File的方式寄存由128比特主密钥产生的32轮的子密钥,这比用寄存器存储所有32轮的子密钥的方式大大减小了硬件电路实现面积,而在加解密电路中定义了4个32比特的寄存器,采用移位的方式获取每一轮产生的密文,从而又极大的简化了硬件电路实现面积,最后通过复用加解密电路和密钥扩展电路中都使用的S盒以及移位和异或运算,进一步降低了电路实现面积。
(3)电路实现灵活方便。通过在加解密电路中使用移位的方式,使得电路相当容易实现,而且通过定义一个32比特的线网wire类型E,从而可以把每一轮的子密钥输出到外部,这既有利于电路的验证,也方便了用户的使用。
(4)适用面更广。通过对算法的硬件电路的简化和面积的优化,从而使得算法能适用于对面积要求高的应用领域,从而使得其的使用范围扩大了,能适用不同的应用环境。
附图说明
附图1为本发明整体电路结构示意图;
附图2为本发明密钥扩展电路内部框架示意图;
附图3为本发明加解密电路整体框架示意图;
附图4为本发明加解密电路内部框架示意图。
具体实施方式
下面结合附图及实施例对本发明作进一步描述:
实施例:一种用于无线局域网的面积紧凑的算法硬件实现方法,包括以下步骤:
加密过程:
步骤一、将明文编码以字为单位分为4个编码字,主密钥编码以字为单位分为4个密钥字。
步骤二、将主密钥中第1位密钥字至第3位密钥字与一常量异或运算后,再作可逆变换,再与第0位密钥字异或运算生成一个字长的第一轮密钥,再将第1位密钥字至第3位密钥字前移至第0位至第2位密钥字的位置,将所述第一轮密钥移至第3位密钥字的位置。
步骤三、将所述第一轮密钥与明文编码第1位编码字至第3位编码字异或运算后,再作可逆变换,再与第0位编码字异或运算生成一个字长的第一轮密文字,再将第1位编码字至第3位编码字前移至第0位至第2位编码字的位置,将所述第一轮密文字移至第3位编码字的位置。
步骤四、重复加密过程的步骤二生成31个密钥,依次按顺序使用第2轮密钥至第32轮密钥重复步骤三进行31轮加密后,将第0位至第3位编码字作反序变换。
解密过程:
步骤一、将密文编码以字为单位分为4个密文字。
步骤二、将主密钥编码以字为单位分为4个密钥字。
步骤三、将主密钥中第1位密钥字至第3位密钥字与一常量先异或运算后,再作可逆变换,再与第0位密钥字异或运算生成一个字长的第1轮密钥,再将第1位密钥字至第3位密钥字前移至第0位至第2位密钥字的位置,将所述第一轮密钥移至第3位密钥字的位置。
步骤四、重复解密过程步骤三进行32轮后,分别生成32个密钥,该32个密钥通过Register File方式寄存;RegisterFile的具体的接口如下:
RF32*32ram0_sddc(
.Q (ram0_data_rd_raw[31:0]),
.Clk (clk),
.CEN(~crypt),
.AEN(ram0_rw_b),
.A (ram0_addr[8:4]),
.D (ram0_data_wr[31:0])
)
这个RegisterFile的大小为宽度为32比特,长度也为32比特,而ram0_data_rd_raw[31:0]即为解密时从RegisterFile中读出相对应地址的值,clk即为系统时钟信号,CEN为RegisterFile的使能信号,该信号定义为解密时有效,AEN为读写信号,该信号定义为高电平有效,其值为密钥准备好的指示信号key_ready,ram0_addr[8:4]为读取RegisterFile中数据的地址,定义为round,每一个时钟周期,round值加1,直到round为32停止。ram0_data_wr[31:0]为往RegisterFile中相对应地址写进去的数据,也即每轮的子密钥,例如:在解密过程中,首先必须准备好32轮的子密钥,32轮的子密钥是由密钥生成算法生成的,每一个时钟周期生成一轮的子密钥,第一轮时生成rk1,此时轮数为1,也即在这个时钟周期内把子密钥rk1写进RegisterFile中地址为0的地方,第二个时钟周期把子密钥rk2写进地址为1的地方,...,第三十二个时钟周期把子密钥rk32写进RegisterFile中地址为31的地方,产生完全部32轮子密钥之前,key_ready信号为0,即ram0_rw_b为0,也即RegisterFile是处于写状态中,而所有32轮子密钥都生成好而且全部写进RegisterFile后之后,key_ready信号为1,此时RegisterFile处于读状态,此时ram0_addr[8:4]的值定义为(31-round),解密时第一个时钟周期,也即round为0,此时从RegisterFile中读出地址为(31-0)=31的值,即读出子密钥rk32,ram0_data_rd_raw[31:0]即为rk32,解密时第二个时钟周期,也即round为1,此时从RegisterFile中读出地址为(31-1)=30的值,即读出子密钥rk31,ram0_data_rd_raw[31:0]即为rk31,...,解密时第三十二个时钟周期,也即round为31,此时从RegisterFile中读出地址为(31-31)=0的值,即读出子密钥rk1,ram0_data_rd_raw[31:0]即为rk1用于解密,从而完成解密过程。
步骤五、将所述第32轮密钥与第1位密文字至第3位密文字异或运算后,再作可逆变换,再与第0位密文字异或运算生成一个字长的第1轮密文字,再将第1位密文字至第3位密文字前移至第0位至第2位编码字的位置,将所述第一轮密文字移至第3位编码字的位置。
步骤六、依次按顺序使用第31轮密钥至第1轮密钥重复步骤五后,将第0位至第3位密文字作反序变换,获得明文编码。
本实施例上述内容解释如下。
附图1中各信号的功能描述如下:
输入信号:
clk:系统时钟输入,
rst:复位信号,低电平有效,
crypt:加解密模式,0为解密,1为加密,
key[127:0]:算法的主密钥,位宽为128比特,
new_key:更新主密钥指示信号,
sms4_in[127:0]:明文输入,位宽为128比特。
输出信号:
sms4_out[127:0]:密文输出,位宽为128比特,
cryptdone:加解密结束指示信号,
roundcipher[31:0]:轮密文,位宽为32比特。
内部信号:
round[5:0]:轮选择控制信号,位宽为6比特,
roundkey[31:0]:轮密钥,位宽为32比特。
加密密钥长度为128比特,表示为MK=(MK0,MK1,MK2,MK3),其中MKi(i=0,1,2,3)为字,轮密钥表示为(rk0,rk1,...,rk31),其中rki(i=0,1,...,31)为字。轮密钥由加密密钥生成。FK=(FK0,FK1,FK2,FK3)为系统参数,CK=(CK0,CK1,...,CK31)为固定参数,用于密钥扩展算法,其中FKi(i=0,1,2,3),CKi(i=0,1,...,31)为字。本算法采用非线性迭代结构,以字为单位进行加密运算,称一次迭代运算为一轮变换.一共有32轮迭代变换。设输入为(X0,X1,X2,X3)∈(Z322)4,轮密钥为rk∈Z322,则轮函数F为:
所述加密过程中可逆变换为:T为加密过程中可逆变换,其中T为Z322到Z322的一个可逆变换,由非线性变换τ和线性变化L复合而成,Z322表示一个32维的空间,空间的元素为0或1两种,
即T(.)=L(τ(.))。其中:非线性变换τ:它是由4个并行的S盒构成。设输入为A=(a1,a2,a3,a4)∈(Z82)4,输出为B=(b1,b2,b3,b4)∈(Z82)4,则有:
(b1,b2,b3,b4)=τ(A)=(Sbox(a1),Sbox(a2),Sbox(a3),Sbox(a4))
线性变换L:非线性变换τ的输出也即为线性变换L的输入。设输入为B∈Z322,则有:
其中<<i为32比特循环左移i位。
定义反序变换R为:R(A0,A1,A2,A3)=(A3,A2,A1,A0),Ai∈Z322,i=0,1,2,3。设明文输入为(X0,X1,X2,X3)∈(Z322)4,密文输出为(Y0,Y1,Y2,Y3)∈(Z322)4,轮密钥为rki∈Z322,i=0,1,...,31。则本算法的加密变换为:对于i=0,1,...,31有
(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32)
算法的解密变换与加密变换结构相同,不同的仅是轮密钥的使用顺序相反。加密密钥:MK=(MK0,MK1,MK2,MK3),MKi∈Z322,i=0,1,2,3令Ki∈Z322,i=0,1,...,35,轮密钥为rki∈Z322,i=0,1,...,31,则密钥生成方法为:对i=0,1,...,31,而所述解密过程中可逆变换;T′为加密过程中可逆变换,T′为Z322到Z322的一个可逆变换,由非线性变换τ和线性变化L′复合而成,即T(.)=L′(τ(.))。其中:非线性变换τ:它是由4个并行的S盒构成。设输入为A=(a1,a2,a3,a4)∈(Z82)4,输出为B=(b1,b2,b3,b4)∈(Z82)4,则有:
(b1,b2,b3,b4)=τ(A)=(Sbox(a1),Sbox(a2),Sbox(a3),Sbox(a4))
线性变换L′:非线性变换τ的输出也即为线性变换L′的输入。设输入为B∈Z322,则有:
系统参数FK的取值,采用16进制表示为:FK=(FK0,FK1,FK2,FK3),其中FK0=(A3B1BAC6),FK1=(56AA3350),FK2=(677D9197),FK3=(B27022DC)固定参数CK=(CK0,CK1,...,CK31)为32个固定参数。
本发明述面积紧凑型算法实现电路包括密钥扩展电路,加解密电路和轮控制电路。所述密钥扩展电路是指用128比特的主密钥产生算法中32轮加解密所需的子密钥的电路,其中每一轮子密钥长度为32比特。所述加解密电路是指128比特明文和由密钥扩展电路产生的32轮子密钥经过算法32轮的加解密过程得到128比特密文的电路。所述轮控制电路是指选择和控制密钥扩展电路以及加解密电路中的轮数。
所述的密钥扩展电路,采用Register File方式寄存由128比特的主密钥产生的32轮的子密钥,其中每一轮的子密钥长为32比特,共产生32×32=1024比特的子密钥,现可用一个words为32,words width为32的Register File来寄存。在加密过程中,有密钥扩展算法产生每一轮的32比特的子密钥,依次存入Register File中,而在解密过程中以相反的顺序依次从Register File中取出子密钥送入解密算法进行密文的解密。
所述的加解密电路,定义4个32比特的寄存器A,B,C,D,依次用来寄存每连续的4轮所产生的密文,其中寄存器A寄存每连续4轮的第一轮所产生的32比特密文,寄存器B寄存每连续4轮的第二轮所产生的32比特密文,寄存器C寄存每连续4轮的第三轮所产生的32比特密文,寄存器D寄存每连续4轮的第四轮所产生的32比特密文。再定义一个32比特的线网wire类型E,用来表示由前面连续四轮后得到的第五轮密文,因此当加解密不是第1轮时,可采用{A,B,C,D}<={B,C,D,E}方式实现从第2轮到第32轮的加解密算法,而当加解密为第1轮时直接有{A,B,C,D}<={128比特主密钥}。
所述的面积紧凑型算法实现电路,通过复用加解密算法和密钥扩展算法中共同使用的S盒以及移位和异或运算,其中S盒的实现采用查找表的方式实现,从而保证加解密的效率。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
机译: 具有VPN(虚拟专用网)功能和WLAN(无线局域网)功能的混合网络设备-该设备通过在MAC CHIP上集成VPN硬件加速器并实现其方法来构成,该方法使用VPN算法和WLAN算法
机译: 通过创建单独的算法和硬件模块(其中算法模块控制硬件模块)来模拟集成电路的方法,其中由特定的硬件体系结构实现给定算法
机译: 在数字硬件中有效实现安全哈希算法(SHA-1)的系统和方法,使用最少的硬件资源即可实现最佳计算速度