一种高效抗差分功耗分析RSA实现方法与流程

文档序号:14717648发布日期:2018-06-16 01:53阅读:372来源:国知局

本发明涉及信息加密,特别是需要抗差分功耗分析(DPA)的RSA实现方法。



背景技术:

近年来,密码算法的旁路攻击越来越受到关注和研究。旁路攻击(Side Channel Attacks,SCA)利用算法在电路中运行时所泄漏出来的非特意的信息从而分析出算法电路中的秘密数据。功耗分析是目前旁路攻击中最热门、研究最为广泛的类型,通过监测加密系统泄露的电流和电压等物理信息来进行攻击。功耗分析按照攻击手段主要可分为简单功耗分析(Simple Power Analysis,SPA)和差异功耗分析(Differential Power Analysis,DPA)两种,分别针对电路不同的弱点。简单功耗分析通过观察算法电路运行时的功耗特征来进行攻击;差异功耗分析对大量的明文(或密文)和功耗曲线进行统计分析获取密钥信息。

差异功耗分析的关键手段之一就是需要在算法运行时找出一个观察点,以便根据该观察点的值来进行功耗分组。差异功耗分析的基本步骤为首先采集大量的功耗曲线,然后根据选定的观察点对这些功耗曲线进行分组。假设中间数据被盲化,攻击者功耗分组失去依据。

对于硬件实现的RSA算法,差异功耗分析是最需要防范的。抵御差异功耗分析的常用方法为盲化方案,盲化方案包括底数盲化和指数盲化。传统的底数盲化方案为:

M1=M*Re mod N

C’=M1d mod N

C=C’*R-1mod N

其中M为输入数据,C为输出数据,N为模数,R为随机数,e为公钥,d为私钥。

传统方案用随机数对输入数据进行了盲化,使得攻击者无法对RSA实施差分功耗分析。但是这种方案需要的计算量十分大,尤其在脱盲过程中需要进行模逆运算。而模逆运算的实现方法通常都十分复杂,并且十分耗时,因此这种方法无法在资源受限的环境下进行实现。本发明对传统方案进行的改进,在不影响安全性的前提下,避免了其中最复杂的模逆运算,用较易实现的模乘运算取代了模逆运算,提升了整体的运算效率,并且能够减少实现面积和空间。



技术实现要素:

本发明要解决的技术问题是提供一种高效抗差分功耗分析RSA实现方法,能够避免实现复杂的模逆运算,提高RSA运算效率,节省RSA算法空间。为解决上述技术问题,本发明提供一种基于高效抗差分功耗分析RSA实现方法,并给出了采用该方法的一个RSA CRT实现方法的实现实例。本发明用于高效抗差分功耗分析RSA实现方法如下:

(1)RSA运算中M为输入数据,C为输出数据,N为模数,R为随机数,e为公钥,d为私钥,p和q 为大素数,并且N=p*q。

(2)获取随机数R,随机数必须大于零,且不能是p或q,也不能大于等于N。

(3)计算盲化后的输入数据M1,M1=M*Re mod N。

(4)计算用于脱盲运算的数据M2,M2=M*Re-1mod N。

(5)对盲化数据后的数据M1进行运算得到盲化的输出结果C’,C’=M1d-1mod N。

(6)脱盲计算得到输出数据C,C=C’*M2mod N。

所述步骤1到步骤6中的实现方法,适用的应用场景包括但不限于‘直接RSA运算’、‘RSACRT运算’等。

其实现原理推导如下:

根据M1=M*Re mod N,M2=M*Re-1mod N,可推导出M2=M1*R-1mod N;

根据C’=M1d-1mod N和M2,可推导出

C=C’*M2mod N=M1d-1*M1*R-1mod N=M1d*R-1mod N,与传统盲化方案计算结果一致。并且本发明提出的方法不会影响实现的安全性,与传统方法的安全性没有差异。在运算的初始阶段即对输入数据进行盲化,并在运算的结束阶段对输出数据进行脱盲,使得整个运算期间的中间数据都被盲化。攻击者无法找到任何明文中间数据来进行功耗分析,从而无法推测敏感信息。

本发明的有益效果在于:本发明对传统方案进行的改进,避免了其中最复杂的模逆运算,用较易实现的模乘运算取代了模逆运算。模逆运算的实现方法通常都十分耗时,在硬件实现中,运算时间通常是模乘运算的二十倍,在软件实现中,运算时间相比模乘则更长。并且模逆运算的实现方法实现面积和空间都十分大,在资源受限的环境下无法进行实现。而模乘运算是公钥算法的核心基础运算,通常的公钥实现中都已包含模乘运算。和传统方法相比,本发明的实现方法避免了模逆运算,增加了计算M2=M*Re-1mod N 的运算。该运算包括模乘运算和模幂运算,其中模幂运算Re-1同样可以分解成模乘运算。且该模幂运算的幂指数为e-1,在RSA运算中e通常取17和65537,因此如果使用平方乘算法的话,计算该模幂运算需要的模乘运算操作个数也极少。因此本发明能够加速RSA实现,并且减少实现面积和空间。

本发明对传统方案进行的改进,在不影响安全性的前提下,避免了其中最复杂的模逆运算,用较易实现的模乘运算取代了模逆运算,提升了整体的运算效率,并且能够减少实现面积和空间。本发明的其他优点,目的和特征将部分地在随后的描述中阐明,并且对本领域普通技术人员来说,部分内容将在审查下列内容时变得清楚,或者可以由本发明的实践而得知。利用在书面描述及其权利要求中具体指出的结构,可以实现和达到本发明的目的和其他优点。

具体实施方式

本发明提供了一种基于高效抗差分功耗分析RSA实现方法,该实现方法可用于直接RSA运算以及RSA CRT运算。RSA CRT实现方法的实现实例流程描述如下:

步骤1,RSACRT运算中M为输入数据,C为输出数据,N为模数,R为随机数,e为公钥,d为

私钥,p和q为大素数,并且N=p*q。

步骤2,获取64位非0随机数R

步骤3,计算盲化后的输入数据M1,M1=M*Re mod N。

步骤4,计算用于脱盲运算的数据M2,M2=M*Re-1mod N

步骤5,计算指数值,dp=(d-1)mod(p-1)

dq=(d-1)mod(q-1)

步骤6,计算Mp、Mq,Mp=M1mod p

Mq=M1mod q

步骤7,计算Sp、Sq,Sp=Mpdp mod p

Sq=Mqdq mod q

步骤8,计算盲化的输出结果C’=((Sp–Sq)*(q-1mod p)mod p)*q+Sq

步骤9,脱盲得到输出数据C,C=C’*M2mod N。

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