首页 / 专利库 / 物理 / 能量 / 一种基于掩码SM4算法的选择明文相关碰撞攻击方法

一种基于掩码SM4算法的选择明文相关碰撞攻击方法

阅读:1037发布:2020-06-07

专利汇可以提供一种基于掩码SM4算法的选择明文相关碰撞攻击方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及侧信道攻击领域,公开了一种基于掩码SM4密码 算法 的选择明文相关碰撞攻击方法,包括测量阶段和 碰撞检测 阶段,在测量阶段,攻击者通过选择输入明文,对密码设备进行加密操作,记录并采集相应的 能量 迹,供碰撞检测阶段使用;在碰撞检测阶段,攻击者根据采集的能量迹,并基于产生碰撞两个字节对应的能量迹进行相关性计算,从而确定产生碰撞字节的输入差分;再求得4个字节间的输入差分后便可以求得4个轮密钥,即求得第一轮的轮密钥信息;随后重复上述攻击方法,依次求得第二、第三和第四轮的轮密钥,最后通过密钥扩展算法反推出原始的128比特密钥。本方法降低了产生碰撞所需要的加密次数,并实现了对掩码SM4的算法攻击。,下面是一种基于掩码SM4算法的选择明文相关碰撞攻击方法专利的具体信息内容。

1.一种基于掩码SM4密码算法的选择明文相关碰撞攻击方法,其特征在于,包括:
S1:攻击者通过选择输入SM4密码算法的明文,对要攻击的密码设备进行加密操作,记录并采集相应的能量迹;
S2:攻击者根据采集的能量迹,并基于S盒中产生碰撞的两个字节对应的能量迹进行相关性计算,从而确定产生碰撞字节的输入差分;
所述S盒中的碰撞字节包括:第一字节、第二字节、第三字节以及第四字节;所述第一字节分别与第二、第三以及第四字节碰撞;
S3:根据S盒中产生碰撞字节的输入差分,确定S盒中字节的轮密钥信息,从而获取第一轮的轮密钥;
S4:返回步骤S2,依次获取第二、三、四轮的轮密钥;
S5:根据前4轮的轮密钥和密钥扩展算法,反推出原始的工作密钥。
2.根据权利要求1所述的一种基于掩码SM4密码算法的选择明文相关碰撞攻击方法,其特征在于,所述步骤1的具体过程包括:
设SM4密码算法输入明文为 其中
第一轮的轮密钥为 选择输入明文,固定xi0=0,并令
xi1=xi2=xi3,其取值依次从0遍历至255,每一次取值进行N次加密操作,记录并采集相应的N条能量迹,每条能量迹包含T个采样点,记为 其中0≤n≤N-1,0≤α≤255,0≤t≤T-
1。
3.根据权利要求1所述的一种基于掩码SM4密码算法的选择明文相关碰撞攻击方法,其特征在于,所述第一字节与第二字节产生碰撞的输入差分为:
所述第一字节与第三字节产生碰撞的输入差分为:
所述第一字节与第四字节产生碰撞的输入差分为:
其中xi表示字节,i=0,1,2,3;ki表示轮密钥,i=0,1,2,3。
4.根据权利要求1或2所述的一种基于掩码SM4密码算法的选择明文相关碰撞攻击方法,其特征在于,所述步骤2中,产生碰撞字节的输入差分Δ由函数: 得
出,其中 和 表示产生碰撞的两个字节对应的能量迹时间片段,其中0≤n≤N-1,
0≤α≤255,0≤t0≤l-1,0≤t1≤l-1。
5.根据权利要求1-3任一所述的一种基于掩码SM4密码算法的选择明文相关碰撞攻击方法,其特征在于,所述步骤4中,计算原始128比特工作密钥的过程具体为:
其中,MK表示原始工作密钥,
rki表示轮密钥,
CKi表示固定参数,其取值方法为:设cki,j为CKi的第j个字节(i=0,1,2,3…31;j=0,1,
2,3),即CKi=(cki,0,cki,1,cki,2,cki,3),则:cki,j=(4i+j)×7mod256。

说明书全文

一种基于掩码SM4算法的选择明文相关碰撞攻击方法

技术领域

