椭圆曲线加密解密方法和装置的制作方法

文档序号:7943253阅读:318来源:国知局
专利名称:椭圆曲线加密解密方法和装置的制作方法
技术领域
本发明涉及数据加密解密,是利用椭圆曲线离散对数问题的加密方法。
背景技术
密码系统分为对称密码系统和非对称密码系统。
对称密码有时也叫传统密码算法,就是加密密钥能够从解密密要中推算出来,反之也成立。在大多数算法中,加/解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,协商一个密钥。对称密码的安全性依赖于密钥,泄密密钥就意味着任何人都能对消息进行加/解密。所以,虽然对称密码的速度很快,但是如何将密钥安全分发给合法使用者却是一个问题。
在专利“密码设备和方法”(“CRYPTOGRAPHIC APPARATUS METHOD”,专利号US4200770)中给出了一个可以在公开信道中交换密钥的方法和设备,这个方法称为公钥密钥交换或称为Diffie-Hellman密钥交换方法。该专利使得通信双方使用一个模幂函数协商和传递他们的秘密信息。攻击者要想获得传递的秘密信息,必须解决离散对数问题。如果使用的参数足够大,解离散对数问题是个难解的问题。
公钥密码,又称非对称密码,则可以有效的解决上述问题。公钥密码与只使用一个密钥的对称密码不同,公钥密码学是非对称的,它使用两个独立但有着某种数学联系的密钥公钥和私钥。这样通信中的接收者保密其私钥,公开其公钥。这样通信双方A和B在通信时,如果发送者A需要将明文以密文的形式发送给B,则可以首先获取B公开的公钥,使用B的公钥加密信息,接收者B使用只有自己知道的私钥解密密文。因为只有B拥有其私钥,所以A可以确定只有B可以读取明文。
专利“密码通信系统和方法”(“CRYPTOGRAPHIC COMMUNICATIONSSYSTEM AND METHOD”,专利号US4405829)提出了Rivest,Shamir和Adleman发明的一种公钥密码方法——RSA。RSA公钥密码方法的安全性基于大整数因子分解问题的难解性。但随着目前对安全性要求的不断提高,对RSA密钥长度的要求也越来也高。
1984年,Taher E1Gama1在其博士论文中提出了新的公钥加密机制。在这个机制中,接收者使用模幂函数隐藏私钥x,计算y=gxmodp,并将公钥y公开。具体加密算法如下1、预处理过程获得系统所需要的各项参数1.1确定有限域GF(p),即确定素数p;1.2确定生成元g;1.3选取随机数x,使得1≤x≤p-1,将x作为解密密钥,即私钥;1.4计算y=gx,y作为加密密钥,即公钥;1.6公开g,p,和公钥y。
2、加密过程2.1加密方获取解密方的公开参数g,p,和公钥y;2.2生成随机数k,其中1≤k≤p-1,使用公钥y,利用模幂函数计算gk和yk;2.3对于明文m计算m yk,形成密文c=(gk,m yk);2.4加密方将密文c发送给解密方。
3、解密过程3.1解密方接收到密文c=(P,Q);3.2利用私钥x,计算Px=gkx=(gx)k=yk;3.3计算Q*(Px)-1=m yr(yk)-1=m;4、结束。
1985年Neal Koblitz和Victor Miller分别提出将椭圆曲线用于公钥密码系统,并用椭圆曲线实现了已存在的公钥密码算法。基于椭圆曲线离散对数问题难解性的密码算法被称为椭圆曲线密码算法(Elliptic Curve Cryptography简称ECC),成为被国际密码界所广泛接受的公钥密码算法。
随后,上文提及的E1Gama1加密机制被移植到椭圆曲线上,基于椭圆曲线离散对数问题难解性的E1Gama1加密算法如下
1、预处理过程获得椭圆曲线加密所需要的各项参数1.1确定有限域GF(p),即确定素域p;1.2选取曲线参数a、b,确定椭圆曲线方程Ey2=x3+ax+b(modp);1.3计算曲线的阶N,选取曲线的基点G;1.4选取随机数x,使得1≤x≤N-1,将x作为解密密钥,即私钥;1.5计算Y=xG,Y作为加密密钥,即公钥;1.6公开曲线E,生成元G和公钥Y。
2、加密过程2.1加密方获取解密方的曲线E,生成元G和公钥Y;2.2加密方获取适当长度的明文m,并将其嵌入曲线E,得到满足曲线E的点Pm;2.3生成随机数k,其中1≤k≤N-1,使用公钥Y,利用椭圆曲线点乘和点加公式计算rG和Pm+kY,形成密文c=(kG,Pm+kY);2.4加密方将密文c发送给解密方。
3、解密过程3.1解密方接收到密文c=(P,Q);3.2利用私钥x,计算xP=x kG=r(xG)=kY;3.3计算Q-xP=Pm+kY-xkG=Pm;3.4由Pm计算得到明文m;4、结束。
在上述过程中,由于椭圆曲线上的点均要满足椭圆曲线方程Ey2=x3+ax+b(mod p),而明文m是随机的,因此,将m本身作为点的横坐标x时,方程可能无法求解出点的纵坐标y,从而必须要对m进行明文嵌入。通常采用的做法是在m后增加若干位一起作为点的横坐标,从而进行明文嵌入。填充位越多,能够成功进行明文嵌入的可能性就越大,但此种方法仍然是一种概率性算法,可能出现无法对某种明文加密的情况,因此,解决这一问题显然非常重要。
Menezes和Vanstone提出的基于椭圆曲线的公钥密码算法——MV加密方法,克服了上述在E1Gama1加密机制中的缺陷。其具体的加密步骤描述如下
1、预处理过程获得椭圆曲线加密所需要的各项参数1.1确定有限域GF(p),即确定素域p;1.2选取曲线参数a、b,确定椭圆曲线方程Ey2=x3+ax+b(modp);1.3计算曲线的阶N,选取曲线的基点G;1.4选取随机数x,使得1≤x≤N-1,将x作为解密密钥,即私钥;1.5计算Y=xG,Y作为加密密钥,即公钥;1.6公开曲线E,生成元G和公钥Y。
2、加密过程2.1加密方获取解密方的曲线E,生成元G和公钥Y;2.2加密方获取适当长度的明文m;2.3生成随机数k,其中1≤k≤N-1;2.4计算点P=kG,Q=kY=(x0,y0),U=mx0mod p2.5加密方将密文c=(P,U)发送给解密方。
3、解密过程3.1解密方接收到密文c=(P,U);3.2利用私钥x,计算Q=kP=xkG=k(xG)=kY=(x0,y0);3.3取出Q的横坐标x0,计算m=Ux0-1mod p,从而得到明文m。
4、结束。
该方法虽然解决了明文嵌入的问题,但不能兼容E1Gama1加密方法。

