RSA私钥掩码运算方法、协处理器及RSA运算装置与流程

文档序号:14574520发布日期:2018-06-02 01:09阅读:430来源:国知局
RSA私钥掩码运算方法、协处理器及RSA运算装置与流程

本发明涉及电子技术领域,尤其是涉及一种RSA私钥掩码运算方法、协处理器及RSA运算装置。



背景技术:

RSA算法作为最有影响力的公钥密码算法,广泛应用于移动通信、网络传输、电子商务等领域。其中RSA私钥运算使用最为频繁,未经防护的RSA运算可能会受到SPA(简单能量分析)、DPA(差分能量分析)、CPA(相关性能量分析)等攻击。

目前常用的防护手段有掩码(包括掩底、掩指和掩模等)、均衡模乘和模平方等。常用的掩码方法需要一对互逆的随机数,这就需要处理器进行模逆运算,而模逆运算需要消耗大量的时间和资源。



技术实现要素:

有鉴于此,本发明的目的在于提供一种RSA私钥掩码运算方法、协处理器及RSA运算装置,以缓解现有技术中RSA掩码方法中存在的模逆运算需要消耗大量的时间和资源的技术问题。

第一方面,本发明实施例提供了一种用于RSA私钥掩码运算的协处理器,包括:控制器、模幂器、模乘器和模加器;

所述控制器,用于在接收到主处理器发送的启动运算指令时,获取待解密内容m、随机数r、公钥e、私钥d以及RSA算法的模数n,以及将所述解密内容发送给所述主处理器;

所述模加器,用于计算e-1,以及,计算d-1;

所述模幂器,用于基于所述e-1计算re-1modn,基于所述mremodn和所述d-1计算(mre)d-1modn;

所述模乘器,用于基于所述re-1modn和m计算mre-1modn,基于所述mre-1modn和r计算mre-1·rmodn,得到mremodn,以及,基于所述(mre)d-1modn和所述mre-1modn计算(mre)d-1·mre-1modn,得到解密内容mdmodn,将所述解密内容mdmodn发送给所述控制器。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述模幂器基于所述mremodn和所述d-1,通过蒙哥马利阶梯算法计算(mre)d-1modn。

第二方面,本发明实施例提供了一种用于RSA私钥掩码运算的协处理器,包括:控制器、模幂器、模乘器和模加器;

所述控制器,用于在接收到主处理器发送的启动运算指令时,获取待解密内容m的模p值mp、随机数r、公钥ep、私钥dp以及素数p,其中p为RSA算法大素数对中的任一个,mp=mmodp,以及将所述解密内容发送给所述主处理器;

所述模加器,用于计算ep-1,以及,计算dp-1;

所述模幂器,用于基于所述ep-1计算modp,基于所述modp和所述dp-1计算modp;

所述模乘器,用于基于所述modp和mp计算modp,基于所述modp和r计算得到modp,以及,基于所述modp和所述modp计算得到modp,将解密内容的模p值modp发送给所述控制器。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述模幂器基于所述modp和所述dp-1,通过蒙哥马利阶梯算法计算modp。

第三方面,本发明实施例提供了一种RSA运算装置,包括:主处理器和如第一方面任一所述的用于RSA私钥掩码运算的协处理器;

所述主处理器,用于通过AHB总线向所述协处理器发送启动运算指令,并接收所述解密内容。

第四方面,本发明实施例提供了一种RSA运算装置,包括:主处理器和如第二方面任一所述的用于RSA私钥掩码运算的协处理器;

所述主处理器,用于通过AHB总线向所述协处理器发送启动运算指令,并接收所述解密内容。

第五方面,本发明实施例提供了一种RSA私钥掩码运算方法,应用于用于RSA私钥掩码运算的协处理器中的控制器,所述协处理器还包括:模幂器、模乘器和模加器,所述方法包括:

在接收到主处理器发送的启动运算指令时,获取待解密内容m、随机数r、公钥e、私钥d以及RSA算法的取模参数n;

