[发明专利]一种可抵御能量分析攻击的SM4方法有效
申请号: | 201410704525.3 | 申请日: | 2014-11-26 |
公开(公告)号: | CN104333447B | 公开(公告)日: | 2017-10-10 |
发明(设计)人: | 周玉洁;朱念好 | 申请(专利权)人: | 上海爱信诺航芯电子科技有限公司 |
主分类号: | H04L9/06 | 分类号: | H04L9/06 |
代理公司: | 上海信好专利代理事务所(普通合伙)31249 | 代理人: | 张妍,徐雯琼 |
地址: | 200241 上海*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种可抵御能量分析攻击的SM4方法,一阶掩码密钥扩展引擎对输入的密钥执行密钥扩展运算,输出轮密钥给二阶掩码加解密引擎,二阶掩码加解密引擎对输入的明(密)文和轮密钥执行32轮循环迭代运算后,输出密(明)文。本发明对SM4的加解密引擎采用二阶掩码实现,同时对于SM4算法的密钥扩展引擎采用一阶掩码实现,不仅可以抵御加解密过程中的高阶能量分析攻击,还可以抵御针对密钥扩展过程中的模板攻击,有效地提高了SM4算法硬件实现的安全性。 | ||
搜索关键词: | 一种 抵御 能量 分析 攻击 sm4 方法 | ||
【主权项】:
一种可抵御能量分析攻击的SM4方法,其特征在于,该方法采用一阶掩码密钥扩展引擎对输入的密钥执行密钥扩展运算,输出轮密钥给二阶掩码加解密引擎,二阶掩码加解密引擎对输入的明文和轮密钥执行32轮循环迭代运算后,输出密文,或者二阶掩码加解密引擎对输入的密文和轮密钥执行32轮循环迭代运算后,输出明文;一阶掩码密钥扩展引擎和二阶掩码加解密引擎同时工作,一阶掩码密钥扩展引擎每一轮生成一个轮密钥,输出给二阶掩码加解密引擎执行加解密运算;所述的一阶掩码密钥扩展引擎对输入的密钥执行密钥扩展运算中,32轮循环迭代过程中使用了4个补偿变换,一阶掩码密钥扩展引擎的4个补偿变换C0、C1、C2、C3定义为:C0((k1i⊕r1),r0,r1)=(k1i⊕r1)⊕r0⊕r1C1((k2i⊕r2),r1,r2)=(k2i⊕r2)⊕r1⊕r2C2((k3i⊕r3),r2,r3)=(k3i⊕r3)⊕r2⊕r3C3(x,r3,r1)=x⊕r3⊕L′(S(r1⊕r2⊕r3))⊕r1;]]>其中,表示按比特异或,128比特的随机数从左到右按字划分成4个部分,记为r0、r1、r2、r3,在32轮循环迭代中,随机数一直保持不变,设第i轮循环迭代的输入值在没有掩码的情况下记为k0i、k1i、k2i、k3i,i=1~32,每一轮补偿变换后的值存储在四个32比特的寄存器Reg0、Reg1、Reg2、Reg3中;将寄存器Reg1、寄存器Reg2、寄存器Reg3中的值与CKi做异或操作,作为一阶掩码型S盒MS变换的输入:(k1i⊕r1)⊕(k2i⊕r2)⊕(k3i⊕r3)⊕CKi;]]>其中,CKi的值采用SM4算法文本中的标准值;MS变换的构造采用公式表示如下:MS((k1i⊕r1)⊕(k2i⊕r2)⊕(k3i⊕r3)⊕CKi))S(k1i⊕k2i⊕k3i⊕CKi)⊕S(r1⊕r2⊕r3);]]>将MS变换的结果作为L′变换的输入:L′(S(k1i⊕k2i⊕k3i⊕CKi)⊕S(r1⊕r2⊕r3));]]>L′变换是SM4算法文本中规定的线性变换,L′变换的构造采用公式表示如下:L′(S(k1i⊕k2i⊕k3i⊕CKi)⊕S(r1⊕r2⊕r3))=L′(S(k1i⊕k2i⊕k3i⊕CKIi)⊕L′(S(r1⊕r2⊕r3));]]>将寄存器Reg0的值与L′变换的结果做异或操作,作为补偿变换C3的输入:x=L′(S(k1i⊕k2i⊕k3i⊕CKii))⊕L′(S(r1⊕r2⊕r3))⊕(k0i⊕r1);]]>所述的二阶掩码加解密引擎对输入的明文或密文和轮密钥执行32轮循环迭代运算中,32轮循环迭代过程中使用了4个补偿变换,二阶掩码加解密引擎的4个补偿变换C0、C1、C2、C3定义为:C0((a1i⊕r1i),r0i+1,r1i)=(a1i⊕r1i)⊕r0i+1⊕r1i;]]>C1((a2i⊕r2i),r1i+1,r2i)=(a2i⊕r2i)⊕r1i+1⊕r2i;]]>C2((a3i⊕r3i),r2i+1,r3i)=(a3i⊕r3i)⊕r2i+1⊕r3i;]]>C3(x,r3i+1,r1i)=x⊕r3i+1⊕L(S(r3i+1))⊕r1i;]]>其中,设第i轮循环迭代的初始值在没有掩码的情况下记为ai,从左到右分成4个字,依次记为a0i、a1i、a2i、a3i,第i轮对应的随机数为ri,从左到右分成4个字,依次记为r0i、r1i、r2i、r3i,i=1~32,32轮循环迭代过程均使用不同的随机数,即每轮的随机数都会更新,每一轮补偿变换后的值存储在四个32比特的寄存器Reg0、Reg1、Reg2、Reg3中;将寄存器Reg1、寄存器Reg2、寄存器Reg3中的值与轮密钥rki做异或操作,作为二阶掩码型S盒MS变换的输入:ms_in=(a1i⊕r1i)⊕(a2i⊕r2i)⊕(a3i⊕r3i)⊕rki;]]>rki为第i轮的轮密钥;MS变换的构造采用公式表示如下:MS((a1i⊕r1i)⊕(a2i⊕r2i)⊕(a3i⊕r3i)⊕rki))=S(a1i⊕a2i⊕a3i⊕rki)⊕S(r3i+1);]]>将MS变换的结果作为L变换的输入:L(S(a1i⊕a2i⊕a3i⊕rki)⊕S(r3i+1));]]>L变换为SM4算法文本中规定的线性变换,L变换的构造采用公式表示如下:L(S(a1i⊕a2i⊕a3i⊕rki)⊕S(r3i+1))=L(S(a1i⊕a2i⊕a3i⊕rki))⊕L(S(r3i+1));]]>将寄存器Reg0的值与L变换的结果做异或操作,作为补偿变换C3的输入:x=L(S(a1i⊕a2i⊕a3i⊕rki))⊕L(S(r3i+1))⊕(a0i⊕r1i).]]>
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海爱信诺航芯电子科技有限公司,未经上海爱信诺航芯电子科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410704525.3/,转载请声明来源钻瓜专利网。