一种基于SPA和零值判断高效获得私钥的方法与流程

文档序号:12751528阅读:545来源:国知局

本发明涉及信息安全领域,特别涉及一种基于SPA和零值判断高效获得私钥的方法。



背景技术:

RSA公钥加密算法是信息安全领域中比较主流的公钥密码技术。基于RSA实现的各种Key及智能卡已经广泛应用于金融、通信、社保、交通等各个领域。为了保障Key及智能卡的安全性,需要研究各种攻击方法对这些产品的威胁程度。目前比较流行的攻击方法包括侧信道攻击(Side Channel Attack,简称SCA)。其中SCA攻击方法中的简单功耗分析攻击(Simple Power Analysis Attacks,简称SPA)和差分功耗分析攻击(Differential Power Analysis Attacks,简称DPA),以及错误注入攻击(Fault Injection Attack,简称FIA)最为普遍。

现有技术中对RSA算法的SPA攻击,主要是针对二进制实现的模幂运算。由于P和Q范围限制,对M在[1,(2^512)-1]范围内取值,当M取值小于等于P时,(SP-SQ)mod P计算一次减法,否则计算一次减法一次加法。根据运算的功耗差异逼近P,即攻击出私钥。这种SPA攻击方法中,攻击点的差异可能比较小,且部分实现中可能没有差异。该方法及装置很容易被防护,即不能发挥攻击密钥的作用。



技术实现要素:

本发明的目的是提供一种基于SPA和零值判断高效获得私钥的方法。

本发明提供了一种基于SPA和零值判断高效获得私钥的方法,该方法针对RSA CRT运算合成步骤中模减运算进行攻击。RSA运算时,需要计算(((SP-SQ)*Qinv)mod P)*Q+SQ,如果(((SP-SQ)*Qinv)mod P)*Q部分运算在运算过程中产生0值,则0+SQ和非0+SQ在功耗上能产生相当大的差异,如果有差异根据该差异能分析出RSA CRT私钥。该方法能够有效评估出现有RSA CRT签名方案中是否存在被攻击的可能,即是否存在被攻击的漏洞。

为了实现上述目的,本发明提供一种基于SPA和零值判断高效获得私钥的方法,包含步骤:

(a)设置RSA的模数N的长度为2t,设置e为小于n的任意比特;

(b)选择明文M,长度等于N的长度2t,等分M为两部分,分别为MH、ML长度均为t,且M=MH||ML;

(c)设置MH的所有比特位为0,ML的所有比特位为1,计算C=M^e mod N,把C的值输入被攻击芯片进行签名或解密操作,得到功耗曲线trace1;

(d)设置MH的所有比特位为0,ML的第0比特位、1比特位设置为1,其余比特位设置为0,计算C=M^e mod N,把C的值输入被攻击芯片进行签名或解密操作,得到功耗曲线trace2;

(e)对比trace1、trace2,分析出RSA CRT签名最后一步加法的功耗曲线,其中执行零加SQ的功耗曲线记为trace4;执行非零加SQ的功耗曲线记为trace5;

(f)设置MH的所有比特位为0,ML的所有比特位为1,当i从t-1到1,执行如下过程:计算C=M^e mod N,把C的值输入被攻击芯片进行签名或解密运算,得到trace3;

(g)判断trace3中最后一次加法的子功耗trace6,如果trace6等同于trace4,则当前比特设置为1,或者当前比特设置为0;

(h)计算C=M^e mod N,把C输入被攻击芯片进行签名或解密运算,如果(RSA CRT签名最后一步加法的功耗曲线等同于trace5,则输出M的值即为攻击出的素数;反之,输出未攻击成功。

根据本发明提供的具体实施例,本发明公开了以下技术效果:

本发明的有益效果是,本发明的方法用来攻击的功耗部分相对已有的方案中的功耗部分,差异更大,更容易实施。能快速方便检测RSA CRT签名算法是否存在被攻击的漏洞。能检测我们设计的RSA CRT签名算法是否能防止该攻击。

本发明能有效检测出防护方案中对明文M的掩码是否能防止私钥被攻击。本发明亦能有效检测出方案中CRT的实现过程是否存在漏洞。

附图说明

为了更清楚地说明本发明实施例或现有技术中的方案,下面将对实施例中所需要使用的附图作简单的介绍,显而易见,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一种基于SPA和零值判断高效获得私钥的方法的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的目的是提供一种基于SPA和零值判断高效获得私钥的方法。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

实施例1:

一种基于SPA和零值判断高效获得私钥的方法,RSA CRT的密钥分为公钥和私钥,其中e、N为RSA CRT的公钥;P、Q、DP、DQ、Qinv为RSA CRT私钥。

RSA CRT的一般签名过程如下:

MP=C mod P MQ=C mod Q

SP=MP^DP SQ=MQ^DQ

CRT(SP,SQ)=(((SP-SQ)*Qinv)mod P)*Q+SQ

进一步分析,(SP–SQ)mod P可以进行如下变形:

SP=(C mod P)^DP=(((M^e)mod N)mod P)^DP=(M^(e*DP))mod p=M mod P

SQ=(C mod Q)^DQ=(((M^e)mod N)mod Q)^DQ=(M^(e*DQ))mod Q=M mod Q

因此,(SP-SQ)mod P=(M mod P–M mod Q)mod P。CRT(SP,SQ)=((((M mod P–M mod Q)mod P)*Qinv)mod P)*Q+SQ=X+SQ。

以1024位RSA为例,P、Q的取值范围:P>Q属于[1,(2^512)-1];我们把该区间分为两部分,[1,Q)(区间一)、[Q,(2^512)-1](区间二)。当M的值落到区间一时,(SP-SQ)mod P=(M mod P–M mod Q)mod P=0;则X计算后的结果为0,即最后的运算为0+SQ。当M的值落到区间二时,(SP-SQ)mod P=(M mod P–M mod Q)mod P非0;则X为1024比特的数据,则最后一步为1024比特数据同512比特数据相加。由于大数据相加时,每种设计使用的方法不相同,因此当明文落到两个区间时,最后的加法在功耗上存在明显的区别。该专利通过选择M的原始值,并根据每步的结果调整M值,使M逼近素数q,从而破解出密钥。

本发明的方法用来攻击的功耗部分相对已有的方案中的功耗部分,差异更大,更容易实施。能快速方便检测RSA CRT签名算法是否存在被攻击的漏洞。能检测我们设计的RSA CRT签名算法是否能防止该攻击。

本发明能有效检测出防护方案中对明文M的掩码是否能防止私钥被攻击。本发明亦能有效检测出方案中CRT的实现过程是否存在漏洞。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1