控制所述模加器计算e-1;

控制所述模幂器基于所述e-1计算re-1modn;

控制所述模乘器基于所述re-1modn和m计算mre-1modn;

控制所述模乘器基于所述mre-1modn和r计算mre-1·rmodn,得到mremodn;

控制所述模加器计算d-1;

控制所述模幂器基于所述mremodn和所述d-1计算(mre)d-1modn;

控制所述模乘器基于所述(mre)d-1modn和所述mre-1modn计算(mre)d-1·mre-1modn,得到mdmodn;

将所述mdmodn的解密内容发送给所述主处理器。

结合第五方面,本发明实施例提供了第五方面的第一种可能的实施方式,其中,所述模幂器基于所述mremodn和所述d-1,通过蒙哥马利阶梯算法计算(mre)d-1modn。

第六方面,本发明实施例提供了一种RSA私钥掩码运算方法,应用于用于RSA私钥掩码运算的协处理器中的控制器,所述协处理器还包括:模幂器、模乘器和模加器,所述方法包括:

在接收到主处理器发送的启动运算指令时,获取待解密内容m的模p值mp、随机数r、公钥ep、私钥dp以及素数p,其中p为RSA算法大素数对中的任一个,mp=mmodp,

控制所述模加器计算ep-1;

控制所述模幂器基于所述ep-1计算modp;

控制所述模乘器基于所述modp和mp计算modp;

控制所述模乘器基于所述modp和r计算得到modp;

控制所述模加器计算dp-1;

控制所述模幂器基于所述modp和所述dp-1计算modp;

控制所述模乘器基于所述modp和所述modp计算得到modp;

将解密内容的模p值modp的发送给所述主处理器

结合第六方面,本发明实施例提供了第六方面的第一种可能的实施方式,其中,所述模幂器基于所述modp和所述dp-1,通过蒙哥马利阶梯算法计算modp。

本发明实施例带来了以下有益效果:本发明实施例可以在实现RSA协处理器的过程中,通过巧妙地运用欧拉定理和指数减一操作,避免了掩底后的求逆操作,从而使掩底代价大大降低。该协处理器利用了将md转化为(mre)d-1·mre-1。由于通常公钥e的位长较小,所以计算re代价很小。该处理器结合蒙哥马利阶梯算法和掩指方法可构成一个完整的安全模幂算法。该算法在抵抗侧信道攻击和故障攻击等方面具有较强的安全性。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

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

图1为本发明实施例提供的一种用于RSA私钥掩码运算的协处理器的结构示意图;

图2为本发明实施例提供的一种操作分解流程图;

图3为本发明实施例提供的一种RSA运算装置的结构示意图。

具体实施方式

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

目前常用的防护手段有掩码(包括掩底、掩指和掩模等)、均衡模乘和模平方等。常用的掩码方法需要一对互逆的随机数,这就需要处理器进行模逆运算,而模逆运算需要消耗大量的时间和资源,基于此,本发明实施例提供的一种RSA私钥掩码运算方法、协处理器及RSA运算装置,可以在实现RSA协处理器的过程中,通过巧妙地运用欧拉定理和指数减一操作,避免了掩底后的求逆操作,从而使掩底代价大大降低。该协处理器利用了将md转化为(mre)d-1·mre-1。由于通常公钥e的位长较小,所以计算re代价很小。该处理器结合蒙哥马利阶梯算法和掩指方法可构成一个完整的安全模幂算法。该算法在抵抗侧信道攻击和故障攻击等方面具有较强的安全性。

为便于对本实施例进行理解,首先对本发明实施例所公开的一种用于RSA私钥掩码运算的协处理器进行详细介绍,在本发明实施例中,协处理器是指一种为减轻系统微处理器负担的专用处理器。

