本发明涉及信息安全技术领域,尤其涉及sm4密钥扩展算法的模板攻击方法技术领域。
背景技术:
sm4算法采用非平衡feistel结构,由密钥扩展和数据加密两部分组成。密钥扩展和数据加密均使用32轮非线性迭代结构,数据分组长度和密钥长度都是128比特。加解密过程采样相同的结构,只是轮密钥使用顺序不同,加密与解密计算轮密钥使用顺序刚好相反。sm4算法的非线性运算s盒固定为8入8出的置换计算,记作sbox(.)。
sm4算法主密钥表示为mk=(mk0,mk1,mk2,mk3),其中mki(i=0,1,2,3)为字。系统参数为fk=(fk0,fk1,fk2,fk3),在标准中定义fk=(0xa3b1bac6,0x56aa3350,0x677d9197,0xb27022dc)。固定参数ck=(ck0,ck1,…,ck31),其中cki(i=0,…,31)为字。设cki,j为cki的第j个字节(j=0,1,2,3),则cki,j=(4i+j)×7(mod256)。轮密钥表示为rk=(rk0,rk1,…,rk31),其中rki(i=0,…,31)为字。轮密钥加密主密钥与系统参数和固定参数经密钥扩展算法计算而来,用于每轮数据的加密或解密运算。sm4算法加密运算的流程如图1所示,其中,定义128比特输入明文为x=(x0,x1,x2,x3),其中xi(i=0,1,2,3)为字。定义128比特密文输出为y=(y0,y1,y2,y3),其中yi(i=0,1,2,3)为字。经过每一轮运算得到xi+4=f(xi,xi+1,xi+2,xi+3,rki),i=0,1,…,31。32轮运算完成后,跟随一次反序变换r,得到最终加密结果(y0,y1,y2,y3)=r(x32,x33,x34,x35)=(x35,x34,x33,x32)。解密时算法结构与加密完全相同,只是轮密钥使用顺序不同。加密时轮密钥顺序使用,依次为(rk0,rk1,…,rk31);解密时轮密钥逆序使用,依次为(rk31,rk30,…,rk0)。
sm4算法的一次迭代称为一轮运算,轮运算的过程函数f如图2所示。轮函数f由输入参数的“⊕”运算和合成置换t组成,f(xi,xi+1,xi+2,xi+3,rki)=xi⊕t(xi+1⊕xi+2⊕xi+3⊕rki)。合成置换t是
非线性变换τ由四个s盒并列构成,设输入为a(a0,a1,a2,a3),输出为b(b0,b1,b2,b3),其中ai和bi(i=0,1,2,3)为字节。则(b0,b1,b2,b3)=τ(a0,a1,a2,a3)=(sbox(a0),sbox(a1),sbox(a2),sbox(a3))。s盒可以表示为一个二维数组,ai的高四比特为二维数组的行标,ai的低四比特为二维数组的列标。线性变换l由“<<<i”和“⊕”运算构成。设输出为c属于
sm4算法的密钥扩展算法与加解密算法比较相近,也是32轮迭代结构,每轮运算包含与加解密运算相同的非线性变换τ和略不同的线性变换l’,密钥扩展的轮函数流程如图3所示。首先,密钥扩展轮运算的输入为(k0,k1,k2,k3)=(mk0⊕fk0,mk1⊕fk1,mk2⊕fk2,mk3⊕fk3)。设ki(i=0,1,…,35)为密钥扩展轮运算的输入和输出变量,以字为单位。然后,轮密钥rki=ki+4=ki⊕l’(τ(ki+1⊕ki+2⊕ki+2⊕cki)),i=0,1,…,31。其中l’(b)=b⊕(b<<<13)⊕(b<<<23)。
由于sm4算法的轮计算都是32位的,因此,不易进行侧信道攻击,这是因为需要猜测的密钥空间为
技术实现要素:
针对上述现有技术中存在的不足,本发明的目的是选择的攻击点是sm4密钥扩展的轮运算之前加密密钥mk与系统参数fk异或的过程,采用id模型按字节进行分类,采用标准的模板攻击即可。
为了达到上述技术目的,本发明所采用的技术方案是:
一种针对sm4密钥扩展算法的模板攻击方法,以密钥扩展算法中加密密钥mk异或系统参数fk的计算过程为模板攻击目标,依次攻击16个sm4密钥字节的每一个字节,所述模板攻击方法包括以下具体步骤:
步骤1:使用任意明文数据组和随机密钥在训练设备上进行sm4密钥扩展运算,采集建立模板所需第一功耗曲线;
步骤2:使用sost方法选取建立模板的采样点,对所述第一功耗曲线使用sost方法选取与操作“mk⊕fk”相关性最强的采样点组成第二功耗曲线;
步骤3:使用由均值向量和协方差矩阵决定的多维正态分布来描述第二功耗曲线上采样点的分布关系,并以字节为单位,使用identity(id)模型作为用于分类的功耗模型对第二功耗曲线中的每一组功耗曲线进行特征提取,建立每种密钥取值或mk⊕fk值对应的模板,共生成256个模板;
步骤4:在目标设备上使用任意明文数据组进行sm4密钥扩展运算,采集第三功耗曲线,使用与步骤2筛选出相同位置的采样点组成第四功耗曲线;
步骤5:使用多维高斯分布模型计算第四功耗曲线中每一条功耗曲线与每一个模板的匹配概率,每一条第四功耗曲线的攻击结果组成了一组攻击结果;
步骤6:根据第四功耗曲线的攻击结果,即候选密钥模板匹配概率排名,对每一个候选密钥进行打分,最后按照分值由低到高排列得到最终的攻击排名,打分标准即攻击结果,排名第一的候选密钥得1分,排第256名的候选密钥得256分;
步骤7:得到sm4密钥第一个字节的攻击结果后,同理,依次分别攻击剩余的15个字节密钥,即攻破完整的sm4加/解密密钥。
本发明由于采用了上述攻击sm4密钥扩展算法mk异或fk过程,所获得的有益效果是,在密钥扩展算法迭代运算之前的异或运算,使用id模型作为模板的分类标准,直接对sm4密钥本身进行建模,仅使用
下面结合附图和具体实施方式对本发明做进一步说明。
附图说明
图1是sm4算法加密运算的流程图。
图2是sm4算法轮运算流程图。
图3是sm4算法密钥扩展的轮函数流程图。
图4是本发明具体实施的针对sm4密钥扩展算法的模板攻击方法流程图。
具体实施方式
参看图4所示,为本发明具体实施的针对sm4密钥扩展算法模板攻击过程流程图。
针对sm4密钥扩展算法的模板攻击过程,分为建立模板和模板匹配两个阶段,依次攻击16个密钥字节的每一个字节,以密钥扩展算法中加密密钥mk异或系统参数fk的计算过程为模板攻击目标,所述模板攻击具体步骤如下:
步骤1:使用任意明文组d1在训练设备上进行sm4密钥扩展运算,采集建立模板所需功耗曲线t1,记作矩阵
步骤2:使用sost方法选取建立模板的采样点记作sip,对所述功耗曲线t1使用sost方法选取与操作“mk⊕fk”相关性最强的采样点组成功耗曲线t2,记作矩阵
步骤3:使用多维正态分布来描述一段功耗曲线t2上采样点的分布关系,建立每种密钥取值对应的模板,多维正态分布由均值向量m和协方差矩阵c来决定,对t2中的每一类功耗曲线组tri(i=0,1,…,255)计算均值向量m和协方差矩阵c组成的参数对(m,c)作为这一密钥取值的功耗模板,共生成256个模板(m,c)i(i=0,1,…,255);
并且,针对功耗曲线t2中的每一组功耗曲线tri(i=0,1,…,255)进行特征提取,均值向量m包含
步骤4:在目标设备上使用任意数据组d2进行sm4密钥扩展运算,采集功耗曲线t3,记作
步骤5:使用多维高斯分布模型计算功耗曲线t3中每一条功耗曲线与每一个模板(m,c)i(i=0,1,…,255)的概率pr[
步骤6:根据d2个攻击结果,即按照候选密钥模板匹配概率排名,对每一个候选密钥进行打分,最后按照分值由低到高排列得到最终的攻击排名,打分标准即攻击结果,排名第一的候选密钥得1分,排第256名的候选密钥得256分;
步骤7:得到sm4密钥第一个字节的攻击结果后,同理,依次分别攻击剩余的15个字节密钥,即攻破完整的sm4加/解密密钥。
本发明为了接近真实的攻击场景,除目标字节外,每一类攻击曲线使用的mk其他字节进行一次随机选取,为了方便统计匹配结果,攻击曲线按目标字节固定为0,1,…,255的顺序获取。
本发明使用随机的mk采集电源功耗曲线作为训练曲线,为了消除一些电子噪声的影响,进行模板匹配时使用多条曲线匹配结果平均的方法增强鲁棒性。
本发明并不限于上文讨论的实施方式,以上对具体实施方式的描述旨在于为了描述和说明本发明涉及的技术方案。基于本发明启示的显而易见的变换或替代也应当被认为落入本发明的保护范围;以上的具体实施方式用来揭示本发明的最佳实施方法,以使得本领域的普通技术人员能够应用本发明的多种实施方式以及多种替代方式来达到本发明的目的。