椭圆曲线密码总结大全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
椭圆曲线密码
概述:
椭圆曲线密码学(ECC, Elliptic curve cryptography )是基于椭圆曲线数学的一种公钥密码的方法。
1985年,Neal Koblitz 和Victor Miller 分别独立提出了椭圆曲线密码体制(ECC),其依据就是定义在椭圆曲线点群上的离散对数问题的难解性。
引言:
ECC 被广泛认为是在给定密钥长度的情况下,最强大的非对称算法,因此在对带宽要求十分紧的连接中会十分有用。
ECC 的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA ——提供相当的或更高等级的安全。
ECC 的另一个优势是可以定义群之间的双线性映射,基于Weil 对或是Tate 对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。
不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。
国家标准与技术局和ANSI X9已经设定了最小密钥长度的要求,RSA 和DSA 是1024位,ECC 是160位,相应的对称分组密码的密钥长度是80位。
NIST 已经公布了一列推荐的椭圆曲线用来保护5个不同的对称密钥大小(80, 112, 128, 192, 256)。
一般而言,二进制域上的ECC 需要的非对称密钥的大小是相应的对称密钥大小的两倍。
椭圆曲线密码学的许多形式有稍微的不同,所有的都依赖于被广泛承认的解决椭圆曲线离散对数问题的困难性上,对应有限域上椭圆曲线的群。
引理及有关概念:
(1) 无穷远元素(无穷远点,无穷远直线)平面上任意两相异直线的位置关系
有相交和平行两种。
引入无穷远点,是两种不同关系统一。
AB ⊥L1, L2∥L1,直线AP 由AB 起绕A 点依逆时针方向转动,P 为AP 与L1的交点,如图1。
Q=∠BAP →π /2则AP → L2,可设想L1上有一点P ∞,它为L2和L1的交点,称之为无穷远点。
直线L1上的无穷远点只能有一个(因为过A 点只能有一条平行于L1的直线L2,而两直线的交点只能有一个)。
图1
结论:
1.
平面上一组相互平行的直线,有公共的无穷远点(为与无穷远点相区别,把
原来平面上的点叫做平常点)。
2. 平面上任何相交的两直线L1,L2有不同的无穷远点。
原因:若否,则L1和
L2有公共的无穷远点P ∞,则过两相异点A 和P ∞有相异两直线,与公理相矛盾。
3. 全体无穷远点构成一条无穷远直线
备注:欧式平面添加上无穷远点和无穷远直线,自然构成射影平面,如图2。
图2
(2)齐次坐标,解析几何中引入坐标系,用代数的方法研究欧氏空间。
这样的坐标法也可推广至摄影平面上,建立平面摄影坐标系。
平面上两相异直线L1,L2,其方程分别为:
L1: 0111=++c y b x a L2: 0222=++c y b x a
其中11,b a 不同时为0;22,b a 也不同时为0。
设:D=
2
2
11b a b a Dx=
2
2
11c b c b Dy=
2
2
11a c a c
若D ≠0,则两直线L1,L2相交于一平常点P(x,y),其坐标为x=Dx/D ,y=Dy/D. 这组解可表为:x/Dx=y/Dy=1/D 。
(约定:分母Dx ,Dy 有为0时,对应的分子也要为0)上述表示可抽象为(Dx ,Dy ,D)。
若 D=0,则L1∥L2,此时L1和L2交于一个无穷远点P ∞。
这个点P ∞可用过原点O 且平行于L2的一条直线L 来指出他的方向,而这条直线L 的方程就是:
022=+y b x a .
为把平常点和无穷远点的坐标统一起来,把点的坐标用(X ,Y ,Z)表示,X ,Y ,Z 不能同时为0,且对平常点(x ,y)来说,有Z ≠0,x=X/Z ,y=Y/Z ,于是有:
X / Dx = Y / Dy = Z / D ,有更好的坐标抽象(X,Y,Z),这样对于无穷远点则有Z=0也成立。
备注:
1. 若实数p ≠0,则(pX,pY,pZ)与(X,Y,Z)表示同一个点。
实质上用(X:Y:Z)
表示。
3个分量中,只有两个是独立的,具有这种特征的坐标就叫齐次坐标。
D
D Z Y
D Z X y x 1
==
2. 设有欧氏直线L ,它在平面直角坐标系Oxy 上的方程为:0=++c by ax .则L
上任一平常点(x,y)的齐次坐标为(X,Y,Z),Z ≠0,代入得:0=++cz by ax .给L 添加的无穷远点的坐标(X,Y,Z)应满足0=+by ax ,0=z ;平面上无穷远直线方程自然为:0=z . (3)任意域上的椭圆曲线
K 为域,K 上的摄影平面)(2K P 是一些等价类的集合{(X:Y:Z)}。
考虑下面的Weierstrass 方程(次数为3的齐次方程):
36242232312z a xz a z x a x yz a xyz a z y +++=++
(其中系数ai ∈K ,或ai ∈K 为K 的代数闭域)
Weierstrass 方程被称为光滑的或非奇异的是指对所有适合以下方程的射影点P=(X:Y:Z) ∈)(2K P 来说:
=),,(z y x F 036242232312=----++z a xz a z x a x yz a xyz a z y
在P 点的三个偏导数之中至少有一个不为 0若否称这个方程为奇异的。
椭圆曲线E 的定义:
椭圆曲线E 是一个光滑的Weierstrass 方程在)(2K P 中的全部解集合。
36242232312z a xz a z x a x yz a xyz a z y +++=++
备注:
1. 在椭圆曲线E 上恰有一个点,称之为无穷远点,即(0:1:0)用θ表示。
2.椭圆曲线的研究来源于椭圆积分:
⎰
)
(x E dx
这里)(x E 是x 的三次多项式或四次多项式.这样的积分不能用初等函数来表达,为此引进所谓椭圆函数.所谓椭圆曲线指的是由韦尔斯特拉斯(Weierstrass)方程,可用非齐次坐标的形式来表示,设x=X/Z ,y=Y/Z ,于是原方程可转化为:
64223312a x a x a x y a xy a y +++=++ (1) 此时,椭圆曲线E 就是方程(1)在射影平面)(2K P 上的全部平常点解,外加一个无穷远点θ组成的集合。
3.若K a a a a a ∈64321,,,,,此时椭圆曲线E 被称为定义在K 上,用E/K 表示。
如果E 能被限定在K 上,那么E 的K ——有理点集合表示为E(K),它为E 中的全体有理坐标点的集合外加无穷远点θ.
(4)实域R 上的椭圆曲线:设K=R ,此时的椭圆曲线可表为平面上的通常曲线上 的点,外加无穷远点θ。
实域R 上椭圆曲线的点的加法运算法则:
设L ∈)(2R P 为一条直线。
因为E 的方程是三次的,所以L 可与E 在)(2R P 恰有三个交点,记为P,Q,R (注意:如果L 与E 相切,那么P,Q,R 可以不是相异的)。
按下述方式定义E 上运算⊕;
设P,Q ∈ E ,L 为联接P,Q 的直线(若P=Q ,则L 取过P 点的切线);设R 为L 与E 的另一个交点;再取连接R 与无穷远点的直线L ′。
则L ′与E 的另一个交点定义为P ⊕ Q 。
以上的实际图像为椭圆曲线x x y -=32的一般化。
来自对具体曲线的抽象。
对运算更具体一些:
设 P=(x1,y1),Q=(x2,y2),P ⊕Q=(x3,y3),由P ⊕Q 的定义,设βα+=x y 为通过P,Q 两点直线L 的方程,可算出:
111212),/()(x y x x y y αβα-=--=
易见,直线L 上的一个点(x, αx+β)是在椭圆曲线E 上,当且仅当
x x x -=+32)(βα,P ⊕Q=(x1,y1) ⊕(x2,y2)=(x3,y3) =(x3,-(αx3+β)) 其中,x3= α2-x1-x2=((y2-y1) / (x2-x1) )2-x1-x2;
y3=-y1+((y2-y1)/(x2-x1))(x1-x3) ;
当P=Q 时: P ⊕Q=(x3,y3)算得 :
x3=((3x12-1)/2y1)2-2x1; y3= -y1+((3x12-1)/2y1)(x1-x3) ;
备注:
a) 如果直线L 与E 相交与三点P,Q,R(不一定相异),那么 (P ⊕Q)⊕R=θ(从图中可见);
b) 任给P ∈E,P ⊕θ=P(此时设Q= θ,易见L=L ′);
T ⊕(P=Q=R)
c) 任给P,Q ∈E 有:P ⊕Q=Q ⊕P ;
d) 设P ∈E ,那么可以找到-P ∈E 使P ⊕-P=θ;
e) 任给P,Q,R ∈E ,有(P ⊕ Q) ⊕ R= P ⊕(Q ⊕ R); 综上所述,知E 对⊕ 运算形成一个Abel 群。
f) 上述规则可开拓到任意域上,特别是有限域上。
假定椭圆曲线是定义在有限域Fq 上(q=pm),那么 E(Fq)={(x,y)∈Fq ×Fq | 64223312a x a x a x y a xy a y +++=++} ∪{θ},它对“⊕ ”形成一个群,为Abel 群。
有限域上椭圆曲线的⊕运算
令Fq 表示q 个元素的有限域,用E(Fq)表示定义在Fq 上的一个椭圆曲线E 。
定理1.(Hass 定理) E(Fq)的点数用#E(Fq)表示,则| #E(Fq)-q-1|≤2q^(1/2) (1) Fp (素域,p 为素数)上椭圆曲线,令p>3,a,b ∈Fp ,满足027423≠+b a ,由参数a 和b 定义的Fp 上的一个椭圆曲线方程为:
b ax x y ++=32 (2) 它的所有解(x,y),(x ∈Fp ,y ∈Fp),连同一个称为“无穷远点”(记为θ)的元素组成的集合记为E(Fp),由Hass 定理知:p+1-2p^(1/2)≤#E(Fp) ≤ p+1+2p^(1/2)集合E(Fp)对应下面的加法规则,且对加法⊕形成一个Abel 群: (i) θ⊕θ=θ(单位元素);
(ii)(x,y)⊕θ=(x,y),任给(x,y)∈E(Fp);
(iii)(x,y)⊕(x,-y)=θ,任给(x,y)∈E(Fp),即点(x,y)的逆元为(x,-y); (iv) 令(x1,y1),(x2,y2)为E(Fp)中非互逆元,且满足21x x ≠的两点,则(x1,y1) ⊕(x2,y2)=(x3,y3),其中
⎩⎨
⎧--=--=1
)31(32132y x x y x x x λλ,121
2x x y y --=λ (3) (v)(倍点运算规则)设(x1,y1) ∈E(Fp),y1≠0,则2(x1,y1)=(x3,y3),其中
⎩⎨
⎧--=-=1
312)(3123y x x y x x λλ,12132y a x +=λ (4) 备注:若#E(Fp)=p+1,曲线E(Fp)称为超奇异的,否则称为非超奇异的。
例子:23F 上的一个椭圆曲线,令132++=x x y 是23F 上的一个方程(a=b=1),则该椭圆曲线方程在23F 上的解为(132++=x x y 的点):
(0,1),(0,22),(1,7),(1,16),(3,10),(3,13),(4,0),(5,4),(5,19),(6,4),
(6,19),(7,11),(7,12),(9,7),(9,16),(11,3),(11,20),(12,4),(12,19),(13,7),(13,16),(17,3),(17,20),(18,3),(18,20),(19,5),(19,18);θ。
群E(23F )有28个点(包括无穷远点θ )。
(2) F2m 上的椭圆曲线
F2m 上由参数a,b ∈F2m ,b ≠0定义的一个非超奇异椭圆曲线E(F2m)是方程
b ax x xy y ++=+232 (5) 的解集合(x,y),其中x,y ∈F2m ,连同θ。
E(F2m)的加法规则如下: (i)θ+θ=θ;
(ii)任给(x,y)∈E(F2m),则(x,y)⊕θ=(x,y);
(iii)任给(x,y)∈E(F2m),则(x,y)+(x,x+y)=θ,即点(x,y)的逆为(x,x+y); (iv) 两个相异且不互逆的点的加法规则:令(x1,y1),(x2,y2) ∈E(F2m)且有x1≠x2则(x1,y1)⊕(x2,y2)=(x3,y3),其中
⎩⎨
⎧+++=++++=1
3)21(32132y x x x y a x x x λλλ,121
2x x y y ++=λ (v) 倍点规则,令(x1,y1) ∈E(F2m),其中x1≠0,则2(x1,y1)=(x3,y3),其中
⎩⎨⎧++=++=3
)1(1333
2x x y a x λλλ,11
12x y x +=λ 易见,群E(F2m)为Abel 群。
例:F 24上的一个椭圆曲线
f(x)=x^4+x+1为F 2上的一个不可约多项式,易见
F 24=F 2[x] / (f(x)) = {(k0,k1,k2,k3) | (k0,k1,k2,k3)=332210αααk k k k +++, α为f(x)的零点,1k ∈F 2}
假定F24上的非超奇异椭圆曲线有下述方程定义:12432++=+x x xy y α,注意f(α)=0。
方程应表为:)1000()1100()1000()1000()1000(232++=+x x xy y .
椭圆曲线密码体制
(1)知E(Fq)对点的“⊕”运算形成一个Abel 群,设p ∈E(Fq),若p 的周期很大,即使
p ⊕p ⊕……⊕ p=θ (共有 t 个p 相加)
成立的最小正整数t,希望t 很大(t = p 的周期,表示为∏(p)=t).并且对Q ∈E(Fq),定有某个正整数m 使Q=m·p=p ⊕ ……⊕p(共有t 个p 相加) 定义
m=㏒pQ (m 为以p 为底Q 的对数)。
椭圆曲线上的点形成的群E(Fq),相关它的离散对数问题是难处理的。
(2)建立椭圆曲线密码体制
选取一个基域Fq ,在Fq 上随机寻找一条阶含有大素数因子的随机椭圆曲线E 及E 上阶为素数n 的基点G=(xG,yG),a,b 是椭圆曲线E 的参数,认为已知。
则我们已经建立了椭圆曲线公钥密码系统,系统参数为(E(Fq),G,n,Q)。
注意:
在这个密码体制中,具体的曲线及点G 和它的n 都是公开信息。
密码体制的形式采用EIGamal 体制,是完全类比过来。
a)密钥的生成
Bob(使用者)执行了下列计算: i) 在区间[1,n-1]中随机选取一个整数d 。
ii) 计算点Q=dG(d 个G 相⊕), 如果Q 是无穷远点或G ,则需重新选择d; iii) Bob 公开自己的公开密钥(E(Fq),G,n,Q); iv) Bob 的私钥为整数d;
Alice 要发送消息m 给Bob ,Alice 执行: i) 用户A 找出B 的公钥(E(Fq),G,n,Q),计算P=(x1,y1)=kG(k 个P 相⊕ ); ii) 将m 表示成一个域元素m ∈Fq ;
iii) 然后随机选取一个整数k ,其中1≤k≤n -1; iv) 计算P=(x1,y1)=kG(k 个P 相⊕ ); v) 计算点(x2,y2)=kQ,如果x2=0,则回到第iii)步; ⅵ) 计算C =m·x2
ⅶ) 传送加密数据(x1,y1,C)给Bob b) Bob 的解密过程
Bob 收到Alice 的密文(x1,y1,C)后,执行 i )使用私钥d ,计算点(x2,y2)=d(x1,y1),因为dP=d(kG)=dkG=k(dG)=kQ=(x2,y2); 再计算Fq 中1
2-x =?
ii )通过计算m =C·1
2-x ,恢复出明文数据m 。
椭圆曲线的数字签名加解密算法分析
椭圆曲线公钥密码是基于椭圆曲线离散对数问题的难解性,即在有限域Fq 上,已知P 、Q 在椭圆曲线E 上的有理点,要寻找一个d ∈Fq ,使得Q=dP ,这是很难解的。
从上面算法可知,在解密过程中,要求出x2-1,必须知道x2,而要知道x2,必须知道dP ,或者必须知道kQ ,而知道G 、Q 、P ,要求出用户A 的私钥d 或随机整数k ,这相当于求解椭圆曲线离散对数问题,就现有的计算技术和能力来说,如果椭圆曲线公钥密码系统中的椭圆曲线是随机选取的,而且它的阶包含有大素数因子,那么这是一个很难的问题。
也就是必须求逆运算,这是一个很费时和复杂的过程。
Certicom 是ECC 的主要商业支持者,拥有超过130项专利,并且已经以2千5百万美元的交易获得了国家安全机构(NSA)的技术许可。
他们也已经发起了许多对ECC 算法的挑战。
已经被解决的最复杂的是109位的密钥,是在2003年初由一个研究团队破解的。
破解密钥的这个团队使用了基于生日攻击的大块并行攻击,用超过10,000台奔腾级的PC 机连续运行了540天以上。
对于ECC 推荐的最小密钥长度163位来说,当前估计需要的计算资源是109位问题的108倍。
在2005年2月16日,NSA 宣布决定采用椭圆曲线密码的战略作为美国政府标准的一部分,用来保护敏感但不保密的信息。
NSA 推荐了一组被称为Suit B 的算法,包括用来密钥交换的Menezes-Qu-Vanstone 椭圆曲线和Diffie-Hellman 椭圆曲线,用来数字签名的椭圆曲线数字签名算法。
这一组中也包括AES 和SHA 。
椭圆曲线密码学体制。