欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 基于干扰轮与外部编码的SM4白盒实现方法独创技术11978字

基于干扰轮与外部编码的SM4白盒实现方法

2021-02-07 17:38:02

基于干扰轮与外部编码的SM4白盒实现方法

  技术领域

  本发明涉及信息安全技术领域,具体涉及一种基于动态等效轮的白盒SM4加密算法方案。

  背景技术

  SM4加密算法是我国公布的分组密码标准,现已在全国各领域广泛使用。

  白盒加密是一种能抵御白盒攻击的加密算法技术。2002年,Chow等人首次提出了白盒攻击的概念,肖雅莹等人根据SM4分组密码算法,设计出了SM4的白盒实现。

  侧信道攻击是针对加密电子设备在运行过程中的时间消耗、功率消耗或电磁辐射之类的侧信道信息泄露而对加密设备进行攻击。侧信道攻击包括差分故障攻击(DFA)以及差分计算分析(DCA)。DCA和DFA攻击到目前为止已经破解了学术界提出的众多白盒实现。

  肖雅莹等人的方案主要存在以下不足:

  1、方案中随机矩阵Q在生成中很难保证不存在汉明重量为1的行向量,而此类向量不能抵抗DCA攻击。

  2、方案中白盒实现的结构固定,攻击者可通过最后2轮构造差分错误攻击关系,提取出最后一轮T表的轮密钥,进而恢复所有密钥。

  3、方案中的输入编码和输出编码只应用与内部编码,没有增加外部编码保护。

  发明内容

  本发明的主要目的在于克服现有技术的不足,提出一种基于干扰轮与外部编码的SM4白盒实现方法,本发明通过增强线性变换矩阵密度,在程序末轮增加干扰轮,增加随机数干扰等方式和增加外部编码的方式来抵抗DCA,DFA攻击,以达到增强SM4白盒实现的安全性。

  为了达到上述目的,本发明采用以下技术方案:

  本发明提供了的一种基于干扰轮与外部编码的SM4白盒实现方法,包括以下步骤:

  随机生成可逆矩阵以及向量,所述可逆矩阵中所有行向量中不存在汉明重量为1的值,并添加干扰轮,根据得到的矩阵与向量计算复合仿射变换,对复合仿射变换得到的矩阵及常量进行存储;

  输入编码,将内部输入编码与外部输入编码结合,抵消F编码的影响并加入内部编码P;内嵌轮密钥与T表构造,通过标准SM4密码算法生成轮密钥,将密钥嵌入到加密的过程中,构造查找表;

  移位操作与计算,进行移位操作与计算;由该步骤经多轮计算后,得到带编码的密文;

  输出编码,将内部输出编码与外部输出编码结合,在抵消内部编码的同时加入外部编码G;

  R反序操作,通过R反序操作得到被G编码的密文。

  作为优选的技术方案,所述可逆矩阵为32阶可逆矩阵,具体为:

  P0,P1,…,P35+λ,Q0,Q1,…,Q31+λ,E0,E1,…,E31+λ,F0,F1,F2,F3,G0,G1,G2,G3

  以上皆为GF(2)上的32阶的可逆矩阵;

  所述向量为32×1随机向量,具体为:

  p0,p1,…,p35+λ,q1,q2,…,q31+λ,e1,e2,…,e31+λ,nk0,nk1,...,nkλ/2

  以上皆为GF(2)上的32×1的随机向量;其中λ为添加干扰轮数,

  

  作为优选的技术方案,所述计算复合仿射变换具体为:

  Dr=Pr+4·Qr-1,dr=Pr+4·Qr-1·qr

  Cr=Pr+4·Pr-1,cr=Pr+4·Pr-1·pr+pr+4

  

  其中r=0,1,...,31+λ,j=0,1,2,Dr,Cr,Mr,j为GF(2)上的32阶矩阵,dr,cr,mr,j为GF(2)上的32×1的向量。

  作为优选的技术方案,所述对复合仿射变换的结果进行存储具体为存储以下矩阵与常量:

  Dr,dr,Cr,cr,Mr,j,Ik,ik,Ok,ok,nkt,r∈0,1,2,...,31+λ,j∈0,1,2,t∈0,1,...λ/2,k=0,1,2,3。

  作为优选的技术方案,所述输入编码具体为:

  内部输入编码与外部输入编码结合,具体为:

  Ik=Pk·Fk-1,ik=pk,k=0,1,2,3

  其中,Ik为GF(2)上的32阶矩阵,ik为GF(2)上的32×1的向量,再使用Ik对输入Xk编码,具体为:

  X'k=Ik·Xk+ik,k=0,1,2,3

  其中,X'k为32×1的向量。

  作为优选的技术方案,所述内嵌轮密钥与T表构造具体为:

  预先通过标准SM4密码算法生成32轮的轮密钥rkr,将rkr分割为长度为8比特的四段rkr,j,在SM4算法中,变换函数T为:

  

  其中,Xr+1,Xr+2,Xr+3为32×1的向量,参与计算的轮密钥keyr的值分为正常轮和干扰轮的状态,干扰轮成对出现;

  遍历8比特输入值x,存储32比特输出值y,构造8进32出的查找表

  Tabler,j:GF(28)→GF(232)

  

  其中,Rr,0||Rr,1||Rr,2||Rr,3=Qr·L,Rr,j为32×8矩阵,Tabler,j表示8进32出的查找表。

  作为优选的技术方案,所述轮密钥keyr具体如下:

  

  

  其中aj,j∈[0,3],每个长度为8比特,

  作为优选的技术方案,所述移位操作与计算具体为:

  在第r轮,计算之前先进行移位操作ROTr:

  

  计算:

  

  其中Mr,j和mr,j为所述复合仿射变换的结果;

  记yr=yr,0||yr,1||yr,2||yr,3,由每个yr,j分别查询Tabler,j(yr,j),j=0,1,2,3

  zr,j=Tabler,j(yr,j),j=0,1,2,3

  其中,计算所得zr,j为32比特数值;

  计算:

  

  其中Dr,dr,Cr,cr为上述复合仿射变换的结果;

  由移位操作与计算步骤经32+λ轮计算后,可得带编码的密文。

  作为优选的技术方案,所述输出编码具体为:

  内部输出编码与外部输出编码结合,具体为:

  

  其中,计算得到的Ok为GF(2)上的32阶矩阵,ok为GF(2)上的32×1的向量,再对带内部编码的Yk'编码,具体方式为:

  Yk=Ok·Y′k+ok,k=0,1,2,3

  其中得到的Yk为32×1的向量。

  本发明与现有技术相比,具有如下优点和有益效果:

  1、本发明基于可变轮数的思想,使得加密过程中,轮与轮之间的界限变得模糊,使得攻击难度加大,提升了加密过程的安全性。

  2、本发明方案增加了外部编码,能有效抵抗DFA和DCA攻击。

  3、本发明对矩阵Q提出了行向量汉明重量大于1的要求,增强了抵抗DCA攻击的能力。

  4、本发明在白盒实现的末轮增加若干个成对出现的干扰轮,干扰轮中隐藏的密钥为假密钥nk,攻击者获得该密钥后不能还原真实密钥,增强了抵抗DFA攻击的能力。

  附图说明

  图1是本发明白盒SM4实现方法的流程图;

  图2是本发明白盒SM4实现方法轮函数的示意图;

  图3是本发明动态等效轮T表的构造图;

  图4是本发明ROTr移位方法的示意图。

  具体实施方式

  下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

  实施例

  本发明提出的基于干扰轮与外部编码的SM4白盒实现方法通过增强线性变换矩阵密度,在程序末轮增加干扰轮,增加随机数干扰等方式和增加外部编码的方式来抵抗DCA,DFA攻击,以达到增强SM4白盒实现的安全性。本实施例基于干扰轮与外部编码的SM4白盒实现方法,如图1所示,包括以下步骤:

  S1、随机生成可逆矩阵以及向量,所述可逆矩阵中所有行向量中不存在汉明重量为1的值,并添加干扰轮:

  P0,P1,…,P35+λ,Q0,Q1,…,Q31+λ,E0,E1,…,E31+λ,F0,F1,F2,F3,G0,G1,G2,G3

  以上皆为GF(2)上的32阶的可逆矩阵;

  及以下32×1随机向量:

  p0,p1,…,p35+λ,q1,q2,…,q31+λ,e1,e2,…,e31+λ,nk0,nk1,...,nkλ/2

  以上皆为GF(2)上的32×1的随机向量;

  其中干扰轮数λ为添加的干扰轮数,

  根据上述生成的矩阵及其向量计算以下复合仿射变换:

  Dr=Pr+4·Qr-1,dr=Pr+4·Qr-1·qr

  Cr=Pr+4·Pr-1,cr=Pr+4·Pr-1·pr+pr+4

  

  Ik=Pk·Fk-1,ik=pk

  

  其中r=0,1,...,31+λ,j=0,1,2,k=0,1,2,3,Dr,Cr,Mr,j为GF(2)上的32阶矩阵,dr,cr,mr,j为GF(2)上的32×1的向量。

  对得到的计算结果,将以下矩阵及常量进行存储:

  Dr,dr,Cr,cr,Mr,j,Ik,ik,Ok,ok,nkt,r∈0,1,2,...,31+λ,j∈0,1,2,t∈0,1,...λ/2,k=0,1,2,3。

  S2、输入编码,将内部输入编码与外部输入编码结合;假设128比特的输入(T0,T1,T2,T3)已经被输入编码F编码,Xi=Fi·Xi,i=0,1,2,3。所以对于输入编码,首先需要抵消F的影响,再加入内部编码P,P和F-1可组合成Ik,具体为:

  Ik=Pk·Fk-1,ik=pk,k=0,1,2,3

  再使用Ik对输入Xk编码,得到X'k,具体为:

  X'k=Ik·Xk+ik,k=0,1,2,3。

  S3、内嵌轮秘钥与T表构造,通过内嵌轮密钥,将密钥嵌入到加密的过程中,从而不需要在加密前输入加密密钥;T表构造如图3所示。

  预先通过标准SM4密码算法生成32比特的轮密钥rkr,将rkr分割为长度为8比特的四段rkr,j。在SM4算法中,变换函数T如下:

  

  其中,Xr+1,Xr+2,Xr+3为32×1的向量,keyr的值分为正常轮和干扰轮的状态,干扰轮成对出现,具体如下表示:

  

  

  其中aj,j∈[0,3],每个长度为8比特,

  下面构造8进32出的查找表(遍历8比特输入值x,存储32比特输出值y)

  Tabler,j:GF(28)→GF(232)

  

  其中,Rr,0||Rr,1||Rr,2||Rr,3=Qr·L,Rr,j为32×8矩阵,Tabler,j表示8进32出的查找表

  S4、移位操作与计算,在第r轮,由输入(X′r,X′r+1,X′r+2,X′r+3)计算X′r+4的过程如下:

  由于在第33轮(x=32)时,添加的为干扰轮,所以在计算之前,需要进行移位操作ROTr,如图4所示。

  移位操作(ROTr):

  

  计算,如图2所示,具体如下:

  

  其中Mr,j和mr,j为所述复合仿射变换的结果;

  记yr=yr,0||yr,1||yr,2||yr,3,由每个yr,j分别查询Tabler,j(yr,j),j=0,1,2,3

  zr,j=Tabler,j(yr,j),j=0,1,2,3

  计算,具体如下:

  

  其中Dr,dr,Cr,cr为上述复合仿射变换的结果;

  步骤S4经32+λ轮计算后,可得带编码的密文(Y0',Y1',Y2',Y3')。

  S5、输出编码,将内部输出编码与外部输出编码结合;在抵消内部编码的同时加入外部编码G,具体为:

  将内部输出编码与外部输出编码结合,具体为:

  

  其中,计算得到的Ok为GF(2)上的32阶矩阵,ok为GF(2)上的32×1的向量,再对带内部编码的Yk'编码,具体方式为:

  Yk=Ok·Y′k+ok,k=0,1,2,3

  其中得到的Yk为32×1的向量。

  S6、R反序操作,通过R反序操作后得到被G编码的密文(Y3,Y2,Y1,Y0),G的编码在使用过程中抵消。

  还需要说明的是,在本说明书中,诸如术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

  对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

《基于干扰轮与外部编码的SM4白盒实现方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)