一种基于SM3算法的密码模块的防攻击方法及装置制造方法及图纸

技术编号:14396443 阅读:47 留言:0更新日期:2017-01-11 10:37
本发明专利技术提供了一种基于SM3算法的密码模块的防攻击方法及装置。所述方法包括:在所述密码模块调用SM3算法的压缩函数对消息m′的第i个消息分组B(i)进行迭代运算以前,获取随机数并分别存储在第二寄存器中;将所获取到的随机数分别与对应的第一寄存器的初始值进行异或运算,并将异或运算后的结果作为第1轮迭代运算中所述第一寄存器的起始值;当所述密码模块调用SM3算法的压缩函数对所述消息分组B(i)进行迭代运算时,将所述压缩函数中的算术加运算转换为掩码的模加运算;计算前M轮迭代运算的每一轮迭代运算中各个第一寄存器的值及对应的掩码。应用所述方法可以提高所述密码模块的安全性。

【技术实现步骤摘要】

本专利技术涉及数据安全
,特别涉及一种基于SM3算法的密码模块的防攻击方法及装置
技术介绍
密码杂凑算法被广泛应用于数字签名和验证、消息认证码的生成和验证以及随机数的生成等方面,满足了多种密码应用的安全需求。其中,SM3算法是我国唯一的密码杂凑算法,应用较为广泛。基于SM3算法的密码模块在对输入的信息进行处理的过程中,会计算一系列的中间值。所计算的中间值的功耗与所述密码模块的密钥存在一定的相关性。因此,攻击者在对基于SM3算法的密码模块进行攻击时,可以采用侧信道能量分析的方法对所述中间值的侧信道信息进行分析,最终获得所述密码模块的密钥。
技术实现思路
本专利技术实施例解决的问题是如何防止攻击者采用侧信道能量分析方法获得基于SM3算法的密码模块的密钥。为解决上述问题,本专利技术实施例提供一种基于SM3算法的密码模块的防攻击方法,所述密码模块包括第一寄存器A,B,C,D,E,F,G,H,所述密码模块对接收到的消息m进行扩展后得到消息m′,且消息m′=B(0)B(1)…B(i)…B(n-1),B(i)为消息m′的第i个消息分组,i和n为整数,0≤i≤n-1;所述方法包括:在所述密码模块调用SM3算法的压缩函数对消息m′的第i个消息分组B(i)进行迭代运算以前,获取分别与所述第一寄存器A,B,C,D,E,F,G,H对应的随机数r0,0,r0,1,r0,2,r0,3,r0,4,r0,5,r0,6,r0,7,并分别存储在第二寄存器中;将所获取到的随机数分别与对应的第一寄存器的初始值进行异或运算,并将异或运算后的结果作为第1轮迭代运算中所述第一寄存器的起始值A′0,B′0,C′0,D′0,E′0,F′0,G′0,H′0;当所述密码模块调用SM3算法的压缩函数对所述消息分组B(i)进行迭代运算时,将所述压缩函数中的算术加运算转换为掩码的模加运算;计算前M轮迭代运算的每一轮迭代运算中各个第一寄存器的值及对应的掩码;将第M轮迭代运算获得的各个第一寄存器的值分别与对应的掩码进行异或运算,并将异或运算后的结果作为第M+1轮迭代运算中各个第一寄存器的起始值,其中1≤M≤64。可选地,所述掩码的模加运算包括:当所述掩码的模加运算的输入为x’和y′,且x’和y′的布尔掩码分别为rx和ry时,所述掩码的模加运算的输出为z’,z’的布尔掩码为rz,输入x’和y′与输出z’以及对应的掩码满足以下条件:zk′=xk′⊕yk′⊕ck-1′,rz,k=rx,k⊕ry,k⊕ry,k-1,0≤k≤s-1;]]>其中:z′k,x′k及y′k分别表示输出z’、输入x’和y′的第k个比特位的值,rz,k,rx,k及ry,k分别表示掩码rz、rx和ry的第k个比特位的值,ry,-1=0,c′k-1满足以下条件:当k=0时,c′-1=0,当k=1时,c′0=MUX(MUX(ry,0,y′0;rx,0),MUX(y′0,ry,0;rx,0);x′0),当2≤k≤s-1时,可选地,所述M的值为16。可选地,所述M的值为4。可选地,所述随机数r0,0,r0,1,r0,2,r0,3,r0,4,r0,5,r0,6,r0,7分别与对应的各个第一寄存器的值的长度相同。本专利技术实施例还提供了一种基于SM3算法的密码模块的防攻击装置,所述密码模块包括第一寄存器A,B,C,D,E,F,G,H,所述密码模块对接收到的消息m进行扩展后得到消息m′,且消息m′=B(0)B(1)…B(i)…B(n-1),B(i)为消息m′的第i个消息分组,i和n为整数,0≤i≤n-1;所述装置包括:获取单元,适于在所述密码模块调用SM3算法的压缩函数对消息m′的第i个消息分组B(i)进行迭代运算以前,获取分别与所述第一寄存器A,B,C,D,E,F,G,H对应的随机数r0,0,r0,1,r0,2,r0,3,r0,4,r0,5,r0,6,r0,7,并分别存储在第二寄存器中;第一运算单元,适于将所获取到的随机数分别与对应的第一寄存器的初始值进行异或运算,并将异或运算后的结果作为第1轮迭代运算中所述第一寄存器的起始值A′0,B′0,C′0,D′0,E′0,F′0,G′0,H′0;转换单元,适于在所述密码模块调用SM3算法的压缩函数对所述消息分组B(i)进行迭代运算时,将所述压缩函数中的算术加运算转换为掩码的模加运算;第二运算单元,适于在计算前M轮迭代运算的每一轮迭代运算中各个第一寄存器的值及对应的掩码;第三运算单元,适于将第M轮迭代运算获得的各个第一寄存器的值分别与对应的掩码进行异或运算,并将异或运算后的结果作为第M+1轮迭代运算中各个寄存器的起始值,其中,1≤M≤64。可选地,所述转换单元适于当所述掩码的模加运算的输入为x’和y′,且x’和y′的布尔掩码分别为rx和ry时,转换得到所述掩码的模加运算的输出为z’,z’的布尔掩码为rz,输入x’和y′与输出z’以及对应的布尔掩码满足以下条件:zk′=xk′⊕yk′⊕ck-1′,rz,k=rx,k⊕ry,k⊕ry,k-1,0≤k≤s-1;]]>其中:z′k,x′k及y′k分别表示输出z’、输入x’和y′的第k个比特位的值,rz,k,rx,k及ry,k分别表示掩码rz、rx和ry的第k个比特位的值,ry,-1=0,c′k-1满足以下条件:当k=0时,c′-1=0,当k=1时,c′0=MUX(MUX(ry,0,y′0;rx,0),MUX(y′0,ry,0;rx,0);x′0),当2≤k≤s-1时,可选地,所述M的值为16。可选地,所述M的值为4。可选地,所述随机数r0,0,r0,1,r0,2,r0,3,r0,4,r0,5,r0,6,r0,7分别与对应的各个第一寄存器的值的长度相同。与现有技术相比,本专利技术的实施例具有以下优点:通过获取随机数,并将所获取的随机数分别与对应的第一寄存器的值进行异或运算,将得到的异或运算结果作为输入,带有布尔掩码,且在对所述异或运算结果进行处理过程中,将压缩函数中的算术加运算转换为掩码的模加运算,也就是说,密码模块在调用SM3密码算法进行迭代运算的过程中,均不涉及真实的中间值,因此可以防止攻击者通过侧信道能量分析方法分析所述中间值,也就可以防止由此而导致的所述密码模块密钥的泄露,提高所述密码模块的安全性。附图说明图1是本专利技术实施例中基于SM3算法的密码模块的防攻击方法的流程图;图2是本专利技术实施例中密码模块调用SM3算法对消息分组B(i)执行第1轮迭代运算的流程图;图3是本专利技术实施例中密码模块调用SM3算法对消息分组B(i)执行第j+1轮迭代运算的流程图;图4是本专利技术实施例中基于SM3算法的密码模块的防攻击装置的结构示意图。具体实施方式目前,由于基于SM3算法的密码模块在调用SM3算法对输入信息进行处理时,会计算一系列的中间值,并且,所述中间值的功耗与所述密码模块的密钥存在一定的相关性。因此,攻击者往往可以通过获取所述中间值的侧信道信息,并采用本文档来自技高网...
一种基于SM3算法的密码模块的防攻击方法及装置

