1.一种HMAC-SM3密码算法的侧信道能量分析方法,其特征在于,SM3密码算法的压缩函数在第j轮的迭代运算过程中,产生第一变量TT1j,第二变量TT2j,其中:
TT1j=FFj(Aj,Bj,Cj)+Dj+SS2j+Wj′,
TT2j=GGj(Ej,Fj,Gj)+Hj+SS1j+Wj,
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′为对消息mi的一消息分组进行扩展后生成的字,Tj为常量;
所述密码模块每次调用SM3密码算法的过程中,第p个压缩函数运算后的结果为Vp,1≤p≤N,p为整数;
所述分析方法包括:
分析获得第一密钥数据Kin的值,所述第一密钥数据Kin为所述密码模块第一次调用SM3密码算法时,第二个压缩函数的初始值,采用如下步骤获得Kin:
向基于HMAC-SM3密码算法的密码模块输入消息组M={m0,m1,…,mi,…,mn},其中,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的值,获得所述第一密钥数据Kin的值;
分析获得第二密钥数据Kout的值;
根据所获得的第一密钥数据Kin的值以及第二密钥数据Kout的值,生成消息摘要。
2.根据权利要求1所述的HMAC-SM3密码算法的侧信道能量分析方法,其特征在于,所述分析获得第二密钥数据Kout的值,包括:采用如下方式获得第二密钥数据Kout的值:
向基于HMAC-SM3密码算法的密码模块输入消息组U1={u10,u11,…, u1i,…,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=FFj(Aj,Bj,Cj)+Dj+SS2j+Wj′,
TT2j=GGj(Ej,Fj,Gj)+Hj+SS1j+Wj,
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′为对消息mi的一消息分组进行扩展后生成的字,Tj为常量;
所述密码模块应用SM3密码算法的过程中,第p个压缩函数运算后的结果为Vp,1≤p≤N,p为整数;
所述分析装置包括:
第一分析单元,用于分析获得第一密钥数据Kin的值,所述第一密钥数据Kin为所述密码模块第一次调用SM3密码算法时,第二个压缩函数的初始值,包括:
输入子单元,用于向基于HMAC-SM3密码算法的密码模块输入消息组M={m0,m1,…,mi,…,mn},其中,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的值,获得所述第一密钥数据Kin的值;
第二分析单元,用于分析获得第二密钥数据Kout的值;
生成单元,用于根据所获得的第一密钥数据Kin的值以及第二密钥数据Kout的值,生成消息摘要。
6.根据权利要求5所述的HMAC-SM3密码算法的侧信道能量分析装置,其特征在于,所述第二分析单元包括:
输入子单元,用于向基于HMAC-SM3密码算法的密码模块输入消息组U1={u10,u11,…,u1i,…,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。