公开/公告号CN104780051A
专利类型发明专利
公开/公告日2015-07-15
原文格式PDF
申请/专利号CN201510199567.0
申请日2015-04-24
分类号H04L9/32(20060101);H04L9/30(20060101);
代理机构
代理人
地址 610225 四川省成都市西南航空港经济开发区学府路一段24号
入库时间 2023-12-18 09:57:47
法律状态公告日
法律状态信息
法律状态
2019-04-12
授权
授权
2015-10-14
实质审查的生效 IPC(主分类):H04L9/32 申请日:20150424
实质审查的生效
2015-07-15
公开
公开
技术领域
本发明涉及密码算法分析检测领域,尤其涉及针对SM2公钥密码加密算法的侧信道攻击的方法。
背景技术
随着信息和分析电路技术的发展,对硬件密码电子设备的破解不再单纯的停留在协议和算法上,而是从其处理数据的过程中泄露的信息入手,进行破解。硬件密码电子设备在处理信息的工程中存在能量、电磁、错误和时间等信息的泄露,利用这些泄露的信息对密码电子设备进行攻击,就是所谓的侧信道攻击(Side Channel Attacks),侧信道攻击可分为能量分析攻击、电磁攻击和错误攻击等,其中能量分析攻击因效率较高,成为侧信道的主要手段。
侧信道攻击是通过采集加密芯片等硬件密码电子设备在进行加、解密或签名等操作时产生的能量消耗或者电磁,利用密码学和统计学原理等,分析和破译密钥信息的一种攻击方式,侧信道能量/电磁分析攻击又分为简单能量/电磁分析攻击、差分能量/电磁分析攻击和相关性能量/电磁分析攻击。
在侧信道能量分析攻击中,差分能量/电磁分析攻击的过程如下:
(1)随机选择N组不相同明文或密文Mi (i∈[1,N])进行加/解密运算,采集每组明文进行加密运算时设备产生的能量曲线/电磁曲线Ti (t),t∈{1,…,k},其中k为能量轨迹的采样点数。
(2)选择密钥Ki(l∈Ω,Ω为密钥空间),计算在Ki和Mi条件下,密码算法进行加密运算时在被攻击点产生的中间值Di,l。
(3)根据中间值Di,l确定选择函数F(Mi, Ki),根据选择函数将Ti (t)分为两个子集S0和S1,定义式如下:
={Ti(t)|F(Mi, Ki)=0}
={Ti(t)|F(Mi, Ki)=1}
(4)计算每个采样点上两个子集的能量/电磁平均之差,如S= - 所示,其中|S0|和|S1|分别表示集合S0和S1中元素的个数。
若Ki选择不正确,当N比较大时,两个子集均值差S将趋近于零;若Ki选择正确,在均值差S中将会出现一个最大尖峰,通过该尖峰即可确定Ki选择正确。
相关性能量/电磁分析攻击的过程如下:
(1)随机选择N组不相同明文或密文Mi (i∈[1,N])进行加/解密运算,采集每组明文进行加密运算时设备产生的能量曲线/电磁曲线Ti(t),t∈{1,…,k},其中k为能量轨迹的采样点数。
(2)选择密钥Ki(l∈Ω,Ω为密钥空间),计算在Ki和Mi条件下,密码算法进行加密运算时在被攻击点产生的中间值Di,l。
(3)取中间值Di,l的汉明距离或者汉明重量建立能量模型hi,l,根据
= 式计算Ti和hi相关性ρl。
(4)取相关系数最大值时对应的Ki,即为实际密钥。
国家密码管理局于2010年12月17日发布了SM2椭圆曲线公钥密码算法,并要求为对现有基于RSA算法的加解密系统、电子认证系统、密钥管理系统、应用系统进行升级改造。
SM2公钥密码加密算法规定发送者用接收者的公钥将消息加密成密文,接收者用在自己的私钥对收到的密文进行解密还原成原始消息。
设需要发送的消息为比特串M,klen为M的比特长度。
为了对明文M进行加密,作为加密者的用户A应实现以下运算步骤(如图1):
A1:用随机数发生器产生随机数k[1,n-1];
A2:计算椭圆曲线点C1=[k]G=(x1,y1),按照SM2椭圆曲线公钥密码算法中的字节串到比特串的转换和点到字节串的转换规则,将C1的数据类型转换为比特串;
A3:计算椭圆曲线点S=[h]PB,若S是无穷远点,则报错退出;
A4:计算椭圆曲线点[k]PB =( x2,y2),按照SM2椭圆曲线公钥密码算法中的字节串到比特串的转换和域元素到字节串的转换规则,将坐标x2、y2的数据类型转换为比特串;
A5:计算t=KDF(x2|| y2,klen),若t为全0比特串,则返回A1;
A6:计算C2=M⊕t;
A7:计算C3=Hash(x2|| M||y2);
A8:输出密文C= C1|| C2||C3。
发明内容
本发明的目的是提供一种针对SM2公钥密码加密算法的侧信道攻击的方法,已解决没有SM2公钥密码加密算法的私钥的情况下,无法从现有SM2椭圆曲线公钥密码加密运算中获取被加密的秘密信息的问题。
为解决上述技术问题,针对SM2公钥密码加密算法的侧信道攻击的方法,攻击流程图如图2所示,具体包括以下步骤:
S1:获取设备对被攻击信息进行加密运算时的能量曲线/电磁曲线Tn(t),采集到的总的曲线条数为N,以及对应的密文输出Cn,Cn=Cn,1||Cn,2||Cn,3;
S2:选择加密运算过程中的Cn,2=M⊕t作为攻击点,将将M作为攻击的对象,t作为攻击的中间数据实施侧信道攻击,即可获取被加密的信息。
进一步地,S2中采用的侧信道攻击方法为相关性能量/电磁分析攻击方法包括以下步骤:
S211:取M的二进制比特长度为k,攻击的二进制比特长度为L,攻击的起始比特位j=1;
S212:获取Mj,j+L-1的所有可能值,表示为m∈[0,2L-1]),根据m和第n条曲线对应的密文Cn,计算攻击的中间数据t=m⊕Cn,2,能量模型选择汉明重量模型,则计算t的汉明重量,表示为hn,c=HW(t);
S213:根据计算Tn(t)和hn,C,m的相关性系数ρn,c,m;
S214:取相关系数最大值时对应的m,即为Mj,j+L-1对应的实际数据;
S215:使j=j+L,如果j+L-1≥k,取L=k-j+1,否则L保持不变,跳转到步骤S212继续攻击M剩余的比特数据,直到M的所有比特被攻击完为止。
进一步地,S2中采用的侧信道攻击方法为差分能量/电磁分析攻击方法包括以下步骤:
S221:取M的二进制比特长度为k,攻击的二进制比特长度为L,攻击的起始比特位j=1;
S222:获取Mj,j+L-1的所有可能值,表示为m∈[0,2L-1]),根据m和第n条曲线对应的密文Cn,计算攻击的中间数据t=m⊕Cn,2,能量模型选择汉明重量模型,则计算t的汉明重量,表示为hn,c=HW(t);
S223:如果L=1,确定差分选择函数F(Cn,m,hn,c)=;如果L不为1,确定差分选择函数为:F(Cn,m,hn,c)=;
S224:根据选择函数将Tn(t)分为两个子集S0和S1,S0和S1定义式如下所示:
S0={Ti(t)| F(Cn,m,hn,c) =0},
S1={ Ti(t)| F(Cn,m,hn,c)=1};
S225:根据S= - 计算每个采样点上两个子集的能量/电磁平均之差,在均值差S中出现一个最大尖峰时对应的m,即为Mj,j+L-1对应的实际数据;
S226:使j=j+L,如果j+L-1≥k,取L=k-j+1,否则L保持不变,跳转到步骤S222继续攻击M剩余的比特数据,直到M的所有比特被攻击完为止。
本发明的有益效果为:本方法创造性的使用侧信道攻击解决了没有SM2椭圆曲线公钥密码加密的私钥的情况下,破解SM2椭圆曲线公钥密码加密的信息,此外本方法选取了恰当的攻击对象,提高了采样能量信息的信噪比和分析的成功率,本方法创造性地选择C2=M⊕t作为侧信道分析攻击的攻击点,提高了正确的猜测秘密信息和泄露信息之间的相关性,增强了分析有效性和成功率,本方法可以根据实际的计算能力,选择合适长度的比特进行攻击,从而增强了分析灵活性、有效性和成功率。
附图说明
图1为SM2公钥密码加密算法流程图;
图2为针对SM2公钥密码加密算法的侧信道攻击方法的流程图。
机译: 用于防止侧信道攻击的方法执行加密算法的算术运算混合布尔和算术运算
机译: 用于在解密操作期间向加密设备提供针对针对扩展的欧几里得算法的侧信道攻击的防御的系统和方法
机译: 具有针对侧信道攻击的抗篡改特性的密码处理方法