发明内容
本发明的目的提供一种新的椭圆曲线加密方法,它一方面解决了明文嵌入问题,另一方面具有极高的灵活性,能够通过参数的选择构造出现有的一些加密方法,再者,该方法的实现效率非常高。
本发明提供了一种加密解密方法,系统首先确定有限域GF(q),选取椭圆曲线方程E;选取椭圆曲线的基点G,并计算有限域上椭圆曲线点群的阶N。用户B作为解密方,利用这些系统参数生成自己的私钥xB,其中1≤xB≤N-1,然后利用基点G计算点乘得到公钥YB=xBG。加密方A对于明文m的加密过程步骤以下
首先,加密者获取B的公钥YB,然后生成随机数k,使的k落在区间[1,N-1]上,将k分别与公钥YB和曲线的基点G进行椭圆曲线点乘运算,得到曲线上的点P=kG,Q=kYB;分别使用函数v和g对P和Q进行运算,即得到v(P),g(Q);使用函数f对明文m进行运算,得到f(m),使用函数u对f(m)和g(Q)运算得到u(f(m),g(Q)),这样得到的(v(P),u(f(m),g(Q))即为加密者对明文m的加密结果,表示为(V,U),其中V=v(P),U=u(f(m),g(Q))。
解密方B接受密文(V,U),使用r函数对B的私钥xB和V进行运算,得到r(xB,V),使用d函数对r(xB,V)和U进行运算得到D=d(U,r(xB,V)),最后使用f的逆函数计算得到明文m=f-1(D)。
根据本发明的另一个方面提供一种采用所述椭圆曲线加密方法的加解密装置;


图1是本发明加密过程的流程图。
图2是本发明解密过程的流程图。
图3是本发明的加密解密装置的方框图。
具体实施例方式
图1示出本发明的加密过程的流程图。
在步骤101,加密方A获取解密方B公开的系统参数和公钥YB;在步骤102,A生成随机数k,其中1≤k≤N-1,其中N为椭圆曲线的点群的阶;在步骤103,将k与基点G及B的公钥YB作椭圆曲线的点乘运算,得到P=kG,Q=kYB;在步骤104,计算V=v(P),利用v函数对P作进一步数据处理,例如对P进行压缩或扩展;在步骤105,加密方获取适当长度的明文m,并使用f对明文m作预处理运算得到f(m)。其中,函数f(m)必须有逆函数,通过f-1(f(m))必须能够恢复出m,可以包含如下形式a)f(m)可以取值为f(m)=m,则f-1(m)=mb)f(m)可以取值为f(m)=(m,n),其中n为随机数,则f-1(m,n)=m;
c)f(m)可以取值为f(m)=(m,h(m)),其中h为Hash函数,如SHA-1、MAC等,则f-1(m,h(m))=m;d)f(m)可以取值为f(m)=(m1,m2),其中m=m1||m2,||为连接符号,则f-1(m1,m2)=m1||m2=m;e)f(m)可以取值为f(m)=(l1(m1),l2(m2)),其中m=m1||m2,||为连接符号,l1,l2为可逆的扩展函数,则f-1(l1,l2)=l1-1(l1(m1))||l2-1(l2(m2))=m;f)等等。
在步骤106,计算得到U=u(f(m),g(Q)),最后得到密文(U,V),其中V为步骤104中计算得到的v(P)。
在步骤106中,对于函数u必须具有以下性质设u函数形为U=u(x,y),从函数u可以推得y=u’(x,U),这样得到的u’函数将用于下述的解密中。
在步骤106中,适用函数g对包含私钥xB和随机数k信息的Q点作进一步处理,如对Q进行压缩处理或扩展处理,例如g(Q)可以取为a)g(Q)可以取值为g(Q)=Q;b)g(Q)可以取值为g(Q)=x0,或者g(Q)=y0,其中Q=(x0,y0);c)g(Q)可以取值为g(Q)=x0||y0,其中Q=(x0,y0),||为连接符号;d)g(Q)可以取值为g(Q)=h(x0),或者g(Q)=h(y0),其中Q=(x0,y0),h为Hash函数,如SHA-1、MAC等;e)g(Q)可以取值为g(Q)=h(x0||y0),或者g(Q)=h(x0)||h(y0),其中Q=(x0,y0),||为连接符号,h为Hash函数,如SHA-1、MAC等;f)等等。
在步骤207,生成密文(V,U),加密方A将该密文发送给解密方B。
至此,加密过程结束。
图2示出本发明的解密过程的流程图。
在步骤201,解密方B接收到密文(V,U);在步骤202,B获取自己的私钥xB;在步骤203,B使用自己的私钥xB和接收到的V运算,得到R=r(xB,V);其中函数r使得可以利用私钥xB和包含了随机数信息的V中运算得到U中包含的部分信息,满足r(xB,V)=g(Q),这样得到的结果即可以和U一起运算得到所需的明文信息,例如a)当取函数形为v(P)=P,则取r(xB,V)=g(xBV);b)当取函数形为v(P)=(x0,s),其中P=(x0,y0),s取值为y0的方向标志位,此时v的函数具有与u函数一样的性质,存在v’函数,则取r(xB,V)=g(xB,v’(V));c)当取函数形为v(P)=xP,g(Q)=x0,其中P=(xp,yp),Q=(xQ,yQ),适当取r即可满足r(xB,V)=g(kY);在步骤204计算D=u’(U,R);其中函数u’与加密过程中的函数u具有以下性质,对于z=u(x,y),则可以得到x=u’(z,y)。函数u和u’可以为如下形式;a)u、u,可以取值为对称加解密函数,x0为明文,y0为密钥;b)u、u’可以取值为椭圆曲线点加、点减函数(或点减、点加函数),x0,y0分别为椭圆曲线上的点;c)u、u’可以取值为模加函数和模减函数,u(x0,y0)=x0+y0(modq),d(x0,y0)=x0-y0(mod q);d)u、u’可以取值为模乘函数和逆函数,u(x0,y0)=x0*y0(mod q),d(x0,y0)=x0*y0-1(mod q);e)u、u’可以取值为模2加法(异或),u(x0,y0)=d(x0,y0)=x0y0;f)u、u’可以取值为同或操作,u(x0,y0)=d(x0,y0)=x0y0;g)等等。
在步骤205,计算m=f-1(D),从而得到明文m。
至此,解密过程结束。
图3示出本发明的加密解密装置。加密方A和解密方B在一个通信信道上通信时,解密方B使用密钥生成装置340生成B的密钥对公钥YB和私钥XB。加密方A使用加密器320,采用结合图1说明的加密过程对明文m进行加密,并将生成的密文c发送至解密方B。解密方B的解密器350通过结合图2说明的解密过程对密文c进行解密,获得信息m。
以上结合本发明的最佳实施例对本发明进行了描述,本领域的普通技术人员可以在不偏离本发明的范围的情况下可对其作各种修改和改变。
权利要求
1.一种椭圆曲线加解密方法,解密方拥有自己的密钥对私钥XB和公钥YB,加密方可以获取解密方的公钥YB,对明文m实现加密,并将密文发送给解密方,解密方可以从密文中解密得到明文m,包含以下步骤加密方获取解密方的公钥YB,然后生成随机数k,分别与公钥YB和曲线的基点G进行椭圆曲线点乘运算,得到曲线上的点P=kG。Q=kYB;分别使用函数v和g对P和Q进行运算,即得到v(P),g(Q);使用函数f对明文m进行运算,得到f(m),使用函数u对f(m)和g(Q)运算得到u(f(m),g(Q)),这样得到的(v(P),u(f(m),g(Q)))即为加密者对明文m的加密结果,表示为(V,U),其中V=v(P),U=u(f(m),g(Q));解密方接收密文(V,U),使用自己的私钥XB和V进行运算,得到r(XB,V),使用u的逆函数对r(XB,V)和U进行运算得到D=u’(U,r(XB,V)),使用f的逆函数计算得到明文m=f-1(D);其中加密过程中的函数u与解密过程中的函数u’具有以下性质对于z=u(x,y),则可以得到x=u’(z,y)。
2.如权利要求1的椭圆曲线加解密方法,其中v函数是压缩或扩展函数。
3.如权利要求1的椭圆曲线加解密方法,其中f函数是有逆函数。
4.如权利要求1的椭圆曲线加解密方法,其中,f可以取值为f(m)=m,则f-1(m)=m。
5.如权利要求1的椭圆曲线加解密方法,其中,f(m)可以取值为f(m)=(m,n),其中n为随机数,则f-1(m,n)=m。
6.如权利要求1的椭圆曲线加解密方法,其中,f(m)可以取值为f(m)=(m,h(m)),其中h为Hash函数,则f-1(m,h(m))=m。
7.如权利要求6的加密方法,其中,Hash函数是SHA-1、MAC等函数。
8.如权利要求1的椭圆曲线加解密方法,其中,f(m)可以取值为f(m)=(m1,m2),其中m=m1||m2,||为连接符号,则f-1(m1,m2)=m1||m2=m。
9.如权利要求1的椭圆曲线加解密方法,其中,f(m)可以取值为f(m)=(l1(m1),l2(m2)),其中m=m1||m2,||为连接符号,l1,l2为可逆的函数,则f-1(l1,l2)=l1-1(l1(m1))||l2-1(l2(m2))=m。
10.如权利要求1的椭圆曲线加解密方法,其中,g(Q))可以取值为g(Q)=Q。
11.如权利要求1的椭圆曲线加解密方法,其中,g(Q)可以取值为g(Q)=x0,或者g(Q)=y0,其中Q=(x0,y0)。
12.如权利要求1的椭圆曲线加解密方法,其中,g(Q)可以取值为g(Q)=x0||y0,其中Q=(x0,y0),||为连接符号。
13.如权利要求1的椭圆曲线加解密方法,其中,g(Q)可以取值为g(Q)=h(x0),或者g(Q)=h(y0),其中Q=(x0,y0),h为Hash函数。
14.如权利要求1的椭圆曲线加解密方法,其中,g(Q)可以取值为g(Q)=h(x0||y0),或者g(Q)=h(x0)||h(y0),其中Q=(x0,y0),||为连接符号,h为Hash函数。
15.如权利要求13或14的加密方法,其中,Hash函数可以是SHA-1、MAC等函数。
16.如权利要求1的椭圆曲线加解密方法,其中,函数u和函数u’具有以下性质对于z=u(x,y),则可以得到x=u’(z,y)。
17.如权利要求1的椭圆曲线加解密方法,其中,函数u和u’可以为对称加解密函数。
18.如权利要求1的椭圆曲线加解密方法,其中,函数u和u’可以为椭圆曲线点加或点减函数。
19.如权利要求1的椭圆曲线加解密方法,其中,函数u和u’可以为模加函数和模减函数。
20.如权利要求1的椭圆曲线加解密方法,其中,函数u和u’可以为模乘函数和逆函数。
21.如权利要求1的椭圆曲线加解密方法,其中,函数u和u’可以为模2加法。
22.如权利要求1的椭圆曲线加解密方法,其中,函数u和u’可以为同或操作。
23.如权利要求1的椭圆曲线加解密方法,其中,函数r的选择满足r(xB,V)=g(kYB)=g(Q)。
24.如权利要求1的椭圆曲线加解密方法,其中,函数r的选择与函数v和函数g相关,r函数满足r(xB,V)=g(kYB)。
25.如权利要求1或23的椭圆曲线加解密方法,其中,当取函数形为v(P)=P,则取r(xB,V)=g(xBV)。
26.如权利要求1或23的椭圆曲线加解密方法,其中,当取函数形为v(P)=(x0,s),其中P=(x0,y0)s取值为y0的方向标志位,此时v的函数具有与u函数一样的性质,存在v’函数,则取r(xB,V)=g(xBv’(V))。
27.如权利要求1或23的椭圆曲线加解密方法,其中,当取函数形为v(P)=Xp,g(Q)=XQ,其中P=(xp,yp),Q=(x0,y0),适当取r即可满足r(xB,V)=g(kYB)。
28.一种椭圆曲线加解密系统,包括密钥生成装置(340),加密器(330)和解密器(350),解密方通过所述密钥生成装置(340)产生自己的密钥对私钥xB和公钥YB,加密方可以获取解密方的公钥YB,对明文m实现加密,并将密文发送给解密方,解密方通过所述解密器(350)从密文中解密得到明文m,其中所述加密器(330)执行获取解密方的公钥YB,然后生成随机数k,分别与公钥YB和曲线的基点G进行椭圆曲线点乘运算,得到曲线上的点P=kG,Q=kYB;分别使用函数v和g对P和Q进行运算,即得到v(P),g(Q),;使用函数f对明文m进行运算,得到f(m),使用函数u对f(m)和g(Q)运算得到u(f(m),g(Q)),这样得到的(v(P),u(f(m),g(Q))即为加密者对明文m的加密结果,表示为(V,U),其中V=v(P),U=u(f(m),g(Q));所述解密器(350)执行接收密文(V,U),使用自己的私钥XB和V进行运算,得到r(XB,V),使用u的逆函数对r(XB,V)和U进行运算得到D=u’(U,r(XB,V)),使用f的逆函数计算得到明文m=f-1(D);其中加密过程中的函数u与解密过程中的函数u’具有以下性质对于z=u(x,y),则可以得到x=u’(z,y)。
29.如权利要求1的椭圆曲线加解密方法,其中v函数是压缩或扩展函数。
30.如权利要求28的椭圆曲线加解密系统,其中f函数有逆函数。
31.如权利要求28的椭圆曲线加解密系统,其中,f可以取值为f(m)=m,则f-1(m)=m。
32.如权利要求28的椭圆曲线加解密系统,其中,f(m)可以取值为f(m)=(m,n),其中n为随机数,则f-1(m,n)=m。
33.如权利要求28的椭圆曲线加解密系统,其中,f(m)可以取值为f(m)=(m,h(m)),其中h为Hash函数,则f-1(m,h(m))=m。
34.如权利要求33的加密方法,其中,Hash函数是SHA-1、MAC等函数。
35.如权利要求28的椭圆曲线加解密系统,其中,f(m)可以取值为f(m)=(m1,m2),其中m=m1||m2,||为连接符号,则f-1(m1,m2)=m1||m2=m。
36.如权利要求28的椭圆曲线加解密系统,其中,f(m)可以取值为f(m)=(l1(m1),l2(m2)),其中m=m1||m2,||为连接符号,l1,l2为可逆的函数,则f-1(l1,l2)=l1-1(l1(m1))||l2-1(l2(m2))=m。
37.如权利要求28的椭圆曲线加解密系统,其中,g(Q)可以取值为g(Q)=Q。
38.如权利要求28的椭圆曲线加解密系统,其中,g(Q)可以取值为g(Q)=x0,或者g(Q)=y0,其中Q=(x0,y0)。
39.如权利要求28的椭圆曲线加解密系统,其中,g(Q)可以取值为g(Q)=x0||y0,其中Q=(x0,y0),||为连接符号。
40.如权利要求28的椭圆曲线加解密系统,其中,g(Q)可以取值为g(Q)=h(x0),或者g(Q)=h(y0),其中Q=(x0,y0),h为Hash函数。
41.如权利要求28的椭圆曲线加解密系统,其中,g(Q)可以取值为g(Q)=h(x0||y0),或者g(Q)=h(x0)||h(y0),其中Q=(x0,y0),||为连接符号,h为Hash函数。
42.如权利要求40或41的加密方法,其中,Hash函数可以是SHA-1、MAC等函数。
43.如权利要求28的椭圆曲线加解密系统,其中,函数u和函数u’具有以下性质对于z=u(x,y),则可以得到x=u’(z,y)。
44.如权利要求28的椭圆曲线加解密系统,其中,函数u和u’可以为对称加解密函数。
45.如权利要求28的椭圆曲线加解密系统,其中,函数u和u’可以为椭圆曲线点加或点减函数。
46.如权利要求28的椭圆曲线加解密系统,其中,函数u和u’可以为模加函数和模减函数。
47.如权利要求28的椭圆曲线加解密系统,其中,函数u和u’可以为模乘函数和逆函数。
48.如权利要求28的椭圆曲线加解密系统,其中,函数u和u’可以为模2加法。
49.如权利要求28的椭圆曲线加解密系统,其中,函数u和u’可以为同或操作。
50.如权利要求28的椭圆曲线加解密系统,其中,函数r的选择满足r(xB,V)=g(kYB)=g(Q)。
51.如权利要求28的椭圆曲线加解密系统,其中,函数r的选择与函数v和函数g相关,r函数满足r(xB,V)=g(kYB)。
52.如权利要求28或50的椭圆曲线加解密装置,其中,当取函数形为v(P)=P,则取r(xB,V)=g(xBV)。
53.如权利要求28或50的椭圆曲线加解密装置,其中,当取函数形为v(P)=(x0,s,其中P=(x0,y0)s取值为y0的方向标志位,此时v的函数具有与u函数一样的性质,存在v’函数,则取r(xB,V)=g(xBv’(V))。
54.如权利要求28或50的椭圆曲线加解密装置,其中,当取函数形为v(P)=xP,g(Q)=xQ,其中P=(xP,yP),Q=(xQ,YQ),适当取r即可满足r(xB,V)=g(kYB)。
全文摘要
本发明是一种椭圆曲线加密方法。其中加密方获取解密方的公钥Y
文档编号H04L9/00GK1505306SQ0215471
公开日2004年6月16日 申请日期2002年11月29日 优先权日2002年11月29日
发明者陈建华, 汪朝辉, 李莉, 涂航, 崔竞松, 彭蓉 申请人:海南信安数据系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1