[发明专利]一种标准密文输出格式的商密SM4算法的白盒软件实现方法有效
申请号: | 201611202361.X | 申请日: | 2016-12-23 |
公开(公告)号: | CN107070636B | 公开(公告)日: | 2019-12-13 |
发明(设计)人: | 周洁;白健;刘尚麟;安红章 | 申请(专利权)人: | 中国电子科技集团公司第三十研究所 |
主分类号: | H04L9/06 | 分类号: | H04L9/06;H04L9/08;H04L9/30;H04L29/06 |
代理公司: | 51214 成都九鼎天元知识产权代理有限公司 | 代理人: | 项霞 |
地址: | 610000 *** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 查找表 密钥 算法 运算 线性变换 白盒 混淆 输入输出变换 密钥隐藏 软件实现 输出变换 输出格式 中间数据 密文 三层 抵消 分析 复合 抵抗 合并 | ||
1.一种标准密文输出格式的商密SM4算法的白盒软件实现方法,其特征在于,包括如下步骤:
步骤一:产生一组128bit的字符串作为根密钥;
步骤二:将128bit的根密钥按照标准SM4密钥扩展算法扩展为32个32bit的轮密钥,设为rk0,rk1,...,rk31,分别用于第1轮到第32轮的计算,第33、34、35、36轮计算的密钥分别为r28,r29,r30,r31;
步骤三:随机生成420个8×8的可逆矩阵,分别记为Mi,i=1,...,420;
步骤四:定义四类矩阵,分别为P、Ei、Qj、Rk;令:
P=diag(P1,1,P1,2,P1,3,P1,4),
Ei=diag(Ei,1,Ei,2,Ei,3,Ei,4),(i=1、2、3......36);
Qj=diag(Qj,1,Qj,2,Qj,3,Qj,4),(j=1、2、3......36);
Rk=diag(Rk,1,Rk,2,Rk,3,Rk,4),(k=1、2、3......32);
其中P1,1=M1,P1,2=M2,P1,3=M3,P1,4=M4,Ei,l=M4(i+1)+l,Qj,l=M4(j+37)+l,Rk,l=M4(k+73)+l,i=1,...,36,j=1,...,36,k=1,...,32,l=1,...,4;
步骤五:产生复合线性变化Ai,j,i=1,...,36,j=1,2,3;
步骤六:构造第一个查找表,具体方法为:
步骤6.1:设在第i轮计算中,第一个查找表的输入为yi=(yi,1,yi,2,yi,3,yi,4)T;
第一个查找表的构建方法如下:
首先,yi经过线性变换作用,输出为:
其中
步骤6.2:将本轮计算的密钥rki隐藏在S盒中,
设经过S盒作用后的输出为:
步骤6.3:计算Qi*P*L*(zi,1,zi,2,zi,3,zi,4)T;
记Hi=QiPL=(Hi,1Hi,2Hi,3Hi,4),Hi,j为32*8的矩阵,则:
据上,可获得4个8bit到32bit的查找表:yi,j(→zi,j)→vi,j,j=1,2,3,4;
第一个查找表其中Hi=QiPL=(Hi,1Hi,2Hi,3Hi,4),Hi,j为32*8的矩阵,i=1,...36,j=1,...,4;
步骤七:构造第二个查找表,具体方法为:
设在第i轮中,第二个查找表的输入为si=(si,1,si,2,si,3,si,4)和ti=(ti,1,ti,2,ti,3,ti,4);
对于第1轮到第4轮计算,第二个查找表的构建方法如下:
步骤7.1:计算RiP(si)和
RiP(si)=(Ri,1P1,1si,1,Ri,2P1,2si,2,Ri,3P1,3si,3,Ri,4P1,4si,4);
步骤7.2:计算
对于第5轮到第32轮,第二个查找表的构建方法如下:
步骤7.1:计算和
步骤7.2:计算
对于第33轮到第36轮,第二个查找表的构建方法如下:
步骤7.1:计算和
步骤7.2:计算
据上,得到第二个查找表的构造为
步骤八:设明文输入为(x0,x1,x2,x3),经过36轮运算,最后输出的密文为(x39,x38,x37,x36),每一轮根据已经建立的复合线性变化Ai,j,第一个查找表及第二个查找表按如下步骤进行加密运算:
设第i轮的输入为(xi-1,xi,xi+1,xi+2),其中xi-1,xi,xi+1,xi+2都为32bit;
步骤8.1:利用复合线性变换Ai,1,Ai,2,Ai,3分别左乘xi,xi+1,xi+2,然后将结果进行异或,即:
步骤8.2:计算yi=(yi,1,yi,2,yi,3,yi,4)T经过查找表一变换后的结果,即:
步骤8.3:计算si=xi-1=(si,1,si,2,si,3,si,4)T和ti=(ti,1,ti,2,ti,3,ti,4)T经过查找表二变换后的结果,即:
经过上述3步变换后,第i轮的输出为xi+3=(xi+3,1,xi+3,2,xi+3,3,xi+4,4)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国电子科技集团公司第三十研究所,未经中国电子科技集团公司第三十研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611202361.X/1.html,转载请声明来源钻瓜专利网。