公钥密码:公钥密码学的概念是由Whitfield Diffie和Martin Hellman提出的,另外,Ralph Merkle也独立提出了此概念。公钥密码采用数学函数作为基本工具,创造性地使用了两个不同的密钥(公开密钥和私密密钥,简称公钥和私钥,从私钥无法推出公钥),从而对保密性、密钥分配和管理以及签名认证等都具有深刻的意义。

RSA:RSA是一种公钥加密算法,以它的三个发明人Ron Rivest、Adi Shamir和Leonard Adleman的名字首字母命名。RSA作为迄今为止理论上最完善的公钥密码体制,得到了广泛的应用。它的理论基础是两个大素数乘积的因式分解的困难性,从一个公钥和密文中恢复出明文的困难性等价于分解两个大素数的乘积。RSA的主要运算是模幂运算。

模幂:mdmodn,即同一个数的多次模乘运算,m是模幂的底数,d是模幂的指数,n是模幂的模数。

私钥运算:RSA运算的解密运算和签名的验证运算是私钥运算,进行这两种运算时,私钥是模幂的指数。

欧拉定理:设n为大于1的整数,a∈Z且a与n互素,则

RSA-CRT:使用中国剩余定理对RSA私钥运算进行分解的一种方法,可将模n的模幂转化成一个模p的模幂和一个模q的模幂。

掩码:通过多种方式对关键数据进行掩盖。

掩指:对指数进行掩码,由欧拉定理可知所以以这种方式用随机数k对指数d进行掩码并不改变运算结果。

掩底:对底数进行掩码,为保证结果的正确性,往往需要在模幂结束后去掉掩码。

掩模:对模数进行掩码,为保证结果的正确性,需要在模幂结束后将模幂结果再取模。

蒙哥马利阶梯:RSA模幂运算的一种展开算法,整个过程需要两个大数暂存空间T0(初值为1)和T1初值为m,每处理指数的一位,T0和T1就更新为新值,当处理的指数位为0时,T0更新为T02modn,T1更新为T0·T1modn,当处理的指数位为1时,T0更新为T1·T0modn,T1更新为T12modn。

模逆:对于整数p和a(a∈[1,p-1]),若存在整数i∈[1,p-1],使得i·a≡1modp,则i为a的模逆,记作i≡a-1modp,当p为素数时,i一定存在且唯一。

侧信道攻击:密码分析者利用密码系统运行过程中产生的执行时间、功率消耗、电磁辐射、故障输出等旁路信息泄露结合密码算法的输入、输出和设计细节进行的密码分析称为侧信道攻击。

故障攻击:通过对密码设备进行故障注入进行的攻击。

在实际应用中,RSA算法有两种模式:非CRT模式和CRT模式,在本发明实施例中,将针对非CRT模式的情况进行说明。

如图1所示,用于RSA私钥掩码运算的协处理器10包括:控制器11、模幂器12、模乘器13和模加器14;

所述控制器22,用于在接收到主处理器发送的启动运算指令时,获取待解密内容m、随机数r、公钥e、私钥d以及RSA算法的模数n,以及将所述解密内容发送给所述主处理器;

所述模加器14,用于计算e-1,以及,计算d-1;

所述模幂器12,用于基于所述e-1计算re-1modn,基于所述mremodn和所述d-1计算(mre)d-1modn;

所述模乘器13,用于基于所述re-1modn和m计算mre-1modn,基于所述mre-1modn和r计算mre-1·rmodn,得到mremodn,以及,基于所述(mre)d-1modn和所述mre-1modn计算(mre)d-1·mre-1modn,得到解密内容mdmodn,将所述解密内容mdmodn发送给所述控制器。

也即用于RSA私钥掩码运算的协处理器的输入:待解密内容m(待解密内容m可以指解密中的密文或签名中的消息)、随机数r、公钥e、私钥d以及RSA算法的取模参数n;

输出:s=mdmodn(解密内容s可以指解密出的明文或签名值)。

在本发明实施例中,所述模幂器基于所述mremodn和所述d-1,通过蒙哥马利阶梯算法计算(mre)d-1modn。

