首页 理论教育 椭圆曲线密码体制初探

椭圆曲线密码体制初探

时间:2023-07-02 理论教育 版权反馈
【摘要】:由上节的内容可知,有限域椭圆曲线上的任意两个点相加,结果仍然是曲线上的点。椭圆曲线密码体制的安全性在于求解椭圆曲线点群上的离散对数问题的困难性。而要得到k,只有通过椭圆曲线上两个已知点G和kG,即必须求椭圆曲线上的离散对数,这被公认是十分困难的。 取E211,即椭圆曲线为y2≡x3-4。

椭圆曲线密码体制初探

由上节的内容可知,有限域椭圆曲线上的任意两个点相加,结果仍然是曲线上的点。所有的点都落在某一个区域内,组成一个有限阿贝尔群,与密码长度相对应。密码长度越长,这个区域就越大,安全层次就越高,但计算机速度越慢,反之亦然。

椭圆曲线密码体制的安全性在于求解椭圆曲线点群上的离散对数问题的困难性。已知椭圆曲线Epab)和点G,随机生成一个整数d,容易计算Q=d×G,但给定QG计算d就相对困难。

1.一般的椭圆曲线密码

选取一个有限域GF(p)和定义在该域上的椭圆曲线Epab),在Epab)选取一个拥有素数n的点Gxy),阶n是满足nG=O的最小正整数。其中有限域GF(p)、椭圆曲线参数ab,点Gxy)和阶n都是公开信息。

(1)密钥的生成

系统建立后,每个参与用户进行下列运算:

1)在区域[1,n-1]中随机选取一个整数d

2)计算Q=dG

用户的公钥为点Q,私钥为整数d

(2)加密过程

当用户A发送消息M给用户B时,A执行下列步骤:

1)查找B的公钥Q

2)将消息M表示成一个域元素m∈GF(p)。

3)在区域[1,n-1]中随机选取一个整数k

4)计算点(x1y1)=kG

5)计算点(x2y2)=kQ,如果x2=0,则返回步骤3)。

6)计算c=mx2

7)传送加密数据(x1y1c)给B。

(3)解密过程

当用户B解密从A收到的密文(x1y1c)时,B执行下列步骤:

1)使用自己的私钥d,计算点(x2y2)=dx1y1)。

2)通过计算m=c·x2-1,恢复出消息m

2.椭圆曲线ElGamal密码(ECELG)

当用户A发送消息M给用户B时,可以使用椭圆曲线ElGamal密码来完成。首先选取一条椭圆曲线Epab),设GEpab)为椭圆曲线上的一个本原元素,mPm是明文空间到椭圆曲线的嵌入(即将明文转换为椭圆曲线上的点)。

(1)加密过程

用户B选取私钥dB,产生一个公钥PB=dBG

用户A为了向B发送信息Pm,选取随机数k作为他的私钥并向B发送密文

Cm=(kGPm+kPB)。

(2)解密过程

B收到Cm=(kGPm+kPB)后,首先计算

Pm+kPB)-dBkG=Pm+kdBG)-dBkG=Pm(www.xing528.com)

再把Pm变换成消息m

攻击者若要由Cm得到Pm,就必须知道k。而要得到k,只有通过椭圆曲线上两个已知点GkG,即必须求椭圆曲线上的离散对数,这被公认是十分困难的。

【例5-18】 设G=(6,4)为椭圆曲线E23(1,1):y2x3+x+1(mod 23)上的一个生成元,消息m编码后的信息为Pm=(5,4),用户B的私钥dB=3,则公钥为

PB=dBG=3(6,4)=(7,12)若用户A想向B发送信息Pm,选取随机数k=2,那么

kG=2(6,4)=(13,7)

Pm+kPB=(5,4)+2(7,12)=(5,4)+(17,3)=(5,19)所以A向B发送的密文为

Cm=(kGPm+kPB)=((13,7),(5,19))B收到密文Cm后,解密如下

Pm=(5,19)-3(13,7)=(5,4)

3.椭圆曲线密钥协商(ECDH)

选取一个有限域上的椭圆曲线Epab),取Epab)上的一个本原元素GEpab),要求满足nG=O的最小值n是一个足够大的素数,Epab)和G作为公开参数。

通信双方A和B基于椭圆曲线密码体制进行密钥协商的处理过程如下:

1)A选择一个比n小的整数dA作为私钥,产生Epab)上的一个点PA=dAG作为公钥。

2)B类似地选择一个私钥dB,并计算出他的PB=dBG

3)A计算KAB=dAPB

B计算KBA=dBPA产生出双方共享的秘密密钥。实际上容易得知它们是相同的。这是因为

KAB=dAPB=dAdBG)=dBdAG)=dBPA=KBA

易见,椭圆曲线Diffie-Hellman密码协商(ECDH)的安全性基于椭圆曲线上的离散对数的难解性。

【例5-19】 取E211(0,-4),即椭圆曲线为y2x3-4(mod 211)。取G=(2,2)可计算241G=O。用户A和B密钥交换的过程如下:

1)设A的私钥为dA=121,则A的公钥为

PA=dAG=121(2,2)=(115,48)

A将公钥(115,48)发送给B。

2)B收到(115,48)后,用自己的私钥dB=203计算

KBA=dBPA=203(115,48)=(161,169)

计算B的公钥为

PB=dBG=203(2,2)=(130,203)

B将公钥(130,203)发送给A。

3)A收到(130,203)后,计算

KAB=dAPB=121(130,203)=(161,169)

可见,(161,169)是A和B共享的秘密密钥。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