[0001] 本发明涉及侧信道攻击领域,尤其涉及一种基于掩码SM4密码算法的选择明文相关碰撞攻击方法。

背景技术

[0002] (1)基于SM4密码算法的掩码方案
[0003] SM4密码算法是我国政府采用的一种分组密码标准。该算法是一个分组算法,分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
[0004] SM4算法加密过程如附图1所示。设明文输入为X0,X1,X2,X3,轮密钥为 i=0,1,2,3…31,轮函数F为: (轮变换T:
是一个可逆的变换,由非线性变换τ和线性变换L复合而成,可表示为T(.)=L(τ(.))。非线性变换τ:τ由4个并行的S盒构成,S盒为8比特输入8比特输出的置换,记为Sbox(.)。设输入为A,输出为B,
线性变换L:非线性变换τ的输出是线性变
换L的输入,设L变换输入为B,L变换的输出为C,
[0005] 为防止侧信道攻击,SM4密码算法在使用中需要加入掩码防护措施,以提高密码算法实现的安全性。
[0006] 根据SM4密码算法自身的特点,对其进行了以下掩码设计,如附图2:
[0007] 一、对输入轮密钥引入随机掩码R;
[0008] 二、引入随机掩码M,实现掩码S盒。
[0009] 假设单个S盒的输入为 输出 则有B=sbox(A)。假设掩码为则查表变换输入为 输出 为了得到真实的输出B,则需
要生成一个对应的S盒sbox′,使得 因此有
[0010] (2)SM4密钥扩展算法
[0011] SM4加解密算法的轮密钥由原始密钥通过密钥扩展算法生成,设原始128比特加密密钥MK=(MK0,MK1,MK2,MK3), i=0,1,2,3;令 i=0,1,2,3…35,设轮密钥为 i=0,1,2,3…31,则轮密钥的生成方法如下:
[0012] 首先计算 其中FK=(FK0,FK1,FK2,FK3)为系统参数;
[0013] 对于i=0,1,2..31,有:
[0014]
[0015] 其中T‘变换与加密算法轮函数中的T基本相同,只是将其中的线性变为L’,[0016]
[0017] 系统参数FK=(FK0,FK1,FK2,FK3)的取值,采用十六进制表示为:
[0018] FK0=(A3B1BAC6),FK1=(56AA3350),
[0019] FK2=(677D9197),FK3=(B27022DC)
[0020] 32个固定参数CKi的取值方法为:
[0021] 设cki,j为CKi的第j个字节(i=0,1,2,3…31;j=0,1,2,3),即CKi=(cki,0,cki,1,cki,2,cki,3),则cki,j=(4i+j)×7mod256。
[0022] (3)相关能量攻击技术
[0023] 由于密码设备运行时产生的能量消耗依赖于密码算法所处理的数据,相关能量攻击技术通过采集密码设备对大量不同数据分组进行加密或者解密操作时产生的能量迹,并基于能量迹恢复出密码设备中的密钥。相关能量攻击需要建立能量模型,能量模型的准确性决定了攻击的效果。随着相关能量攻击技术的发展,如今密码算法在实现中都会加入各种掩码防护措施,使相关能量攻击的有效性大大降低。
[0024] (4)碰撞攻击技术
[0025] 如果密码算法某个内部函数的两个不同输入产生相同输出,则称产生了内部碰撞现象。对于不同的输入,并不是所有的密钥值都可以导致碰撞,只有某些特定的密钥子集才会导致碰撞。因此,每发生一次碰撞都会减小密钥搜索空间。碰撞攻击利用这一原理,寻找密码算法特定位置的碰撞,通过碰撞产生的关系式推导出密钥信息。碰撞攻击只是对于无防护的密码算法实现有效,当密码算法加入了掩码防护措施后,碰撞攻击就难以奏效。

发明内容

[0026] 本发明所要解决的技术问题是:针对上述存在的问题,本发明针对加掩码防护的密码算法,将相关能量攻击和碰撞攻击结合,并且基于SM4算法结构,创新的提出一种基于SM4密码算法的选择明文相关碰撞攻击方法。
[0027] 本发明采用的技术方案如下:一种基于SM4密码算法的选择明文相关碰撞攻击方法,包括以下步骤:
[0028] S1:攻击者通过选择输入SM4密码算法的明文,对要攻击的密码设备进行加密操作,记录并采集相应的能量迹;
[0029] S2:攻击者根据采集的能量迹,并基于S盒中产生碰撞的两个字节对应的能量迹进行相关性计算,从而确定产生碰撞字节的输入差分;
[0030] 所述S盒中的碰撞字节包括:第一字节、第二字节、第三字节以及第四字节;所述第一字节分别与第二、第三以及第四字节碰撞;
[0031] S3:根据S盒中产生碰撞字节的输入差分,确定S盒中字节的轮密钥信息,从而获取第一轮的轮密钥;
[0032] S4:重复步骤S1、S2、S3,依次获取第二、三、四轮的轮密钥;
[0033] S5:根据前4轮的轮密钥和密钥扩展算法,反推出原始的工作密钥。
[0034] 进一步的,所述步骤1的具体步骤为:
[0035] 设SM4密码算法输入明文为 其中(i=0,1,2,3);第一轮的轮密钥为 选
择输入明文,固定xi0=0,并令xi1=xi2=xi3,其取值依次从0遍历至255,每一次取值进行N次加密操作,记录并采集相应的N条能量迹,每条能量迹包含T个采样点,记为 其中0≤n≤N-1,0≤α≤255,0≤t≤T-1。
[0036] 进一步的,
[0037] 所述第一字节与第二字节产生碰撞的输入差分为:
[0038]
[0039] 所述第一字节与第三字节产生碰撞的输入差分为:
[0040]
[0041] 所述第一字节与第四字节产生碰撞的输入差分为:
[0042]
[0043] 其中xi表示字节,i=0,1,2,3;ki表示轮密钥,i=0,1,2,3。
[0044] 如果输入随机明文,字节x0分别与字节x1、x2、x3发生碰撞所需加密次数为28·3·N,而采用本发明的中输入选择明文的方法,仅需加密次数为28·N,降低至原来所需加密次数的1/3。
[0045] 进一步的,所述步骤2中,产生碰撞字节的输入差分Δ由函数:得出,其中 和 表示产生碰撞的两个字节对应的能量迹时间片段,其中0≤n≤N-
1,0≤α≤255,0≤t0≤l-1,0≤t1≤l-1。
[0046] 进一步的,所述步骤4中,计算原始128比特工作密钥的过程具体为:
[0047]
[0048]
[0049]
[0050]
[0051] 其中,MK表示原始工作密钥,MK=(MK0,MK1,MK2,MK3), i=0,1,2,3;
[0052] rki表示轮密钥, i=0,1,2,3…31;
[0053] CKi表示固定参数,其取值方法为:设cki,j为CKi的第j个字节(i=0,1,2,3…31;j=0,1,2,3),即CKi=(cki,0,cki,1,cki,2,cki,3),则:cki,j=(4i+j)×7mod256。
[0054] 与现有技术相比,采用上述技术方案的有益效果为:
[0055] (1)基于掩码SM4密码算法选择明文输入降低了产生碰撞所需要的加密次数。
[0056] 采用选择明文输入的方法,固定SM4算法输入明文字内的首字节,并令其他三个字节相等,依次从0遍历至255。第一轮4个S盒输入字节产生碰撞所需的加密最少次数降低至28·N次。
[0057] (2)相关碰撞攻击实现了对掩码SM4算法攻击。
[0058] 通过对两个S盒运算输入字节间进行碰撞可以有效的去除S盒运算输入掩码,使得能够对掩码SM4算法实现有效攻击。

附图说明

[0059] 图1是SM4密码算法加密流程示意图;
[0060] 图2是SM4密码算法掩码加密流程示意图;
[0061] 图3是本发明的流程示意图。

具体实施方式

[0062] 下面结合附图对本发明做进一步描述。
[0063] 如图3所示,一种基于掩码SM4密码算法的选择明文相关碰撞攻击方法,包括以下内容。
[0064] 1、测量阶段
[0065] 在测量阶段,攻击者通过选择输入SM4密码算法的明文,对要进行攻击密码设备进行加密操作,记录并采集相应的能量迹,供碰撞检测阶段使用。
[0066] 设SM4密码算法输入明文为 其中(i=0,1,2,3);第一轮的轮密钥为 选择输入明文,固定xi0=0,并
令xi1=xi2=xi3,其取值依次从0遍历至255,每一次取值进行N次加密操作,记录并采集相应的N条能量迹,每条能量迹包含T个采样点,记为 其中0≤n≤N-1,0≤α≤255,0≤t≤T-1。
[0067] 如果输入随机明文,字节x0分别与字节x1、x2、x3发生碰撞所需加密次数为28·3·N,而采用本发明的中输入选择明文的方法,仅需加密次数为28·N,降低至原来所需加密次数的1/3。
[0068] 考虑SM4算法第一轮两个S盒指令运算分别开始于时刻t0和t1,长度为l,为了简化,记两条指令运算对应的能量迹时间片段为 和 其中0≤n≤N-1,0≤α≤255,0≤t0≤l-1,0≤t1≤l-1。
[0069] 假设上述两个S盒运算输出发生碰撞,由于S盒运算的映射关系,两个S盒输入相等,即 其中m表示输入字节的掩码。为了方便,简记 则有 进而有
因此,通过碰撞可以消除S盒输入字节的掩码m。定义第一轮的第一字节x0和第二字节x1的S盒输入差分Δ0,1如下:
[0070]
[0071] 上述碰撞显示了第一轮两个轮密钥字节的线性关系,仅仅依赖于已知的输入差分Δ0,1。
[0072] 按照上述方法,通过寻找第一轮中的第一字节x0与第三字节x2、第四字节x3的S盒输入碰撞,可以得到第一轮的轮密钥字节x0和字节x2、x3的输入差分以及它们之间的线性关系:
[0073]
[0074]
[0075] 由此得到了SM4算法第一轮全部4个轮密钥的相互关系。
[0076] 2、碰撞检测阶段
[0077] 在碰撞检测阶段,攻击者根据采集的能量迹,并基于产生碰撞两个字节对应的能量迹进行相关性计算,从而确定产生碰撞的输入差分Δ0,1。
[0078] 在测量阶段中,得到了两个S盒运算指令对应的能量迹片段 和 计算两者相关系数,第一字节x0和第二字节x1的正确输入差分Δ0,1可以由如下得出:
[0079]
[0080] 对于所有的α∈GF(28)都要计算相应的相关系数 正确的输入Δ0,1将产生最大的相关系数,错误的输入Δ0,1对应相关系数会接近0。
[0081] 3、根据S盒中第一字节x0和第二字节x1输入差分以及第一字节x0与第三字节x2、第四字节x3的输入差分之间的线性关系,确定S盒中字节的轮密钥信息,从而获取第一轮的轮密钥rk0。
[0082] 4、在获取了第一轮4个字节轮密钥信息rk0后,按照相同的攻击方法依次获取第二、三、四轮的轮密钥rk1,rk2和rk3。
[0083] 5、最后由前4轮的轮密钥和密钥扩展算法反推出原始的128比特工作密钥。具体如下:
[0084]
[0085]
[0086]
[0087]
[0088] 其中,MK表示原始工作密钥, i=0,1,2,3;
[0089] rki表示轮密钥, i=0,1,2,3…31;
[0090] CKi表示固定参数,其取值方法为:设cki,j为CKi的第j个字节(i=0,1,2,3…31;j=0,1,2,3),即CKi=(cki,0,cki,1,cki,2,cki,3),则:cki,j=(4i+j)×7mod256。
[0091] 相关碰撞攻击与相关能量攻击的不同之处在于:相关碰撞攻击将能量迹与能量模型进行相关性计算,而能量模型不能真实的反应实际的能量消耗,相关碰撞攻击将一个S盒运算对应的能量迹与另一个S盒运算的能量迹进行相关性计算。
[0092] 相关碰撞攻击与碰撞攻击的不同之处在于:相关碰撞攻击应用所有的能量迹计算相关性以恢复密钥关系。
[0093] 本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。如果本领域技术人员,在不脱离本发明的精神所做的非实质性改变或改进,都应该属于本发明权利要求保护的范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