图2是本发明的操作分解流程图,按照箭头的方向将mdmodn进行分解后再合并,最后得到(mre)d-1·mre-1modn。

本发明在实现RSA协处理器的过程中,通过巧妙地运用欧拉定理和指数减一操作,避免了掩底后的求逆操作,从而使掩底代价大大降低。该协处理器利用了将md转化为(mre)d-1·mre-1。由于通常公钥e的位长较小,所以计算re代价很小。该处理器结合蒙哥马利阶梯算法和掩指方法可构成一个完整的安全模幂算法。该算法在抵抗侧信道攻击和故障攻击等方面具有较强的安全性。

在实际应用中,在本发明的又一实施例中,本协处理器结合了蒙哥马利阶梯算法和掩指算法,具体按以下步骤进行:

输入:待解密内容m、随机数r、公钥e、私钥d以及RSA算法的模数n;

输出:s=mdmodn;

步骤1、取t位随机数r,其中t为n的位长;

步骤2、取w位随机数k,w可根据所需安全强度选择16、32或64等;

步骤3、即掩指;

步骤4,模加器计算e-1;

步骤5、模幂器基于所述e-1计算re-1modn;

1)、i←t-1,其中t为e-1的位长;

2)、当(e-1)i=0时,重复执行:i←i-1;

3)、若i=0,则返回r,否则执行:i←i-1

4)、T←r2modn;

若(e-1)i=1,则T←T·rmodn;

5)、当i≠0时,重复执行:i←i-1;T←T2modn

若(e-1)i=1,则T←T·rmodn;

6)、返回T。

步骤6、模乘器基于所述re-1modn和m计算m·re-1modn,得到mre-1modn;

步骤7、模乘器基于所述mre-1modn和r计算mre-1·rmodn,得到mremodn;

步骤8、模加器计算d'-1;

步骤9、控制所述模幂器基于所述mremodn和所述d'-1计算(mre)d'-1modn;

1)、i←t',其中t'为d'-1的位长;

2)、T0←1,T1←mre

3)、当i≠0时,重复执行4)

4)、

i←i-1;

5)、返回T0

步骤10、由欧拉定理可知md'modn=mdmodn=s,所以模乘器基于所述(mre)d'-1modn和所述mre-1modn计算(mre)d'-1·mre-1modn,得到md'modn(由欧拉定理可知red'-1≡red-1≡1modn),将所述mdmodn的解密内容发送给所述主处理器。

在进行RSA-CRT运算时,基于前述实施例,在本发明的又一实施例中,还提供一种用于RSA私钥掩码运算的协处理器,包括:控制器、模幂器、模乘器和模加器;

所述控制器,用于在接收到主处理器发送的启动运算指令时,获取待解密内容m的模p值mp、随机数r、公钥ep、私钥dp以及素数p,其中p为RSA算法大素数对中的任一个,mp=mmodp,以及将所述解密内容发送给所述主处理器;

所述模加器,用于计算ep-1,以及,计算dp-1;

所述模幂器,用于基于所述ep-1计算modp,基于所述modp和所述dp-1计算modp;

所述模乘器,用于基于所述modp和mp计算modp,基于所述modp和r计算得到modp,以及,基于所述modp和所述modp计算得到modp,将解密内容s的模p值modp发送给所述控制器。

也即用于RSA私钥掩码运算的协处理器的输入:待解密内容m的模p值mp(待解密内容m可以指解密中的密文或签名中的消息)、随机数r、公钥ep、私钥dp以及素数p;

输出:(解密内容s可以指解密出的明文或签名值)。

在本发明实施例中,所述模幂器基于所述modp和所述dp-1,通过蒙哥马利阶梯算法计算modp。

在实际应用中,在本发明的又一实施例中,结合蒙哥马利阶梯算法和掩指算法,具体可以按以下步骤进行:

输入:待解密内容m的模p值mp、随机数r、公钥ep、私钥dp以及素数p;

输出:

步骤1、取t位随机数r,其中t为p的位长;

步骤2、取w位随机数k,w可根据所需安全强度选择16、32或64等;

步骤3、即掩指;

步骤4,模加器计算ep-1;

步骤5、模幂器基于所述ep-1计算modp;

1)、i←t-1,其中t为ep-1的位长;

