1.一种HMAC-SM3密码算法的侧信道能量分析方法,其特征在于,SM3密码算法的压缩函数在第j轮的迭代运算过程中,产生第一变量TT1j,第二变量TT2j,其中:
TT1j=θj+Wj′,θj=FFj(Aj,Bj,Cj)+Dj+SS2j,
TT2j=ηj+Wj,ηj=GGj(Ej,Fj,Gj)+Hj+SS1j,
SS1j=((Aj<<<12)+Ej+(Tj<<<j))<<<7,
0≤j≤63,且j为整数,A,B,C,D,E,F,G,H均为基于HMAC-SM3密码算法的密码模块的寄存器,所述密码模块每次调用SM3密码算法时,第二个压缩函数的初始值均为当前调用SM3密码算法时各个所述寄存器的初始状态值A0,B0,C0,D0,E0,F0,G0,H0序排列所形成的数据序列,FFj(Aj,Bj,Cj)为对Aj,Bj和Cj布尔函数求值,GGj(Ej,Fj,Gj)为对Ej,Fj和Gj布尔函数求值,Wj、Wj′为对一消息的一消息分组进行扩展后生成的字,Tj为常量;
所述密码模块每次调用SM3密码算法的过程中,每个压缩函数运算后的结果为Vp,1≤P≤N,P为整数;
所述分析方法包括:
分析获得第一密钥数据Kin的值,所述第一密钥数据Kin为所述密码模块第一次调用SM3密码算法时,第二个压缩函数的初始值,采用如下步骤获得Kin:
向基于HMAC-SM3密码算法的密码模块输入消息组M1={m10,m11,...,m1i,...,m1n},其中,消息m1i为随机数,n为正整数,0≤i≤n,且i为整数,采集消息组M1中每条消息的能量消耗信息,建立能量消耗矩阵,并在j=0时,分别选择第一变量TT10和第二变量TT20作为分析对象,根据消息组M1的输入数据以及对应采集到的能量消耗信息,采用侧信道能量分析方法,分别获得θ0和η0的值;
向基于HMAC-SM3密码算法的密码模块输入消息组M2={m20,m21,..., m2i,...,m2n},采集消息组M2中每条消息的能量消耗信息,建立能量消耗矩阵,其中,消息m2i第一个消息分组的W0及W4均为0,其余均为随机数,并在j=1时,分别选择第一变量TT11和第二变量TT21作为分析对象,根据消息组M2的输入数据以及对应采集到的能量消耗信息,采用侧信道能量分析方法,分别获得θ1和η1的值;
向基于HMAC-SM3密码算法的密码模块输入消息组M3={m30,m31,...,m3i,...,m3n},采集消息组M3中每条消息的能量消耗信息,建立能量消耗矩阵,其中,消息m3i第一个消息分组的W0、W1、W4及W5均为0,其余均为随机数,并在j=2时,分别选择第一变量TT12和第二变量TT22作为分析对象,根据消息组M3的输入数据以及对应采集到的能量消耗信息,采用侧信道能量分析方法,分别获得θ2和η2的值;
向基于HMAC-SM3密码算法的密码模块输入消息组M4={m40,m41,...,m4i,...,m4n},采集消息组M4中每条消息的能量消耗信息,建立能量消耗矩阵,其中,消息m4i第一个消息分组的W0、W1、W2、W4、W5及W6均为0,其余均为随机数,并在j=3时,分别选择第一变量TT13和第二变量TT23作为分析对象,根据消息组M4的输入数据以及对应采集到的能量消耗信息,采用侧信道能量分析方法,分别获得θ3和η3的值;
根据所获得的θ0、θ1、θ2、θ3、η0、η1、η2及η3的值,计算变量A0、B0、C0、D0、E0、F0、G0和H0的值,并将所述变量A0、B0、C0、D0、E0、F0、G0和H0的值顺序排列以获得所述第一密钥数据Kin的值;
分析获得第二密钥数据Kout的值;
根据所获得的第一密钥数据Kin的值以及第二密钥数据Kout的值,生成消息摘要。
2.如权利要求1所述的HMAC-SM3密码算法的侧信道能量分析方法,其特征在于,所述分析获得第二密钥数据Kout的值,包括:采用如下方式获得第二密钥数据Kout的值:
向基于HMAC-SM3密码算法的密码模块输入消息组U1={u10,u11,...,uli,...,u1n},其中,n为正整数,0≤i≤n,且i为整数;
采集所述密码模块应用HMAC-SM3密码算法对所输入的每条消息进行处理的过程中所产生的能量消耗信息,并建立能量消耗矩阵;
选择作为分析对象,根据所输出的消息VN以及对应采集到的能量消耗数据,采用侧信道能量分析方法获得所述第二密钥数据Kout的值。
3.如权利要求1所述的HMAC-SM3密码算法的侧信道能量分析方法,其特征在于,所述分析获得第二密钥数据Kout的值,包括:采用如下步骤获得第二密钥数据Kout的值:
向基于HMAC-SM3密码算法的密码模块输入消息组U2={u20,u21,...,u2i,...,u2n},其中,n为正整数,0≤i≤n,且i为整数;
采集所述密码模块应用HMAC-SM3密码算法对所输入的每条消息进行处理的过程中所产生的能量消耗信息,并建立能量消耗矩阵;
在j=0时,分别选择第一变量TT10和第二变量TT20作为分析对象,根据所输入的消息以及对应采集到的能量消耗数据,采用侧信道能量分析方法,先分别获得(FF0(A0,B0,C0)+D0+SS20)和(GG0(E0,F0,G0)+H0+SS10)的值,再分别获得第一变量TT10和第二变量TT20的值,即变量A1和E1的值;
在j=1时,先分别选择和作为分析对象,分别根据所述变量A1和E1的值,以及对应采集到的能量消耗数据,采用侧信道能量分析方法,分别获得变量B1、F1的值;再分别选择和作为分析对象,分别根据所获得的变量B1、A1的值以及变量F1和E1的值,以及对应采集到的能量消耗数据,采用侧信道能量分析方法,分别获得变量C1、G1的值;再根据所获得的变量B1和C1的值,分别获得变量A0和B0的值;最后根据所获得的变量F1和G1的值,分别获得变量E0和F0的值;
在j=1时,选择第一变量TT11或(FF1(A1,B1,C1)+D1)作为分析对象,根据所获得的变量A1、B1和C1的值,以及对应采集到的能量消耗数据,采用侧信道能量分析方法获得变量D1的值;选择第二变量TT21或(GG1(E1,F1,G1)+H1)作为分析对象,根据所获得的变量E1、F1和G1的 值,以及对应采集到的能量消耗数据,采用侧信道能量分析方法获得变量H1的值;再根据所获得的变量D1和H1的值,分别获得变量C0和G0的值;
在j=0时,选择(FF0(A0,B0,C0)+D0+SS20)作为分析对象,根据所获得的变量A0、B0和C0的值,获得变量D0的值;选择(GG0(E0,F0,G0)+H0+SS10)作为分析对象,根据所获得的变量E0、F0和G0的值,获得变量H0的值;
根据所述变量A0、B0、C0、D0、E0、F0、G0和H0的值,获得所述第二密钥数据Kout的值。
4.如权利要求1至3任一项所述的HMAC-SM3密码算法的侧信道能量分析方法,其特征在于,所述侧信道能量分析方法包括:差分能量分析DPA或相关能量分析CPA。
5.一种HMAC-SM3密码算法的侧信道能量分析装置,其特征在于,SM3密码算法的压缩函数在第j轮的迭代运算过程中,产生第一变量TT1j,第二变量TT2j,其中:
TT1j=θj+Wj′,θj=FFj(Aj,Bj,Cj)+Dj+SS2j,
TT2j=ηj+Wj,ηj=GGj(Ej,Fj,Gj)+Hj+SS1j,
SS1j=((Aj<<<12)+Ej+(Tj<<<j))<<<7,
0≤j≤63,且j为整数,A,B,C,D,E,F,G,H均为基于HMAC-SM3密码算法的密码模块的寄存器,所述密码模块每次调用SM3密码算法时,第二个压缩函数的初始值均为当前调用SM3密码算法时各个所述寄存器的初始状态值A0,B0,C0,D0,E0,F0,G0,H0顺序排列所形成的数据序列,FFj(Aj,Bj,Cj)为对Aj,Bj和Cj布尔函数求值,GGj(Ej,Fj,Gj)为对Ej,Fj和Gj布尔函数求值,Wj、W′j为对一消息的一消息分组进行扩展后生成的字,Tj为常量;
所述密码模块每次调用SM3密码算法的过程中,每个压缩函数运算后的结果为Vp,1≤P≤N,P为整数;
所述分析装置包括:
第一分析单元,用于分析获得第一密钥数据Kjn的值,所述第一密钥数据Kjn为所述密码模块第一次调用SM3密码算法时,第二个压缩函数的初始值,包括:
第一输入子单元,用于向基于HMAC-SM3密码算法的密码模块输入消息组M1={m10,m11,...,m1i,...,m1n},其中,消息m1i为随机数,n为正整数,0≤i≤n,且i为整数;
第一采集子单元,用于采集消息组M1中每条消息的能量消耗信息,并建立能量消耗矩阵;
第一分析子单元,用于在j=0时,分别选择第一变量TT10和第二变量TT20作为分析对象,根据消息组M1的输入数据以及对应采集到的能量消耗数据,采用侧信道能量分析方法,分别获得θ0和η0的值;
第二输入子单元,用于向基于HMAC-SM3密码算法的密码模块输入消息组M2={m20,m21,...,m2i,...,m2n},其中,消息m2i第一个消息分组的W0及W4均为0,其余均为随机数;
第二采集子单元,用于采集消息组M2中每条消息的能量消耗信息,并建立能量消耗矩阵;
第二分析子单元,用于在j=1时,分别选择第一变量TT11和第二变量TT21作为分析对象,根据消息组M2的输入数据以及对应采集到的能量消耗信息,采用侧信道能量分析方法,分别获得θ1和η1的值;
第三输入子单元,用于向基于HMAC-SM3密码算法的密码模块输入消息组M3=={m30,m31,...,m3i,...,m3n},其中,消息m3i第一个消息分组的W0、W1、W4及W5均为0,其余均为随机数;
第三采集子单元,用于采集消息组M3中每条消息的能量消耗信息,并建立能量消耗矩阵;
第三分析子单元,用于在j=2时,分别选择第一变量TT12和第二变量TT22作为分析对象,根据消息组M3的输入数据以及对应采集到的能量消耗信息,采用侧信道能量分析方法,分别获得θ2和η2的值;
第四输入子单元,用于向基于HMAC-SM3密码算法的密码模块输入消息组M4=={m40,m41,...,m4i,...,m4n},其中,消息m4i第一个消息分组 的W0、W1、W2、W4、W5及W6均为0,其余均为随机数;
第四采集子单元,用于采集消息组M4中每条消息的能量消耗信息,并建立能量消耗矩阵;
第四分析子单元,用于在j=3时,分别选择第一变量TT13和第二变量TT23作为分析对象,根据消息组M4的输入数据以及对应采集到的能量消耗信息,采用侧信道能量分析方法,分别获得θ3和η3的值;
计算子单元,用于根据所获得的θ0、θ1、θ2、θ3、η0、η1、η2及η3的值,计算变量A0、E0、B0、F0、C0、G0、D0及H0的值,并将所述变量A0、B0、C0、D0、E0、F0、G0和H0的值顺序排列以获得所述第一密钥数据Kin的值;
第二分析单元,用于分析获得第二密钥数据Kout的值;
生成单元,根据所获得的第一密钥数据Kin的值以及第二密钥数据Kout的值,生成消息摘要。
6.如权利要求5所述的HMAC-SM3密码算法的侧信道能量分析装置,其特征在于,所述第二分析单元包括:
输入子单元,用于向基于HMAC-SM3密码算法的密码模块输入消息组U1={u10,u11,...,uli,...,u1n},其中,n为正整数,0≤i≤n,且i为整数;
采集子单元,用于采集所述密码模块应用HMAC-SM3密码算法对所输入的每条消息进行处理的过程中所产生的能量消耗信息,并建立能量消耗矩阵;
分析子单元,用于选择作为分析对象,根据所输出的消息VN以及对应采集到的能量消耗数据,采用侧信道能量分析方法获得所述第二密钥数据Kout的值。
7.根据权利要求5所述的HMAC-SM3密码算法的侧信道能量分析装置,其特征在于,所述第二分析单元包括:
输入子单元,用于向基于HMAC-SM3密码算法的密码模块输入消息组U2={u20,u21,...,u2i,...,u2n},其中,n为正整数,0≤i≤n,且i为整 数;
采集子单元,用于采集所述密码模块应用HMAC-SM3密码算法对所输入的每条消息进行处理的过程中所产生的能量消耗信息,并建立能量消耗矩阵;
第一分析子单元,用于在j=0时,分别选择第一变量TT10和第二变量TT20作为分析对象,根据所输入的消息以及对应采集到的能量消耗数据,采用侧信道能量分析方法,先分别获得(FF0(A0,B0,C0)+D0+SS20)和(GG0(E0,F0,G0)+H0+SS10)的值,再分别获得第一变量TT10和第二变量TT20的值,即变量A1和E1的值;
第二分析子单元,用于在j=1时,先分别选择和作为分析对象,分别根据所述变量A1和E1的值,以及对应采集到的能量消耗数据,采用侧信道能量分析方法,分别获得变量B1、F1的值;再分别选择和作为分析对象,分别根据所获得的变量B1、A1的值以及变量F1和E1的值,以及对应采集到的能量消耗数据,采用侧信道能量分析方法,分别获得变量C1、G1的值;再根据所获得的变量B1和C1的值,分别获得变量A0和B0的值;最后根据所获得的变量F1和G1的值,分别获得变量E0和F0的值;
第三分析子单元,用于在j=1时,选择第一变量TT11或(FF1(A1,B1,C1)+D1)作为分析对象,根据所获得的变量A1、B1和C1的值,以及对应采集到的能量消耗数据,采用侧信道能量分析方法获得变量D1的值;选择第二变量TT21或(GG1(E1,F1,G1)+H1)作为分析对象,根据所获得的变量E1、F1和G1的值,以及对应采集到的能量消耗数据,采用侧信道能量分析方法获得变量H1的值;再根据所获得的变量D1和H1的值,分别获得变量C0和G0的值;
第四分析子单元,用于在j=0时,选择(FF0(A0,B0,C0)+D0+SS20)作为分析对象,根据所获得的变量A0、B0和C0的值,获得D0的值;选择(GG0(E0,F0,G0)+H0+SS10)作为分析对象,根据所获得的变量E0、F0和G0的值,获得变量H0的值;
第五分析子单元,用于根据所述变量A0、B0、C0、D0、E0、F0、G0和 H0的值,获得所述第二密钥数据Kout的值。
8.如权利要求5至7任一项所述的HMAC-SM3密码算法的侧信道能量分析装置,其特征在于,所述侧信道能量分析方法包括:差分能量分析DPA或相关能量分析CPA。