实现椭圆曲线类型公共密钥加密算法的电子部件中的对策方法

文档序号:2389260阅读:296来源:国知局
专利名称:实现椭圆曲线类型公共密钥加密算法的电子部件中的对策方法
技术领域
本发明涉及在电子部件中实现椭圆曲线类型公共密钥加密算法的对策方法(countermeasure)。
在密钥加密技术的传统模型中,希望通过一个非安全信道通信的两个人必须先同意一个加密密钥K。加密函数和译码函数实现相同的密钥K。密钥加密系统的缺点是上述系统要求在任何已加密的信息在非安全信道上发送之前密钥必须先在两个人之间通过一个安全信道优先通信。实际上,发现一个很安全的通信信道通常是困难的,尤其在分离两个人的距离很远时。安全信道意味着对它来说知悉或修改在它上面通过的信息是不可能的。这样的安全信道可以通过连接由上述两人所拥有的两个终端的电缆来实现。
公共密钥加密概念由Whitfield Diffie和Martin Hellman在1976年发明。公共密钥加密技术使解决在非安全信道上密钥的分布问题成为可能。公共密钥加密的原理在于使用一对密钥,一个公共加密密钥和一个私有译码密钥。由观察的计算点去从公共加密密钥找到私有的译码密钥是不可行的。希望与B人交流信息的A人使用B人的公共加密密钥。只有B人拥有与它的公共密钥相关的私有密钥。因此只有B人能够破译送给他的信息。
密钥加密技术上公共密钥加密的另一个优势是公共密钥加密允许用电子签名授权。
公共密钥加密方案的第一个实施方案在1977年由Rivest Shamir和Adleman开发,他们发明了RSA加密系统。RSA安全性是基于把一个是两个质数乘积的大数进行因式分解的难度。
其后,提出了很多公共密钥加密系统,它们的安全性基于不同的计算问题(这个列表不是详细无遗的)-Merckle-Hellman背包(backpack)这个加密系统基于子集的和的问题的难度。
-McEliece
这个加密系统基于代数代码的理论。它基于线性代码的解码问题。
-E1 Gamal这个加密系统基于有限域中离散对数的难度。
-椭圆曲线椭圆曲线加密系统构成了对已有加密系统的修正以把它们应用于椭圆曲线领域。
椭圆曲线在加密系统中的使用分别由Victor Miller和NealKoblitz在1985年提出。椭圆曲线的实际应用早在二十世纪九十年代就被注意到了。
基于椭圆曲线的密码系统的优势是它们用较小的密钥尺寸提供等价于其它密码系统的安全性。密码尺寸中的这个存储减小了存储要求并缩短了计算时间,这使得椭圆曲线的使用尤其适合于智能卡类型的应用。
在一个有限域GF(q^n)(q是一个质数,n是一个整数)上的一个椭圆曲线是点(x,y)的集合且x(X-轴)和y(Y轴)属于GF(q^n),方程式的解为y^2=x^3+ax+b如果q大于或等于3及y^2+x*y=x^3+a*x^2+b如果q=2在加密中用得最多的两类椭圆曲线是下面两类1)在有限域GF(p)(整数模p的集合,p是一个质数)上定义的曲线,它的方程为y^2=x^3+ax=b2)定义在有限域GF(2^n)上的椭圆曲线,它的方程为y^2+xy=x^3+ax^2+b对这两类曲线中的每一类来说,定义点的加法操作如下给定两个点P和Q,和R=P+Q是曲线上的一个点,它的坐标按照Alfred JMenezes的著作“椭圆曲线公共密钥密码系统”中所给出的公式用点P和Q的坐标来表示。
这个加法操作使定义一个标量乘法操作成为可能给定属于椭圆曲线的一个点P和一个整数d,P由d标量乘的结果是Q=P+PP+…..+d次P。
椭圆曲线上加密算法的安全性基于椭圆曲线上离散对数的难度,上述问题包括,用属于椭圆曲线E的点Q和P来找到这样的整数x使得Q=x.P,如果存在这样的x的话。
有很多基于离散对数问题的加密算法。
这些算法可以被很容易地移植到椭圆曲线上。这样就能够用算法提供鉴定,机密性,完整性校验和密钥交换。
基于椭圆曲线的大部分加密算法的一个共同点是它们包含一个定义在有限域上的椭圆曲线作为参数及该椭圆上的一个点P。私有密钥是一个随机选中的整数d。公共密钥是曲线Q上的一个点,而Q=d.P。这些加密算法通常都涉及点R=d.T的计算中的标量乘法,其中d是密钥。
在这一节中描述了一个基于椭圆曲线的加密算法。这个方案类似于E1 Gamal加密方案。消息m被加密如下加密人员随机选择一个整数k并计算曲线上的点k.P=(x1,y1)和k.Q=(x2,y2)以及整数c=x2+m。m的密码是三元组(x1,y1,c)。
拥有d的译码人员通过计算(x’2,y’2)=d(x1,y1)和m=c-x’2来破译m。
为了实现前面所描述的计算方法中必要的标量乘法,有几种现有的算法“加倍与和”算法;“加-减”算法;加法链算法;带窗口算法;有符号表示算法;这个列表并不完整。最简单且使用最多的算法是“加倍与和”算法。“加倍与和”算法把属于一个给定椭圆曲线的点P和一个整数d作为它的输入。整数d被表示为d=(d(t),d(t-1),….,d(0)),这里d(t),d(t-1),….,d(0)是d的二进制表示,d(t)和d(0)分别是最高和最低有效位。算法返回点Q=d.P作为输出。
“加倍与和”算法包括下面三个步骤
1)用点P的值初始化点Q2)对i从t-1到0,执行2a)用2Q替代Q2b)如果d(i)=1用Q+P替代Q3)返回Q越来越明显的是智能卡上的椭圆曲线类型公钥加密算法的实现容易受到包括能够找到私有译码密钥的对当前消耗的微分幂(differential power)分析在内的攻击。这些攻击被认为是DPA攻击,DPA是微分幂分析的首字母缩写。这些DPA攻击的原理是基于执行指令的微处理器的当前消耗根据被处理的数据项而变化的事实。
特别地,当一条指令正在处理一个其中有一不变的特定位的数据项时,这里其它位的值可以变化,对与指令相关的当前消耗的分析根据特定位取值0或1显示指令的平均消耗而不是相同的。DPA类型的攻击因此能够得到在一个加密算法被执行时由卡的处理器操纵的中间数据上的附加信息。这个附加信息在某些情况下揭示了译码算法的私有参数,使加密系统不够安全。
在本文档的剩余部分中给出了一个椭圆曲线类型算法上的DPA攻击方法的描述,它执行包括点P由整数d,d是密钥,标量乘在内的操作。这个攻击直接揭示了密钥d。它因此严重危胁智能卡上椭圆曲线的实现的安全。
攻击的第一步是对应前面所述及的“加倍与和”算法的执行为N个不同的点P(1),….p(N)记录当前消耗。在一个基于椭圆曲线的算法中,智能卡的微处理器将执行N个标量乘法d.P(1),…..d.P(N)。
为了清楚地描述该攻击,第一步是描述一个用于得到密钥d的d(t-1)位的值的方法,这里(d(t),d(t-1),….,d(0))是d的二进制表示,d(t)和d(0)分别是最高和最低有效位。然后给出能够找到d的值的算法的描述。
点P(1)到P(N)被按照4.P的横坐标的最后一位的值组合在一起,这里P指示点P(1)到P(N)中的一个。第一组由其4.P的横坐标的最后一位等于1的点P组成。第二组由其4.P的横坐标的最后一位等于0的点P组。对应于每一组计算当前消耗的平均值,并计算这两个平均值之间的差分曲线。
如果d的d(t-1)位等于0,前面所述的标量乘法算法计算4.P的值并把它存储在存储器中。这意味着当该算法在智能卡中被执行时卡的处理器将实际计算4.P。这种情况下,在第一个消息组中,由微处理器操纵的数据项的最后一位总是1,而第二组中被操纵数据项的最后一位总是0。对应于每一组的当前消耗的平均值因此是不同的。因此在两个平均值的差分曲线中显现出一个微分当前消耗的峰值。
另一方面如果d的d(t-1)位等于1,前面所述的求幂算法并不计算4.P。当算法在智能卡中被执行时,微处理器因此从不操纵数据项4.P。因此没有微分消耗的峰值出现。
这个方法因此能够确定d的d(t-1)位的值。
下列节中所描述的算法是前面算法的概括。它能确定密钥d的值输入由对应由智能卡执行的N个计算表示为P(1)到P(N)的N个点定义,输出由整数h定义。
上述算法实现为下面三个步骤1)执行h=1;2)对i从t-1到1,执行2)1)按照(4*h).P的横坐标的最后一位的值给点P(1)到P(N)分类;2)2)为每一组计算当前消耗平均值;2)3)计算两个平均值之间的差分;2)4)如果上述差分显示了一个微分消耗的峰值,做h=2*h,否则做h=2*h+1;3)返回h。
上面的算法提供了一个整数h,例如d=2*h或d=2*h+1。为了得到d的值,它有能力测试两个可能的假定。
所描述的DPA类型的攻击因此能够找到私有密钥d。
本发明的方法在于设计三个对策以防止上述DPA攻击。
第一个对策的方法存在于从私有密钥d和椭圆曲线上点的数目N计算一个新的译码密钥d’中,而任意加密信息用d’译码的结果与用d的结果相同。
在基于椭圆曲线的使用的加密算法执行操作Q=d.P,这里d是密钥Q是曲线上的一个点,的情况下,Q=d.P的计算由下面四步中的方法取代1)确定一个安全性参数s;实践中s可以被设置为接近30.
2)提取一个0和2^s之间的随机数k。
3)计算整数d’=d+k*n。
4)计算Q=d’.P。
第一个对策的方法包括涉及整数d’更新的两个变量。第一个变量包括在译码算法的每一个新的执行处按照前面所描述的方法计算一个新的译码整数d’。第二个变量包括在译码算法的每一个新的执行处递增一个计数器。当这个计数器达到一个固定的值T时,按照前面所述的方法计算一个新的译码整数d’,计数器被重新设置为0。实践中可取T=16。
第一个对策的方法因此能够通过改变译码整数d使前面所述的DPA攻击不可能实现。
第二个对策的方法适用于前面所述曲线的第一类,也就是定义在有限域上有方程y^2=x^3+ax+b的曲线。第二个对策的方法在于在每个新的执行上使用一个随机计算模数。这个随机模数的形式为p’=p*r,其中r是一个随机整数。在基于椭圆曲线的算法中执行的标量乘法操作Q=d.P这时按照下面方法分五步执行1)确定一个安全参数s;实际应用中s可取接近60的数。
2)提取一个随机数r,它的二进制表示占据s位。
3)计算p’=p*r。
4)执行标量乘法操作Q=d.P,操作由模数p’执行。
5)执行点Q的坐标对模数p’的减法操作。
第二个对策的方法包括两个涉及到整数r更新的变量。第一个变量用于在译算法的每一个新的执行处按照前面所描述的方法计算一个新的整数r,第二个变量用于在译码算法的每一个新的执行处递增一个计数器。当这个计数器达到一个固定的值T时,按照前面所述的方法计算一个新的整数r,计数器被重新设置为0.实践中可取T=16。
第三个对策的方法在于“屏蔽”点P,希望通过把一个随机点R加到P上来把标量乘法算法用于点P。
点P由整数d按照Q=d.P的标量乘法的方法包括下面五个步骤1)在曲线上提取一个随机点R。
2)计算P’=P+R。
3)标题乘法操作Q’=d.P’。
4)标量乘法操作S=d.P。
5)计算Q=Q’-S。
第三个对策的方法包括三个变量。第一个变量用于在译码算法的每一个新的执行上递增一个计数器。当译码算法第一次被执行时,算法被按照上面所描述的五步方法执行。只要计数器还没到限定值T,上面所述方法的步骤1和4就不执行,点R和S保持在前面执行中所取的值。当计数器达到限定值T时,译码方法被按照前面五步中所描述的方法实现,计数器被重新设置为0.实际应用中可取T=16。
第二个变量用于卡初始时在存储器中有两个椭圆曲线上的点使S=d.R。前面译码算法的步骤1和4被下面的步骤1’和4’取代1’)用2.R代替R。
4’)用2.S代替S。
第三个变量用于以在译码算法的每一个新的执行处递增计数器为特征的第二个变量的更正。当译码算法第一次被执行时,算法被按照上面所描述的第二个变量的五步方法执行。只要计数器还没到限定值T,上面所述方法的1’和4’步就不被执行,点R和S保持在前面的执行中所取的值。当计数器达到限定值T时,译码方法被按照前面五步中所描述的方法实现,计数器被重新设置为0.实际应用中可取T=16。
上面三个对策方法的应用能够防止任何基于椭圆曲线的加密算法遭到前述的DPA攻击。已有的三个对策方法都与对方兼容能够应用于上述对策方法中的RSA译码算法1,2或3。
权利要求
1.一种在电子部件中基于使用存在于计算中的椭圆曲线实现公钥加密算法的对策方法,使用密钥d和上述椭圆曲线上点的个数n来计算一个新的译码整数d′,用d′按照译码算法对任何加密信息进行译码能给出与用d通过执行操作Q=d*P相同的结果,P是曲线上的一个点,该方法特征是它包括四个步骤1)确定一个安全参数s;实际应用中s可取为接近30的数。2)提取一个0与2^s之间的随机数k。3)计算整数d′=d+k*n。4)计算Q=d′.P。
2.依照权利要求1的对策方法,其特征是第一个变量用于在译码算法的每一个新的执行处计算一个新的译码整数d′。
3.依照权利要求1的对策方法,其特征是第二个变量用于在译码算法的每一个新的执行处递增一个计数器直到达到一个固定值T。
4.依照权利要求3的对策方法,其特征是,一旦达到了值T,按照权利要求1中的方法计算一个新的加密整数且计数器被重新设置为0。
5.依照权利要求3的对策方法,其特征是值T等于整数16。
6.在实现基于定义在有限域GF(p)上的椭圆曲线的使用的公共密钥加密算法的电子部件中的对策方法,p是一个质数,曲线方程为y^2=x^3+ax+b,在于在每个新的执行上使用用一个形式为p′=p*r的随机计算模数并有一个点P,其中r是一个随机整数,其特征是上述方法用五步执行标量乘法操作1)确定一个安全参数s;实际应用中s可取为接近60的数。2)提取随机数r,它的二进制表示占用s位。3)计算p′=p*r。4)执行标量乘法操作Q=d.P,操作由模数p′执行。5)执行点Q的坐标减去模数p的操作。
7.依照权利要求6的对策方法,其特征是在译码算法每个新的执行处计算一个新的整数。
8.依照权利要求6的对策方法,其特征是计数器在译码算法每个新的执行处被递增1.
9.依照权利要求8的对策方法,其特征是当计数器达到值T时它被重新设置为0.
10.依照权利要求8或9的对策方法,其特征是值T等于16.
11.在实现基于椭圆曲线使用的公共密钥加密算法的电子部件中的对策方法在于使用密钥d和上述椭圆曲线上点的个数n来计算一个新的译码整数d′使得用d′通过译码算法对任何加密信息进行译码给出与用d通过执行操作Q=d*P相同的结果,P是椭圆曲线上的一个点,标量乘法算法被应用在它上面,按照方程Q=d*P由整数d给它加上一个随机点R,该方法的特征在于它包括下面五个步骤1)提取曲线上的一个随机点。2)计算P′=P+R。3)标量操作Q′=d.P′。4)标量操作S=d.R。5)计算Q=Q′-S。
12.依照权利要求12的对策方法,其特征是在译码算法的每一个新的执行处计数器被递增1直到等于值T。
13.依照权利要求12的对策方法,其特征是当到达值T时计数器被重新设置为0.
14.依照权利要求12的对策方法,其特征是在译码算法的每一个新的执行处计数器被递增1直到等于值T。
15.依照权利要求11的对策方法,其特征是椭圆曲线在存储器中有两个点使得S=d*R,步骤1和4被替换为步骤1′和4′1′)用2.R替代R。4′)用2.S替代S。
16.依照权利要求15的对策方法,其特征是在译码算法的每个新的执行处计数器被递增1直到值T。
17.依照权利要求15的对策方法,其特征是在译码算法的每个新的执行处计数器被递增1直到值T。
全文摘要
本发明涉及在电子部件中基于公共密钥算法实现椭圆曲线的对策方法,包括通过进行运算Q=d*p,其中P是曲线上的点,计算新的译码整数d′,例如基于私有密钥d和所述椭圆曲线的点个数n在译码算法的帮助下的加密消息的译码,其中将d′作为d可以达到相同的结果。本发明的方法的特征在于它包括4个步骤:1)确定保密参数s,其中在实际应用中,s不可能在30的附近,2)抽取随机数k,范围是0-21s,3)计算整数d′=d+k*n,4)计算Q=d′.P。
文档编号G09C1/00GK1345496SQ00805519
公开日2002年4月17日 申请日期2000年3月22日 优先权日1999年3月26日
发明者J·S·科龙 申请人:格姆普拉斯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1