2)、当(ep-1)i=0时,重复执行:i←i-1;

3)、若i=0,则返回r,否则执行:i←i-1

4)、T←r2modp;

若(ep-1)i=1,则T←T·rmodp;

5)、当i≠0时,重复执行:i←i-1;T←T2modp;

若(ep-1)i=1,则T←T·rmodp;

6)、返回T。

步骤6、模乘器基于所述modp和mp计算得到

步骤7、模乘器基于所述modp和r计算得到modp;

步骤8、模加器计算dp'-1;

步骤9、模乘器基于所述modp和所述dp'-1计算modp;

1)、i←t',其中t'为dp'-1的位长;

2)、T0←1,

3)、当i≠0时,重复执行4);

4)、

i←i-1;

5)、返回T0

步骤10、由欧拉定理可知所以模乘器基于所述modp和所述modp计算得到modp,将解密内容的模p值modp发送给所述主处理器。

本算法对RSA-CRT适用性的原理说明:

由于

由于所以,

如图3所示,在本发明的又一实施例中,还提供一种RSA运算装置,包括:主处理器20和如前述实施例所述的用于RSA私钥掩码运算的协处理器10;

所述主处理器20,用于通过AHB总线向所述协处理器10发送启动运算指令,并接收所述解密内容。

在本发明的又一实施例中,还提供一种RSA运算装置,包括:主处理器和如前述实施例所述的用于RSA私钥掩码运算的协处理器;

所述主处理器,用于通过AHB总线向所述协处理器发送启动运算指令,并接收所述解密内容。

在本发明的又一实施例中,还提供一种RSA私钥掩码运算方法,应用于用于RSA私钥掩码运算的协处理器中的控制器,所述协处理器还包括:模幂器、模乘器和模加器,所述方法包括:

在接收到主处理器发送的启动运算指令时,获取待解密内容m、随机数r、公钥e、私钥d以及RSA算法的取模参数n;

控制所述模加器计算e-1;

控制所述模幂器基于所述e-1计算re-1modn;

控制所述模乘器基于所述re-1modn计算mre-1modn;

控制所述模乘器基于所述mre-1modn和r计算mre-1·rmodn,得到mremodn;

控制所述模加器计算d-1;

控制所述模幂器基于所述mremodn和所述d-1计算(mre)d-1modn;所述模幂器基于所述mremodn和所述d-1,通过蒙哥马利阶梯算法计算(mre)d-1modn。

控制所述模乘器基于所述(mre)d-1modn和所述mre-1modn计算(mre)d-1·mre-1modn,得到mdmodn;

将所述mdmodn的解密内容发送给所述主处理器。

在本发明的又一实施例中,还提供一种RSA私钥掩码运算方法,应用于用于RSA私钥掩码运算的协处理器中的控制器,所述协处理器还包括:模幂器、模乘器和模加器,所述方法包括:

在接收到主处理器发送的启动运算指令时,获取待解密内容m的模p值mp、随机数r、公钥ep、私钥dp以及素数p,其中p为RSA算法大素数对中的任一个,mp=mmodp,

控制所述模加器计算ep-1;

控制所述模幂器基于所述ep-1计算modp;

控制所述模乘器基于所述modp计算modp;

控制所述模乘器基于所述modp和r计算得到modp;

控制所述模加器计算dp-1;

控制所述模幂器基于所述modp和所述dp-1计算modp;所述模幂器基于所述modp和所述dp-1,通过蒙哥马利阶梯算法计算modp。

控制所述模乘器基于所述modp和所述modp计算得到modp;

将解密内容的模p值modp发送给所述主处理器。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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