【技术保护点】
一种基于SM3算法的密码模块的防攻击方法,其特征在于,所述密码模块包括第一寄存器A,B,C,D,E,F,G,H,所述密码模块对接收到的消息m进行扩展后得到消息m′,且消息m′=B(0)B(1)…B(i)…B(n‑1),B(i)为消息m′的第i个消息分组,i和n为整数,0≤i≤n‑1;所述方法包括:在所述密码模块调用SM3算法的压缩函数对消息m′的第i个消息分组B(i)进行迭代运算以前,获取分别与所述第一寄存器A,B,C,D,E,F,G,H对应的随机数r0,0,r0,1,r0,2,r0,3,r0,4,r0,5,r0,6,r0,7,并分别存储在第二寄存器中;将所获取到的随机数分别与对应的第一寄存器的初始值进行异或运算,并将异或运算后的结果作为第1轮迭代运算中所述第一寄存器的起始值A′0,B′0,C′0,D′0,E′0,F′0,G′0,H′0;当所述密码模块调用SM3算法的压缩函数对所述消息分组B(i)进行迭代运算时,将所述压缩函数中的算术加运算转换为掩码的模加运算;计算前M轮迭代运算的每一轮迭代运算中各个第一寄存器的值及对应的掩码;将第M轮迭代运算获得的各个第一寄存器的值分别与对应的掩码进行异或运算,并将异或运算后的结果作为第M+1轮迭代运算中各个第一寄存器的起始值,其中1≤M≤64。...

