1、椭圆曲线数字签名算法椭圆曲线数字签名算法(ECDSA)原文The Elliptic Curve Digital Signature Algorithm (ECDSA) CERTICOM公司李鹤帅译(部分内容有删节)摘要椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线对数字签名算法(DSA)的模拟。ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准。它在1998年既已为ISO所接受,并且包含它的其他一些标准亦在ISO的考虑之中。与普通的离散对数问题(discrete logarithm problem DLP)和大数分解问题(integer factorizatio
2、n problem IFP)不同,椭圆曲线离散对数问题(elliptic curve discrete logarithm problem ECDLP)没有亚指数时间的解决方法。因此椭圆曲线密码的单位比特强度要高于其他公钥体制。本文将详细论述ANSI X9.62标准及其协议和实现方面的问题。1、介绍数字签名算法(DSA)在联邦信息处理标准FIPS中有详细论述。它的安全性基于素域上的离散对数问题。椭圆曲线密码(ECC)由Neal Koblitz和Victor Miller于1985年发明。它可以看作是椭圆曲线对先前基于离散对数问题(DLP)的密码系统的模拟,只是群元素由素域中的数换为有限域上的椭
3、圆曲线上的点。椭圆曲线密码体制的安全性基于椭圆曲线离散对数问题(ECDLP)的难解性。椭圆曲线离散对数问题远难于离散对数问题,椭圆曲线密码系统的单位比特强度要远高于传统的离散对数系统。因此在使用较短的密钥的情况下,ECC可以达到于DL系统相同的安全性。这带来的好处就是计算参数更小,密钥更短,运算速度更快,签名也更加短小。因此椭圆曲线密码尤其适用于处理器速度、带宽及功耗受限的场合。ECDSA是椭圆曲线对DSA的模拟。ECDSA首先由Scott Vanstone在1992年为了响应NIST对数字签名标准(DSS)的要求而提出。ECDSA于1998年作为ISO标准被采纳,在1999年作为ANSI标准
4、被采纳,并于2000年成为IEEE和FIPS标准。包含它的其他一些标准亦在ISO的考虑之中。本文中我们将介绍ANSI X9.62标准。也将介绍一些签名的基础知识以及协议及实现方面的问题。本文其他部分的安排如下:第二节中我们将回顾数字签名方案和DSA。第三节和第四节将分别介绍有限域和椭圆曲线。第五节将讲述域参数的产生,第六节将讲述密钥对的产生。第七节的内容是ECDSA的签名和验证过程。第八章论证ECDSA的安全性。第九节和第十节讲述的是ECDSA协议和实现方面的问题。2、数字签名方案2.1背景知识数字签名的目的是提供一个手写签名的数字化副本。签名是一个依赖于签名者私钥和一段消息的比特串。签名必须
5、是可验证的,即如果对签名的真实性存在疑问,必须由一个中立的第三方作出公正的裁决,并且无需知道签名者的私钥。对签名的抵赖以及伪造签名应该能被发现。本文论述的是非对称摘要数字签名。非对称即用户的密钥对各不相同。用户的私钥用于签名,其他用户用他的公钥来检验签名的真实性。摘要是指对一段消息先用哈希函数进行摘要计算,尔后再对消息摘要进行签名。安全性。从理论上讲,在选择消息攻击下,数字签名应该是不可伪造的。这一概念由Goldwasser Micali和Rivest提出。更一般的讲就是攻击者获得用户A的摘要和签名,但他无法用其他的摘要来伪造这样一个签名。应用。数字签名方案用于以下一些用途:数据完整性(确保数
6、据没有被未知或未授权的中间人改变),数据源认证(确保数据的来源是可信的),不可否认性(确保用户不能对自己的行为进行抵赖)。数字签名是密码学协议的基本组成部分,并且可以提供其他一些服务如:身份认证(FIPS 196,ISO/IEC 9798-3),密钥传递前的认证(ANSI X9.63,ISO/IEC 11770-3),经验证的密钥协商(ISO/IEC 11770-3)。分类。数字签名方案可以根据所基于的数学难题进行分类:1、基于大整数分解(IF)的方案,安全性基于大整数分解的难度。实例有RSA方案和Rabin方案。2、基于离散对数(DL)的方案,安全性基于有限域上普通的离散对数问题。实例包括E
7、lGamal,Schnorr,DSA和Nyberg-Rueppel方案。3、基于椭圆曲线(EC)的方案,安全性基于椭圆曲线离散对数问题。2.2数字签名算法DSA于1991年由NIST提出,并在FIPS 186中得到确认。DSA可以看作是ElGamal签名方案的一个变形。其安全性建立在素域上的离散对数问题的困难性之上。DSA参数的产生。每个用户的安全参数产生如下:1、选择160比特的素数q和1024比特的素数p,满足q|p-1。2、在有限域Zp*中寻找q阶循环子群的生成元g,具体方法是在Zp*选取元素h计算g=h(p-1)/q modp,当g1时即找到满足要求的g。3、域参数就是p,q和g。DS
8、A密钥对的产生。每个拥有域参数p,q和g进行如下操作:1、选择伪随机数x满足1xp-1。2、计算y=gx modp。3、用户的私钥是x,公钥是y。DSA签名过程:1、选择伪随机数k满足1kp-1。2、计算X=gk modp,r=X modq,若r=0则返回第一步。3、计算k-1modq。4、计算e=SHA-1(m)。5、计算s=k-1 (e+xr) modq,若s=0则返回第一步。6、对消息m的签名就是(r,s)。DSA签名的验证。为了验证(r,s)是对m的签名,需要使用签名者的域参数(p,q,g)和公钥y进行如下运算:1、验证r,s在区间1,q-1中。2、计算e=SHA-1(m)。3、计算=
9、s-1 modq。4、计算u1=e modq和u2=r modq5、计算X=gu1 yu2 modp及v=X modq。6、如果v=r则认可此签名。安全性分析。由于r和s均小于q,故DSA签名长度小于320比特。DSA的安全性依赖于两个方面,它们都基于离散对数问题的难解性,一个是Zp*上的离散对数问题,目前已有数域筛算法去加以解决,这是一种亚指数级的算法。其平均运算时间为:O(exp(c+o(1)(lnp)1/3 (lnlnp)2/3)其中c约为1.923,若p是1024比特的素数,则上式的计算量是无法接受的。因此目前1024比特的DSA可以应付现有攻击。另一个是q阶子群上的离散对数问题,给定
10、p,q,g和y,y=gx modp,要寻找x,目前最好的算法是Pollards Rho算法,大约要做sqrt(q/2)步。若q是160比特的,则该算法在计算上不可行,因此DSA是很安全的。DSA的安全性主要取决于p和q的尺寸。增加其中一个的尺寸而不增加另一个的尺寸对安全性的提高并无益处。此外,对两种离散对数问题解决算法的提高都会削弱DSA。安全参数的产生。DSA的早期版本受到了一些批评,因此FIPS 186推出了一种新模式以产生素数以及可证明的随机性。它可以防止用户故意构造一个利于破译的素数(例如可以由CA来产生域参数并发送给用户)。FIPS指定了两个模式,分别使用SHA-1和DES,产生伪随
11、机私钥x。FIPS 186指定使用这两种模式以及其他经过FIPS认可的安全模式。3、有限域我们将简要介绍有限域的知识。更多详细内容请参看其他书籍。有限域由一个有限集合F和F上的两个二元运算组成,这两个运算满足某种运算规则,分别称为加法和乘法。有限域的阶即域中元素的个数。当仅当q是素数时存在一个q阶有限域,这个有限域是唯一的,记作Fq。有很多方法可以描述Fq的元素,有些描述方式可以使域上的软件及硬件运算更加高效。若q=pm,其中p为素数,m为正整数,则p称为Fq的特征,m称为Fq的度。至于椭圆曲线密码,一般基于素域或是多项式域。在3.1和3.2中我们将分别介绍这两种有限域上的元素和运算以及多项式
12、域的两种表示方法:多项式表示方法和正规基表示方法。3.1有限域FpP为素数,有限域Fp称为素域,由整数集1,2,.,p-1和其上的符合下列规则的运算组成:1、加法。a,bp,a+b=r,r为a与b的和模p所得的值。2、乘法。a,bp,a*b=s,s为a与b的积模p所得的值。3、求逆运算。a是Fp中的非零元素,a的逆是唯一的,记作a-1,有a*a-1=1 modp例1F23,全部元素为1,2,.,22,其上三种运算:12+20=9,8*9=3,8-1=3。3.2有限域F2mF2m称之为特征为2的有限域,可以看做是F2上的m维向量空间。F2m中存在m个不同的元素?0, ?1., ?m-1,任一个?
13、F2m均可写为以下形式:?=a0 ?0+ a1?1+.+am-1?m-1 ai0,1集合 ?0, ?1., ?m-1称为F2m在F2上的基。有这样一个基,域中所有元素就可以用一个比特串(a0,a1,.am-1)来表示。这样,加法就可以用向量的逐比特异或运算来表示,乘法运算则依赖于基的选择。基的选择方式是多种多样的。一些基可以使运算变得高效。ANSI X9.62给出了两种基,分别是多项式基和正规基。多项式基f(x)=xm +fm-1xm-1+.f2x2+f1x+f0(fi0,1)是F2上的m次本原多项式。域元素。有限域F2m由F2上的所有不多于m次的多项式组成。F2m=am-1xm-1+.+a1
14、x+a0|ai0,1域元素am-1xm-1+.+a1x+a0可以写为比特串(am-1,.a1,a0)形式。因此F2m的元素可以写为长度为m的比特串。乘法单位元是(0,0,.,0,1),加法零元是全零串(0,0,.,0)。域运算。加法。a=( am-1,.a1,a0),b=(bm-1,.,b1,b0),a+b=c=(cm-1,.,c1,c0),ci=ai XOR bi。乘法。a=( am-1,.a1,a0),b=( bm-1,.,b1,b0),a*b=r=(rm-1,.,r1,r0),多项式rm-1xm-1+.+r1x+r0由(am-1xm-1+.+a1x+a0)*( bm-1xm-1+.+b1
15、x+b0)模f(x)而来。求逆运算。a是F2m中的非零元素,a-1满足a-1*a=1例2.有限域F24,模多项式为f(x)=x4+x+1,有限域中16个元素分别为:0(0000) 1(0001) x(0010)x+1(0011) x2(0100) x2+1(0101)x2+x(0110) x2+x+1(0111) x3(1000)x3+1(1001) x3+x(1010) x3+x+1(1011)x3+x2(1100) x3+x2+1(1101) x3+x2+x(1110)x3+x2+x+1(1111)F24上的运算举例:(1101)+(1001)=(0100)(1101)*(1001)=(1111) (x3+x2+1)*( x3+1)=x6+x5+x2+1 (x6+x5+x2+1)mod(x4+x+1)= x3+x2+x+1(1101)-1=(0100)x=(0010)是F24的生成元x1=(0010) x2=(0100) x3=(1000) x4=(0011)x5=(0110) x6=(1100) x7=(1011) x8=(0101)x9=(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1