基于分组密码VHF和CTR模式的轻量级流密码技术CVHF的制作方法

文档序号:14720142发布日期:2018-06-17 12:30阅读:368来源:国知局
本发明是保密通信领域的一种轻量级流密码技术,主要用于无线通信中低成本嵌入式移动终端的安全保密。二、
背景技术
:随着无线网络技术的发展,信息深入到我们生活的各个方面。对于资源受限的无线终端,由于计算能力差,存储空间小,能量供应弱,普通密码技术难以适用这种资源受限的环境需求,这就需要轻量级密码,以满足软硬件、计算能力和能耗等资源受限终端的需求。轻量级流密码主要有Grain-128、WG-7和A2U2等。Grain-128无法抵抗相关密钥攻击,且易受线性攻击。对于WG-7,构造线性区分器能区分密钥流和随机序列,且代数攻击对其有效。A2U2硬件实现代价很小,但有个大的缺点,软件效率很低,且密钥短,易受猜测-确定攻击。对于本发明中的轻量级流密码CVHF,其软硬件效率都高于Grain-128和WG-7。三、技术实现要素:【发明目的】为了弥补现有轻量级流密码的不足,本发明提供了一种轻量级流密码CVHF,以解决现有轻量级流密码的综合效率问题,提高无线通信安全中低成本嵌入式移动终端的效用,并提高了安全性。【技术方案】本发明所述的轻量级流密码CVHF基于CTR(计数器)模式和分组密码VHF。I.VHF加密方案VHF采用Feistel结构,如图1所示,分组长度为128-bit,支持长度为80、128比特的密钥,相应的迭代轮数分别为r=14、16轮。VHF有3个参数:128bit明文P,密钥K,128bit密文C。VHF的加密过程用C=VHFK(P)表示,包括以下步骤。(1)加密变换表S盒产生。S盒采用伪随机变换的方法产生。先计算T(i)=「|256sini|,其中「」表示向下取整运算;为了产生不重复的256个字节,i的取值由1到30000,遇到重复的排除,直到产生全部不重复的256个字节为止。加密变换表S[256]是256个字节的一个伪随机排列,由T中字节轮换得到:S[T(j)]=T(j+1),S[T(255)]=T(0);其中0≤j≤254。(2)密钥扩展。VHF支持长度为80、128bits的密钥,相应的迭代轮数分别为r=14、16轮,分别扩展为64*14、64*16bits的密钥。通过递推进行密钥扩展,将L字节的密钥K扩展成8r字节。扩展密钥Key=K0|K1|...|Ki|...|Kr-1=k0|k1|...|kj|...|k8r-1,每个Ki为8字节,0≤i≤r-1;每个kj为1字节,0≤j≤8r-1。扩展密钥Key的前L字节就是密钥K:K=k0|k1|...|kL-1,L≤j≤8r-1时,扩展密钥Key中的ki由ki-L和ki-1两个字节递推得到,即(3)迭代加密。VHF先将128bits的初始明文P分成左右两半L0|R0,然后采用Feistel结构进行r轮迭代加密。每轮加密过程为:Li=Ri-1;其中轮函数F采用双伪随机变换,即行伪随机变换+斜对角线为随机变换。每轮迭代加密时,先将右半部分Ri-1与该轮的子密钥Ki-1进行异或:其中1≤i≤r。然后对数据进行行伪随机变换,即对数据的每个字节用S盒进行伪随机变换:Mi(j)=S[Ci-1(j)],其中Mi(j)表示Mi的第j个字节,0≤j≤7。再把64bit数据Mi排成8*8的方阵,对Mi的每个斜对角线用S盒进行伪随机变换,如图2所示:Pi(0)=S{[Mi(0)&128|[Mi(1)&64]|[Mi(2)&32]|[Mi(3)&16]|[Mi(4)&8]|[Mi(5)&4]|[Mi(6)&2]|[Mi(7)&1]}Pi(1)=S{[Mi(1)&128|[Mi(2)&64]|[Mi(3)&32]|[Mi(4)&16]|[Mi(5)&8]|[Mi(6)&4]|[Mi(7)&2]|[Mi(8)&1]}Pi(2)=S{[Mi(2)&128|[Mi(3)&64]|[Mi(4)&32]|[Mi(5)&16]|[Mi(6)&8]|[Mi(7)&4]|[Mi(0)&2]|[Mi(1)&1]}Pi(3)=S{[Mi(3)&128|[Mi(4)&64]|[Mi(5)&32]|[Mi(6)&16]|[Mi(7)&8]|[Mi(0)&4]|[Mi(1)&2]|[Mi(2)&1]}Pi(4)=S{[Mi(4)&128|[Mi(5)&64]|[Mi(6)&32]|[Mi(7)&16]|[Mi(0)&8]|[Mi(1)&4]|[Mi(2)&2]|[Mi(3)&1]}Pi(5)=S{[Mi(5)&128|[Mi(6)&64]|[Mi(7)&32]|[Mi(0)&16]|[Mi(1)&8]|[Mi(2)&4]|[Mi(3)&2]|[Mi(4)&1]}Pi(6)=S{[Mi(6)&128|[Mi(7)&64]|[Mi(0)&32]|[Mi(1)&16]|[Mi(2)&8]|[Mi(3)&4]|[Mi(4)&2]|[Mi(5)&1]}Pi(7)=S{[Mi(7)&128|[Mi(0)&64]|[Mi(1)&32]|[Mi(2)&16]|[Mi(3)&8]|[Mi(4)&4]|[Mi(5)&2]|[Mi(6)&1]}再将上述输出Pi与Li-1进行异或:Li=Ri-1。最后1轮加密后的输出Lr|Rr即为128bits密文C。II.CVHF加解密方案保密通信时,CVHF的加解密过程有4个参数:明文X,密钥K,计数器ctr,密文Y。ctr长度为32bit,功能是抗重放攻击。对于长度为len比特的明文P,CVHF基于分组密码VHF,采用CTR模式产生m=「(len-1)/128」+1组密钥流KSi,其中0≤i≤m-1,每组密钥流的长度为128bit,如图3所示,即Fori=0tom-1{KSi=VHFK(ctr+i);}其中,VHFK(P)表示分组密码VHF采用密钥K对数据P进行加密。则CVHF的加密方案为:密文如图3所示;其中MSBlen(KS)表示截取全部密钥流KS的前len比特。CVHF的解密方案为:明文【有益效果】CVHF对当前已知的攻击方法达到足够的免疫力并且在硬件实现和软件效率上呈现高效性。与现有技术相比,CVHF的有益效果表现在以下几方面。(1)软件效率:在Intel(R)、Core(TM)、CPU为i7-3610QM、主频2.3GHz、内存8GB、C语言编程环境下测试,密钥长度为128-bit的CVHF、Grain-128、密钥长度为80-bit的WG-7和密钥长度为61-bit的A2U2的效率如表1所示。由此可见,CVHF的软件效率优于其它轻量级流密码和轻量级分组密码。表1轻量级密码软件效率(Mb/s)硬件代价(GE数)CVHF52.081202Grain-1280.611458WG-713.432194A2U20.31254PRESENT0.981570MIBS33.261400(2)硬件实现:CVHF、Grain-128、WG-7和A2U2的硬件实现所需要的门电路数如表1所示。因此可见,CVHF的软硬件效率都高于轻量级流密码Grain-128和WG-7以及轻量级分组密码PRESENT和MIBS;CVHF的硬件实现代价高于A2U2,但A2U2有个大的缺点,软件效率很低,且密钥短,只有61bit,易受猜测-确定攻击。特别地,CVHF采用的分组密码VHF的每轮迭代能八核并行,CTR模式也是个并行模式,适合硬件和多核软件实现,软硬件执行效率高。(3)安全性:通过差分分析、线性分析和不可能差分分析对CVHF进行了安全性验证。a)差分分析:通过计算可得CVHF函数的S盒的最大差分概率是2-3.415,通过程序计算CVHF函数前10轮的活动S盒的个数DS,如表2所示。由此可得CVHF函数的7轮最大差分概率为当迭代轮数大7轮时,找不到一个有效的差分特征进行分析,所以完整轮数的CVHF函数可以抵抗差分分析。表2轮数12345678910DS071421283542495663b)线性分析:通过计算可得CVHF函数的S盒的最大线性概率是2-2.83,通过程序计算CVHF函数前10轮的活动S盒的个数LS,如表3所示。由此可得CVHF函数的7轮最大线性概率为当迭代轮数大于7轮时,找不到一个有效的线性特征进行分析,所以完整轮数的CVHF函数可以抵抗线性分析。表3轮数12345678910LS081624324048566472c)不可能差分分析:J.Kim等发明了一种矩算法μ-method用来对分组密码的结构进行不可能差分分析,该方法能够找到不同的不可能差分路径。采用此方法对CVHF进行不可能差分分析,得到最大轮数为6轮,找到了8条不可差分路径。式中:α∈GF(28)表示非零差分。由此可知,不可能差分分析对CVHF攻击无效。四、附图说明图1Feistel结构示意图图2P置换过程图3CVHF的加密过程说明:zi=ctr+i,0≤i≤m-1;EK(zi)表示分组密码VHF采用密钥K对数据zi进行加密;表示异或运算。五、具体实施方式下面结合附图对本发明进一步说明。I.VHF加密方案VHF采用Feistel结构,如图1所示,分组长度为128-bit,支持长度为80、128比特的密钥,相应的迭代轮数分别为r=14、16轮。VHF有3个参数:128bit明文P,密钥K,128bit密文C。VHF的加密过程用C=VHFK(P)表示,包括以下步骤。(1)加密变换表S盒产生。S盒采用伪随机变换的方法产生。先计算T(i)=「|256sini|,其中「」表示向下取整运算;为了产生不重复的256个字节,i的取值由1到30000,遇到重复的排除,直到产生全部不重复的256个字节为止。加密变换表S[256]是256个字节的一个伪随机排列,由T中字节轮换得到:S[T(j)]=T(j+1),S[T(255)]=T(0);其中0≤j≤254。(2)密钥扩展。VHF支持长度为80、128bits的密钥,相应的迭代轮数分别为r=14、16轮,分别扩展为64*14、64*16bits的密钥。通过递推进行密钥扩展,将L字节的密钥K扩展成8r字节。扩展密钥Key=K0|K1|...|Ki|...|Kr-1=k0|k1|...|kj|...|k8r-1,每个Ki为8字节,0≤i≤r-1;每个kj为1字节,0≤j≤8r-1。扩展密钥Key的前L字节就是密钥K:K=k0|k1|...|kL-1,L≤j≤8r-1时,扩展密钥Key中的ki由ki-L和ki-1两个字节递推得到,即(3)迭代加密。VHF先将128bits的初始明文P分成左右两半L0|R0,然后采用Feistel结构进行r轮迭代加密。每轮加密过程为:Li=Ri-1;其中轮函数F采用双伪随机变换,即行伪随机变换+斜对角线为随机变换。每轮迭代加密时,先将右半部分Ri-1与该轮的子密钥Ki-1进行异或:其中1≤i≤r。然后对数据进行行伪随机变换,即对数据的每个字节用S盒进行伪随机变换:Mi(j)=S[Ci-1(j)],其中Mi(j)表示Mi的第j个字节,0≤j≤7。再把64bit数据Mi排成8*8的方阵,对Mi的每个斜对角线用S盒进行伪随机变换,如图2所示:Pi(0)=S{[Mi(0)&128|[Mi(1)&64]|[Mi(2)&32]|[Mi(3)&16]|[Mi(4)&8]|[Mi(5)&4]|[Mi(6)&2]|[Mi(7)&1]}Pi(1)=S{[Mi(1)&128|[Mi(2)&64]|[Mi(3)&32]|[Mi(4)&16]|[Mi(5)&8]|[Mi(6)&4]|[Mi(7)&2]|[Mi(8)&1]}Pi(2)=S{[Mi(2)&128|[Mi(3)&64]|[Mi(4)&32]|[Mi(5)&16]|[Mi(6)&8]|[Mi(7)&4]|[Mi(0)&2]|[Mi(1)&1]}Pi(3)=S{[Mi(3)&128|[Mi(4)&64]|[Mi(5)&32]|[Mi(6)&16]|[Mi(7)&8]|[Mi(0)&4]|[Mi(1)&2]|[Mi(2)&1]}Pi(4)=S{[Mi(4)&128|[Mi(5)&64]|[Mi(6)&32]|[Mi(7)&16]|[Mi(0)&8]|[Mi(1)&4]|[Mi(2)&2]|[Mi(3)&1]}Pi(5)=S{[Mi(5)&128|[Mi(6)&64]|[Mi(7)&32]|[Mi(0)&16]|[Mi(1)&8]|[Mi(2)&4]|[Mi(3)&2]|[Mi(4)&1]}Pi(6)=S{[Mi(6)&128|[Mi(7)&64]|[Mi(0)&32]|[Mi(1)&16]|[Mi(2)&8]|[Mi(3)&4]|[Mi(4)&2]|[Mi(5)&1]}Pi(7)=S{[Mi(7)&128|[Mi(0)&64]|[Mi(1)&32]|[Mi(2)&16]|[Mi(3)&8]|[Mi(4)&4]|[Mi(5)&2]|[Mi(6)&1]}再将上述输出Pi与Li-1进行异或:Li=Ri-1。最后1轮加密后的输出Lr|Rr即为128bits密文C。II.CVHF加解密方案保密通信时,CVHY的加解密过程有4个参数:明文X,密钥K,计数器ctr,密文Y。ctr长度为32bit,功能是抗重放攻击。对于长度为len比特的明文P,CVHF基于分组密码VHF,采用CTR模式产生m=「(len-1)/128」+1组密钥流KSi,其中0≤i≤m-1,每组密钥流的长度为128bit,如图3所示,即Fori=0tom-1{KSi=VHFK(ctr+i);}其中,VHFK(P)表示分组密码VHF采用密钥K对数据P进行加密。则CVHF的加密方案为:密文如图3所示;其中MSBlen(KS)表示截取全部密钥流KS的前len比特。CVHF的解密方案为:明文当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1