【技术特征摘要】
1.一种基于SM3算法的密码模块的防攻击方法,其特征在于,所述密码模块包括第一寄存器A,B,C,D,E,F,G,H,所述密码模块对接收到的消息m进行扩展后得到消息m′,且消息m′=B(0)B(1)…B(i)…B(n-1),B(i)为消息m′的第i个消息分组,i和n为整数,0≤i≤n-1;所述方法包括:在所述密码模块调用SM3算法的压缩函数对消息m′的第i个消息分组B(i)进行迭代运算以前,获取分别与所述第一寄存器A,B,C,D,E,F,G,H对应的随机数r0,0,r0,1,r0,2,r0,3,r0,4,r0,5,r0,6,r0,7,并分别存储在第二寄存器中;将所获取到的随机数分别与对应的第一寄存器的初始值进行异或运算,并将异或运算后的结果作为第1轮迭代运算中所述第一寄存器的起始值A′0,B′0,C′0,D′0,E′0,F′0,G′0,H′0;当所述密码模块调用SM3算法的压缩函数对所述消息分组B(i)进行迭代运算时,将所述压缩函数中的算术加运算转换为掩码的模加运算;计算前M轮迭代运算的每一轮迭代运算中各个第一寄存器的值及对应的掩码;将第M轮迭代运算获得的各个第一寄存器的值分别与对应的掩码进行异或运算,并将异或运算后的结果作为第M+1轮迭代运算中各个第一寄存器的起始值,其中1≤M≤64。2.如权利要求1所述的基于SM3算法的密码模块的防攻击方法,其特征在于,所述掩码的模加运算包括:当所述掩码的模加运算的输入为x’和y′,且x’和y′的布尔掩码分别为rx和ry时,所述掩码的模加运算的输出为z’,z’的布尔掩码为rz,输入x’和y′与输出z’以及对应的掩码满足以下条件:zk′=xk′⊕yk′⊕ck-1′,]]>rz,k=rx,k⊕ry,k⊕ry,k-1,]]>0≤k≤s-1;其中:z′k,x′k及y′k分别表示输出z’、输入x’和y′的第k个比特位的值,rz,k,rx,k及ry,k分别表示掩码rz、rx和ry的第k个比特位的值,ry,-1=0,c′k-1满足以下条件:当k=0时,c′-1=0,当k=1时,c′0=MUX(MUX(ry,0,y′0;rx,0),MUX(y′0,ry,0;rx,0);x′0),当2≤k≤s-1时,c′k-1=MUX(MUX(rx,k-1,x′k-1;ry,k-1),MUX(xk-1′,rx,k-1;ry,k-1);yk-1′)]]>⊕MUX(MUX(rx,k-1⊕ry,k-1,xk-1′⊕yk-1′;ry,k-2),]]>MUX(xk-1′⊕yk-1′,rx,k-1⊕]]>ry,k-1;ry,k-2);ck-2′);]]>MUX表示选择函数。3.如权利要求1所述的基于SM3算法的密码模块的防攻击方法,其特征在于,所述M的值为16。4.如权利要求1所述的基于SM3算法的密码模块的防攻击方法,其特征在于,所述M的值为4。5.如权利要求1-4任一项所述的基于SM3算法的密码模块的防攻击方法,其特征在于,所述随机数r0,0,r0,1,r0,2,r0,3,r0,4,r0,5,r0,6,r0,7分别与对应的各个第一寄存器的值的长度相同。6.一种基于SM3算法的密码模块的防攻击装置...

【专利技术属性】
技术研发人员:郭丽敏王立辉张志敏李大为罗鹏莫凡
申请(专利权)人:上海复旦微电子集团股份有限公司国家密码管理局商用密码检测中心
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1