CN106330443A - 一种基于sm3算法的密码模块的防攻击方法及装置 - Google Patents
一种基于sm3算法的密码模块的防攻击方法及装置 Download PDFInfo
- Publication number
- CN106330443A CN106330443A CN201510338741.5A CN201510338741A CN106330443A CN 106330443 A CN106330443 A CN 106330443A CN 201510338741 A CN201510338741 A CN 201510338741A CN 106330443 A CN106330443 A CN 106330443A
- Authority
- CN
- China
- Prior art keywords
- mask
- depositor
- prime
- value
- circleplus
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Storage Device Security (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种基于SM3算法的密码模块的防攻击方法及装置。所述方法包括:在所述密码模块调用SM3算法的压缩函数对消息m′的第i个消息分组B(i)进行迭代运算以前,获取随机数并分别存储在第二寄存器中;将所获取到的随机数分别与对应的第一寄存器的初始值进行异或运算,并将异或运算后的结果作为第1轮迭代运算中所述第一寄存器的起始值;当所述密码模块调用SM3算法的压缩函数对所述消息分组B(i)进行迭代运算时,将所述压缩函数中的算术加运算转换为掩码的模加运算;计算前M轮迭代运算的每一轮迭代运算中各个第一寄存器的值及对应的掩码。应用所述方法可以提高所述密码模块的安全性。
Description
技术领域
本发明涉及数据安全技术领域,特别涉及一种基于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’以及对应的掩码满足以下条件:
其中: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’以及对应的布尔掩码满足以下条件:
其中: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密码算法进行迭代运算的过程中出现真实的中间值,也就可以防止攻击者采用侧信道能量分析方法分析所述中间值,避免由此而导致的所述密码模块密钥的泄露,提高所述密码模块的安全性。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细地说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,因此本发明不受下面公开的具体实施例的限制。
如图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。接着,所述密码模块对消息m′的每个消息分组进行函数压缩,每个函数压缩过程包括从第0轮至第63轮的迭代运算。
所述方法可以包括如下步骤11、12、13、14及15。其中,步骤11及12在所述密码模块调用SM3算法的压缩函数对消息m′的第i个消息分组B(i)进行迭代运算以前执行,步骤13至15在所述密码模块调用SM3算法的压缩函数对所述消息分组B(i)进行迭代运算的过程中执行。下面对上述步骤进行详细说明:
步骤11,获取分别与所述第一寄存器A,B,C,D,E,F,G,H对应的随机数r0 , 0,r0 , 1,r0 , 2,r0 , 3,r0 , 4,r0 , 5,r0 , 6,r0 , 7,并分别存储在第二寄存器中。
在具体实施中,可以通过多种方式获取所述随机数,此处不作限定。例 如,可以通过用户输入的方式获取所述随机数,也可以通过在其他外部设备中读取所述随机数的方式获取所述随机数,还可以通过在所述密码模块中设置随机数产生装置的方式获取所述随机数。其中,所获取的随机数可以部分相同,也可以全部相同。
在具体实施中,所述第一寄存器可以用于存储各个寄存器的值,所述第二寄存器可以用于存储所获取的随机数。所述密码模块调用SM3算法对消息m处理的过程中,随着处理过程的不同,各个第一寄存器的值相应发生变化。在本发明的实施例中,所述密码模块在调用SM3密码算法对消息m进行迭代运算前,各个第一寄存器的值为其初始值。每轮迭代运算中,各个第一寄存器都有起始值,所述密码模块根据所述第一寄存器的起始值并结合SM3算法进行迭代运算。但无论各个第一寄存器的值如何,所述第二寄存器中存储的随机数均分别与各个第一寄存器的值保持对应关系。
例如,随机数r0 , 0与第一寄存器A的值相对应,随机数r0 , 1与第一寄存器B的值相对应,随机数r0 , 2与第一寄存器C的值相对应,随机数r0 , 3与第一寄存器D的值相对应,随机数r0 , 4与第一寄存器E的值相对应,随机数r0 , 5与第一寄存器F的值相对应;r0 , 6与第一寄存器G的值相对应;r0 , 7与第一寄存器H的值相对应。
在具体实施中,所述随机数r0 , 0,r0 , 1,r0 , 2,r0 , 3,r0 , 4,r0 , 5,r0 , 6,r0 , 7分别与对应的各个第一寄存器的值的长度相同。通常情况下,各个第一寄存器的值的长度为32bit,则所获取的各个随机数的长度对应为32bit。
步骤12,将所获取到的随机数分别与对应的第一寄存器的初始值进行异或运算,并将异或运算后的结果作为第1轮迭代运算中所述第一寄存器的起始值A′0,B′0,C′0,D′0,E′0,F′0,G′0,H′0。
以所述第一寄存器A,B,C,D,E,F,G,H的初始值分别为A0,B0,C0,D0,E0,F0,G0,H0为例,将所获取到的随机数分别与对应的第一寄存器的初始值进行异或,得到第1轮迭代运算中所述第一寄存器的起始值。此时所述随机数分别为第1轮迭代运算中对应的第一寄存器的起始值的布尔掩码。
例如,第一寄存器A的起始值r0 , 0为A′0的布尔掩码。第一寄 存器B的起始值r0 , 1为B′0的布尔掩码。第一寄存器C的起始值 r0 , 2为C′0的布尔掩码。第一寄存器D的起始值r0 , 3为D′0的布尔掩码。第一寄存器E的起始值r0 , 4为E′0的布尔掩码。第一寄存器F的起始值r0 , 5为F′0的布尔掩码。第一寄存器G的起始值r0 , 6为G′0的布尔掩码。第一寄存器H的起始值r0 , 7为H′0的布尔掩码。
步骤13,将所述压缩函数中的算术加运算转换为掩码的模加运算。
其中,所述掩码的模加运算的运算过程如下:
当所述掩码的模加运算的输入为x’和y′,且x’和y′的布尔掩码分别为rx和ry时,所述掩码的模加运算的输出为z’,z’的布尔掩码为rz,输入x’和y′与输出z’以及对应的布尔掩码满足以下条件:
其中: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时,
其中,MUX为选择函数,MUX(x1,x2;x3)表示根据x3的取值选择x1或x2作为MUX(x1,x2;x3)的输出。例如,MUX(ry , 0,y′0;rx , 0)表示根据rx , 0的取值选择ry , 0或y′0作为MUX(ry , 0,y′0;rx , 0)的输出。
所述密码模块在调用SM3算法对消息m进行处理的过程中包括多次的算 术加运算操作,将每次的算术加运算转换为掩码的模加运算。由上述对掩码的模块运算的过程描述可知,在输入相同的情况下,执行算术加运算操作与执行掩码的模加运算操作的结果不同,因此,将所述压缩函数中的算术加运算转换为掩码的模加运算可以改变所述压缩函数中算术加运算后的结果,进一步防止消息m进行处理的过程中出现真实的中间值,提高所述密码模块的安全性。
步骤14,计算前M轮迭代运算的每一轮迭代运算中各个第一寄存器的值及对应的掩码。
在具体实施中,根据所述第一寄存区的起始值及对应的掩码调用SM3算法,可以获得本轮第一寄存器的值及对应的掩码。将本轮第一寄存器的值及对应的掩码,分别作为下一轮迭代运算中各个第一寄存器的起始值及对应的掩码。
在具体实施中,1≤M≤64,即可以分别计算64轮迭代运算中各个第一寄存器的值及对应的掩码。需要说明的是,所述M的取值与所述密码模块密钥的长度相关。
例如,当所述密码模块的密钥长度为128bit时,攻击者通过获取前4轮迭代运算中的中间值,即可分析出所述密码模块的密钥,因此,M的值可以为4,即计算第0至3轮中每轮迭代运算中各个第一寄存器的值及对应的掩码,防止攻击者通过获取前4轮迭代运算中的中间值对所述密码模块进行攻击。当所述密码模块的密钥长度为256bit时,攻击者通过获取前16轮迭代运算中的中间值,即可分析出所述密码模块的密钥,因此,M的值可以为16,即计算第0至15轮中每轮迭代运算中各个第一寄存器的值及对应的掩码,此时即可达到防止攻击者通过获取中间值对所述密码模块进行攻击的目的。
需要说明的是,在具体计算过程中,每一轮迭代运算可能包括多个运算操作,每个运算操作的结果都存在对应的掩码。也就是说,获得各个第一寄存器的值的过程,与获得各个第一寄存器的布尔掩码的过程是同步进行的。
步骤15,将第M轮迭代运算获得的各个第一寄存器的值分别与对应的掩码进行异或运算,并将异或运算后的结果作为第M+1轮迭代运算中各个第一寄 存器的起始值。
在具体实施中,为了获得所述密码模块对消息m处理后的真实输出,可以将第M轮迭代运算获得的各个第一寄存器的值分别与对应的掩码进行异或运算,异或运算后的结果为第M+1轮迭代运算中各个第一寄存器的起始值。
其中,当所述M的值为64时,可以在第64轮迭代运算结束后,将第64轮迭代运算获得的各个第一寄存器的值分别与对应的掩码进行异或运算,异或运算后的结果为各个所述第一寄存器的值。当所述M<64时,将第M轮迭代运算获得的各个第一寄存器的值分别与对应的掩码进行异或运算,异或运算后的结果为第M+1轮迭代运算中各个第一寄存器的起始值,所述密码模块继续调用SM3算法对所获得的第M+1轮迭代运算中各个第一寄存器的起始值进行处理,直至第64轮迭代运算完毕。
由上述内容可知,本发明实施例中基于SM3算法的密码模块的防攻击方法,通过获取随机数,并将所获取的随机数分别与对应的第一寄存器的值进行异或,以及通过将压缩函数中的算术加运算转换为掩码的模加运算,可以有效避免所述密码模块在调用SM3密码算法进行迭代运算的过程中出现真实的中间值,因此可以防止攻击者通过侧信道能量分析方法分析所述中间值,也就可以防止由此而导致的所述密码模块密钥的泄露,提高所述密码模块的安全性。
下面结合SM3密码算法的具体过程以及图2和图3,对上述基于SM3算法的密码模块的防攻击方法进行详细说明:
所述密码模块在接收到输入的消息m后,首先调用SM3密码算法将所述消息组中的每条消息进行填充,再对填充后的消息进行函数压缩。
1、消息填充
以消息m为例,消息m的长度为l比特。首先将比特“1”添加到消息m的末尾,再添加k个“0”,其中k是满足l+1+k≡448mod 512的最小的非负整数。然后再添加一个64位的比特串,所述比特串是长度l的二进制数据,由此获得填充后的消息m′。消息m′的比特长度为512的倍数,将填充后的消息m′按512比特进行分组:
m′=B(0)B(1)…B(i)…B(n-1),其中,n=(l+k+65)/512
2、函数压缩
在具体实施中,所述函数压缩过程可以包括对分组后的消息进行消息扩展的过程,以及对经消息扩展后的数据进行函数压缩的过程,下面对上述过程进行详细说明:
2.1、消息扩展
以对消息m填充后的消息m′中的消息分组B(i)进行为例,依次执行以下步骤,以将消息分组B(i)扩展生成132个字W0,W1,…,Wp,…,W67,W′0,W′1,…,W′63:
a)将消息分组B(i)划分为16个字W0,W1,…,W15;
b)对于p从16至63,依次进行如下运算:
c)对于p从0至63之间的每一个值,依次进行如下运算:
其中置换函数 式中R的单位为字。
2.2、函数压缩
令A,B,C,D,E,F,G,H为字寄存器,A0,B0,C0,D0,E0,F0,G0,H0分别为所述寄存器的初始状态值,SS1j,SS2j,第一变量TT1j以及第二变量TT2j均为第j轮迭代运算中计算的中间变量,压缩函数V(i+1)=CF(V(i),B(i)),0≤i≤n-1,其中V(0)为已知的256比特初始值IV。计算过程描述如下:
ABCDEFGH←V(i)
对于j从0至63之间的每一个值,依次进行式(3)至(14)的运算:
SS1j←((Aj<<<12)+Ej+(Tj<<<j))<<<7 (3)
TT1j←FFj(Aj,Bj,Cj)+Dj+SS2j+W′j (5)
TT2j←GGj(Ej,Fj,Gj)+Hj+SS1j+Wj (6)
Dj+1←Cj (7)
Cj+1←Bj<<<9 (8)
Bj+1←Aj (9)
Aj+1←TT1j (10)
Hj+1←Gj (11)
Gj+1←Fj<<<19 (12)
Fj+1←Ej (13)
Ej+1←P0(TT2j) (14)
函数压缩后的结果为V(i+1)
其中,迭代中使用的常数与函数如下:
常量
布尔函数:
置换函数
式(15)、(16)及(17)中R,Y,Z的单位均为字。
3、杂凑值
ABCDEFGH←V(n)
输出的256比特的杂凑值:y=ABCDEFGH。
下面以所述密码模块调用SM3算法对消息m的第i个消息分组B(i)进行函数压缩的过程为例,对本发明实施例中基于SM3算法的密码模块的防攻击方法进行详细说明,其中,记+′为掩码的模232加算法:
由上述内容可知,在消息扩展阶段,将B(i)扩展生成132个字W0,W1,…,Wp,…,W67,W′0,W′1,…,W′63用于压缩函数CF。如图2所示,在压缩函数CF的迭代运算开始之前,先用V(i)初始化8个第一寄存器A,B,C,D,E,F,G,H记这8个第一寄存器中存储的值为分别A0,B0,C0,D0,E0,F0,G0,H0。接着,读取8个32比特随机数r0 , 0,r0 , 1,r0 , 2,r0 , 3,r0 , 4,r0 , 5,r0 , 6,r0 , 7并将其存储在第二寄存器中。然后将8个第一寄存器的值A0,B0,C0,D0,E0,F0,G0,H0与所获取到的8个随机数对应进行异或运算,异或运算后的结果为A′0,B′0,C′0,D′0,E′0,F′0,G′0,H′0。将异或后运算的数据分别存入8个第一寄存器A,B,C,D,E,F,G,H中,并作为第1轮迭代运算中各个第一寄存器的起始值。
所述密码模块可以按照如图2所示的流程图对B(i)执行第1轮迭代运算,并同时计算对应的布尔掩码,其中,图2中左侧部分为计算各个第一寄存器的值的过程,右侧部分为计算对应的布尔掩码的过程。具体过程如下:
步骤1、中间变量SS1的值为:SS1′0=((A′0<<<12)+′(E′0)+′(T0))<<<7,它的布尔掩码记为
步骤2、中间变量SS2的值为:它的布尔掩码记为
步骤3、中间变量TT1的值为: 它的布尔掩码记为:
步骤4、中间变量TT2的值为:
步骤5、将数据C′0存入字寄存器D中。
步骤6、B′0经过循环移位后得到B′0<<<9,将该数据存入字寄存器C中。
步骤7、将数据A′0存入字寄存器B中。
步骤8、将中间变量TT1的值TT1′0存入字寄存器A中。
步骤9、将数据G′0存入字寄存器H中。
步骤10、F′0经过循环移位后得到F′0<<<19,将该数据存入字寄存器G中。
步骤11、将数据E′0存入字寄存器F中。
步骤12、将中间变量TT2的值TT2′0存入字寄存器E中。
所获得的第二寄存器的值分别如下:r1 , 0=maskTT1,r1 , 1=r0 , 0,r1 , 2=r0 , 1<<<9,r1 , 3=r0 , 2,r1 , 4=P0(maskTT2),r1 , 5=r0 , 4,r1 , 6=r0 , 5<<<19,r1 , 7=r0 , 6。
此时,8个第一寄存器A,B,C,D,E,F,G,H的值分别为A′1,B′1,C′1,D′1,E′1,F′1,G′1,H′1,它们的布尔掩码记分别为r1 , 0,r1 , 1,r1 , 2,r1 , 3,r1 , 4,r1 , 5,r1 , 6,r1 , 7。
所述密码模块可以根据如图3所示的流程图对B(i)执行第j+1次迭代运算,1≤0≤15,并同时计算对应的布尔掩码。对B(i)执行第j+1次迭代运算的具体说明如下:
步骤1、中间变量SS1的值为SS1′j=((A′j<<<12)+′(E′j)+′(Tj<<<j))<<<7,它的布尔掩码记为:
步骤2、中间变量SS2的值为它的布尔掩码记为:
步骤3、中间变量TT1的值为 它的布尔掩码记为:
步骤4、中间变量TT2的值为
步骤5、将数据C′j存入字寄存器D中。
步骤6、B′j经过循环移位后得到B′j<<<9,将该数据存入字寄存器C中。
步骤7、将数据A′j存入字寄存器B中。
步骤8、将中间变量TT1的值TT1′j存入字寄存器A中。
步骤9、将数据G′j存入字寄存器H中。
步骤10、F′j经过循环移位后得到F′j<<<19,将该数据存入字寄存器G中。
步骤11、将数据E′j存入字寄存器F中。
步骤12、将中间变量TT2的值TT2′j存入字寄存器E中。
所获得的第二寄存器的值分别如下:
rj+1 , 0=maskTT1,rj+1 , 1=rj , 0,rj+1 , 2=rj , 1<<<9,rj+1 , 3=rj , 2,rj+1 , 4=P0(maskTT2),rj+1 , 5=rj , 4,rj+1 , 6=rj , 5<<<19,rj+1 , 7=rj , 6。
此时,第j+1次迭代运算后各个第一寄存器的值分别为:A′j+1,B′j+1,C′j+1,D′j+1,E′j+1,F′j+1,G′j+1,H′j+1,它们的布尔掩码分别为rj+1 , 0,rj+1 , 1,rj+1 , 2,rj+1 , 3,rj+1 , 4,rj+1 , 5,rj+1 , 6,rj+1 , 7。
所述密码模块根据上述内容对所述消息分组B(i)执行第j轮迭代运算后,获得各个第一寄存器的结果为A′j,B′j,C′j,D′j,E′j,F′j,G′j,H′j,对应的布尔掩码为rj , 0,rj , 1,rj , 2,rj , 3,rj , 4,rj , 5,rj , 6,rj , 7。对于第j+1轮迭代运算,则可以在执行第j+1轮迭代运算前,可以先将所获得第一寄存器的值A′j,B′j,C′j,D′j,E′j,F′j,G′j,H′j分别与对应的布尔掩码rj , 0,rj , 1,rj , 2,rj , 3,rj , 4,rj , 5,rj , 6,rj , 7进行异或,异或后的结果 Aj,Bj,Cj,Dj,Ej,Fj,Gj,Hj分别作为各个所述第一寄存器在第j+1轮迭代运算中的起始值。
需要说明的是,由于在SM3算法的函数压缩过程中,布尔函数在0≤j≤15时与16≤j≤63时的表达式不同,因此,各个中间变量在0≤j≤15时与16≤j≤63时对应的掩码值不同。可以理解的是,虽然本发明实施例仅给出了0≤j≤15的迭代运算过程,但本领域技术人员可以参考上述迭代运算过程获得16≤j≤63的迭代运算过程。
需要说明的是,在本发明的实施中,所述第M轮迭代运算可以为上述的第j轮运算,也可以为上述的第j+1轮运算,还可以为第j+2轮运算等,只要所述M的取值小于等于64即可。
当所述M的值为64时,可以在第64轮迭代运算结束后,将第64轮迭代运算获得的各个第一寄存器的值分别与对应的掩码进行异或运算,异或运算后的结果为各个所述第一寄存器的值并由所述密码模块输出。当所述M<64时,将第M轮迭代运算获得的各个第一寄存器的值分别与对应的掩码进行异或运算,异或运算后的结果为第M+1轮迭代运算中各个第一寄存器的起始值,所述密码模块继续调用SM3算法对所获得的第M+1轮迭代运算中各个第一寄存器的起始值进行处理,直至第64轮迭代运算完毕。
由上述内容可知,本发明实施例中基于SM3算法的密码模块的防攻击方法,通过获取随机数,并将所述随机数与对应的第一寄存器的初始值进行异或,将得到的异或运算结果作为输入,带有布尔掩码,且在对所述异或运算结果进行处理过程中,将SM3算法中的算术加运算转换为掩码的模加运算,使得所述密码模块在调用SM3算法对消息m处理的过程中泄漏的侧信道信息与真实的中间值无关,从而可以防止攻击者通过侧信道能量分析方法获取所述密码模块的密钥的目的,因此可以有效提供所述密码模块的安全性。
为了使本领域技术人员更好地理解和实现本发明,以下对上述基于SM3算法的密码模块的防攻击方法对应的装置进行详细描述。
如图4所示,本发明实施例提供了一种基于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。接着,所述密码模块对消息m′的每个消息分组进行函数压缩,每个函数压缩过程包括从第0轮至第63轮的迭代运算。
在具体实施中,所述装置可以包括:获取单元41,第一运算单元42,转换单元43,第二运算单元44及第三运算单元45。其中:
所述获取单元41适于在所述密码模块调用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,并分别存储在第二寄存器中。
所述第一运算单元42适于将所获取到的随机数分别与对应的第一寄存器的初始值进行异或,并将异或后的结果作为第1轮迭代运算中所述第一寄存器的起始值A′0,B′0,C′0,D′0,E′0,F′0,G′0,H′0。
所述转换单元43适于在所述密码模块调用SM3算法的压缩函数对所述消息分组B(i)进行迭代运算时,将所述压缩函数中的算术加运算转换为掩码的模加运算。
所述第二运算单元44适于在计算前M轮迭代运算的每一轮迭代运算中各个第一寄存器的值及对应的掩码。
所述第三运算单元45适于将第M轮迭代运算获得的各个第一寄存器的值分别与对应的掩码进行异或运算,并将异或运算后的结果作为第M+1轮迭代运算中各个寄存器的起始值,其中,1≤M≤64。
在具体实施中,所述掩码的模加运算的运算过程如下:
当所述掩码的模加运算的输入为x’和y′,且x’和y′的布尔掩码分别为rx和ry时,所述掩码的模加运算的输出为z’,z’的布尔掩码为rz,输入x’和y′与输出z’以及对应的布尔掩码满足以下条件:
其中: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时,
其中,MUX为选择函数,MUX(x1,x2;x3)表示根据x3的取值选择x1或x2作为MUX(x1,x2;x3)的输出。例如,MUX(ry , 0,y′0;rx , 0)表示根据rx , 0的取值选择ry , 0或y′0作为MUX(ry , 0,y′0;rx , 0)的输出。
所述密码模块在调用SM3算法对消息m进行处理的过程中包括多次的算术加运算操作,将每次的算术加运算转换为掩码的模加运算。由上述对掩码的模块运算的过程描述可知,在输入相同的情况下,执行算术加运算操作与执行掩码的模加运算操作的结果不同,因此,将所述压缩函数中的算术加运算转换为掩码的模加运算可以改变所述压缩函数中算术加运算后的结果,进一步防止消息m进行处理的过程中出现真实的中间值,提高所述密码模块的安全性。
在具体实施中,所述M的取值与所述密码模块密钥的长度相关。例如,当所述密码模块为调用SM3算法生成动态口令的密码模块时,其密钥长度可能为128bit,也可能为256bit。当所述密钥长度为128bit时,此时M的值可以为4,即仅计算第0至3轮中每轮迭代运算中各个第一寄存器的值及对应的掩码。当所述密钥长度为256bit,此时M的值可以为16,即仅计算第0至15轮中每轮迭代运算中各个第一寄存器的值及对应的掩码。
需要说明的是,当所述M的值为64时,可以在第64轮迭代运算结束后,将第64轮迭代运算获得的各个第一寄存器的值分别与对应的掩码进行异或运 算,异或运算后的结果为各个所述第一寄存器的值并由所述密码模块输出。当所述M<64时,将第M轮迭代运算获得的各个第一寄存器的值分别与对应的掩码进行异或运算,异或运算后的结果为第M+1轮迭代运算中各个第一寄存器的起始值,所述密码模块继续调用SM3算法对所获得的第M+1轮迭代运算中各个第一寄存器的起始值进行处理,直至第64轮迭代运算完毕。
在具体实施中,所述随机数r0 , 0,r0 , 1,r0 , 2,r0 , 3,r0 , 4,r0 , 5,r0 , 6,r0 , 7分别与对应的各个第一寄存器的值的长度相同。例如,各个第一寄存器的值的长度为32bit,则所获取的各个随机数的长度对应为32bit。
由上述内容可知,本发明实施例中基于SM3算法的密码模块的防攻击装置,通过获取单元41来获取随机数,并由第一运算单元42将所述随机数与对应的第一寄存器的初始值进行异或,来引入布尔掩码,再通过转换单元43将SM3算法中的算术加运算转换为掩码的模加运算,使得所述密码模块在调用SM3算法对消息m处理的过程中计算的中间值与其功耗无关,从而可以防止攻击者通过获取中间值来达到对所述密码模块的密钥的目的,因此可以有效提供所述密码模块的安全性。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (10)
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’以及对应的掩码满足以下条件:
其中: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表示选择函数。
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算法的密码模块的防攻击装置,其特征在于,所述密码模块包括第一寄存器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。
7.如权利要求6所述的基于SM3算法的密码模块的防攻击装置,其特征在于,所述转换单元适于当所述掩码的模加运算的输入为x’和y′,且x’和y′的布尔掩码分别为rx和ry时,转换得到所述掩码的模加运算的输出为z’,z’的布尔掩码为rz,输入x’和y′与输出z’以及对应的布尔掩码满足以下条件:
其中: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表示选择函数。
8.如权利要求6所述的基于SM3算法的密码模块的防攻击装置,其特征在于,所述M的值为16。
9.如权利要求6所述的基于SM3算法的密码模块的防攻击装置,其特征在于,所述M的值为4。
10.如权利要求6-9任一项所述的基于SM3算法的密码模块的防攻击装置,其特征在于,所述随机数r0,0,r0,1,r0,2,r0,3,r0,4,r0,5,r0,6,r0,7分别与对应的各个第一寄存器的值的长度相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510338741.5A CN106330443B (zh) | 2015-06-17 | 2015-06-17 | 一种基于sm3算法的密码模块的防攻击方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510338741.5A CN106330443B (zh) | 2015-06-17 | 2015-06-17 | 一种基于sm3算法的密码模块的防攻击方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106330443A true CN106330443A (zh) | 2017-01-11 |
CN106330443B CN106330443B (zh) | 2019-11-05 |
Family
ID=57732767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510338741.5A Active CN106330443B (zh) | 2015-06-17 | 2015-06-17 | 一种基于sm3算法的密码模块的防攻击方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106330443B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023000577A1 (zh) * | 2021-07-23 | 2023-01-26 | 浪潮电子信息产业股份有限公司 | 一种数据压缩方法、装置及电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103647637A (zh) * | 2013-11-19 | 2014-03-19 | 国家密码管理局商用密码检测中心 | 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法 |
CN104426653A (zh) * | 2013-08-30 | 2015-03-18 | 上海复旦微电子集团股份有限公司 | 一种数据处理方法和装置 |
-
2015
- 2015-06-17 CN CN201510338741.5A patent/CN106330443B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104426653A (zh) * | 2013-08-30 | 2015-03-18 | 上海复旦微电子集团股份有限公司 | 一种数据处理方法和装置 |
CN103647637A (zh) * | 2013-11-19 | 2014-03-19 | 国家密码管理局商用密码检测中心 | 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法 |
Non-Patent Citations (2)
Title |
---|
国家密码管理局,: ""SM3密码杂凑算法"", 《HTTP://WWW.OSCCA.GOV.CN/SCA/XXGK/2010-12/17/CONTENT_1002389.SHTML》 * |
杨静,: ""超轻量级密码PRESENT的差分功耗攻击及其防护"", 《中国优秀硕士学位论文全文数据库-信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023000577A1 (zh) * | 2021-07-23 | 2023-01-26 | 浪潮电子信息产业股份有限公司 | 一种数据压缩方法、装置及电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106330443B (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1583278B1 (en) | Stream Cipher Design with Revolving Buffers | |
US9425961B2 (en) | Method for performing an encryption of an AES type, and corresponding system and computer program product | |
CN104270247B (zh) | 适用于量子密码系统的高效泛Hash函数认证方法 | |
CN108964872B (zh) | 一种基于aes的加密方法及装置 | |
EP2316189B1 (en) | Method for generating a cipher-based message authentication code | |
CN106487498B (zh) | 电子电路对边信道攻击的抵抗的检验 | |
Belaïd et al. | Side-Channel Analysis of Multiplications in GF (2128) Application to AES-GCM | |
KR102154164B1 (ko) | 의사 랜덤 시퀀스 생성 방법 및 데이터 스트림의 코딩 또는 디코딩 방법 | |
CN106330424B (zh) | 基于sm3算法的密码模块的防攻击方法及装置 | |
Coron et al. | Improved gadgets for the high-order masking of dilithium | |
Luo et al. | Cryptanalysis of a chaotic block cryptographic system against template attacks | |
CN109936437B (zh) | 一种基于d+1阶掩码的抗功耗攻击方法 | |
CN106330443A (zh) | 一种基于sm3算法的密码模块的防攻击方法及装置 | |
EP2363974A1 (en) | Variable table masking for cryptographic processes | |
CN106201435A (zh) | 基于细胞神经网络的伪随机数生成方法 | |
Mahalanobis et al. | An improved guess-and-determine attack on the A5/1 stream cipher | |
Naif et al. | EAMSA 512: New 512 Bits Encryption Al-gorithm Based on Modified SALSA20 | |
CN110071927B (zh) | 一种信息加密方法、系统及相关组件 | |
Guo et al. | Differential power analysis on dynamic password token based on SM3 algorithm, and countermeasures | |
CN110730062A (zh) | 一种基于模板攻击的混沌分组加密分析方法 | |
KR102287962B1 (ko) | 부채널 공격 대응이 용이한 128비트 경량 블록 암호화 방법 및 이를 이용한 장치 | |
CN114254372B (zh) | 数据加密处理方法、系统及电子设备 | |
US20240171401A1 (en) | Method for calculating using an one-way function effienct in a zero knowledge proof, and apparatus implementing the same method | |
Yang et al. | LWARX: Lightweight ARX white-box cipher for satellite communications | |
Afianti et al. | Strengthening Crypto-1 cipher against algebraic attacks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |