ECC椭圆曲线详解
Posted 气血龙渊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ECC椭圆曲线详解相关的知识,希望对你有一定的参考价值。
转载:https://www.cnblogs.com/Kalafinaian/p/7392505.html
前言
ECC英文全称"Ellipse Curve Cryptography"
与传统的基于大质数因子分解困难性的加密方法不同,ECC通过椭圆曲线方程式的性质产生密钥ECC164位的密钥产生一个安全级,相当于RSA 1024位密钥提供的保密强度,而且计算量较小,处理速度更快,存储空间和传输带宽占用较少。目前我国居民二代身份证正在使用 256 位的椭圆曲线密码,虚拟货币比特币也选择ECC作为加密算法。
从射影平面讲起
古希腊数学家欧几里得的《几何原本》提出了五条公设。
1.由任意一点到任意一点可作直线。
2.一条有限直线可以继续延长。
3.以任意点为心及任意的距离可以画圆。
4.凡直角都相等。
5.同一平面内一条直线a和另外两条直线b.c相交,若在a某一侧的两个内角的和小于两直角,则b.c两直线经无限延长后在该侧相交。
《几何原本》只有在第29个命题:“一条直线与两条平行直线相交,则所成的内错角相等,同位角相等,且同旁内角之和等于两直角”中才用到第五公设,即《几何原本》中可不依靠第五公设而推出前28命题。因此,一些数学家提出,第五公设能不能不作为公设,而作为定理?能不能依靠前四个公设来证明第五公设?这就是几何发展史上最著名的,争论了长达两千多年的关于“平行线理论”的讨论
1820年代,俄国喀山大学罗巴切夫斯基用“至少可以找到两条相异的直线,且都通过P点,并不与直线R相交”代替第五公设,然后与欧氏几何的前四个公设结合成一个公理系统,他经过细致深入的推理过程中,得出了一个又一个在直觉上匪夷所思,但在逻辑上毫无矛盾的几何体系。
这种几何学被称为罗巴切夫斯基几何,简称罗氏几何。从罗氏几何学中,可以得出这样一个结论:逻辑上不矛盾的一些公理都有可能提供一种几何学。现存非欧几何的类型可以概括如下:
1.坚持第五公设,引出欧几里得几何。
2.“可以引最少两条平行线”为公设,罗氏几何(双曲几何)。
3.“一条平行线也不能引”为公设,黎曼几何(椭圆几何)
左:双曲几何,即罗氏几何;中:欧几里德几何;右:椭圆几何,即黎曼几何
了解非欧式几何,就可以理解平行线的交点。
定义平行线相交于无穷远点P∞,使平面上所有直线都统一为有唯一的交点
性质:
1.一条直线只有一个无穷远点;一对平行线有公共的无穷远点
2.任何两条不平行的直线有不同的无穷远点(否则会造成有两个交点)
3.平面上全体无穷远点构成一条无穷远直线
射影平面:平面上全体无穷远点与全体平常点构成射影平面
射影平面点的定义
对普通平面上点(x,y),令x=X/Z,y=Y/Z,Z≠0,则投影为射影平面上的点(X:Y:Z)
(1)求点(1,2)在新的坐标体系下的坐标
∵X/Z=1 ,Y/Z=2(Z≠0)
∴X=Z,Y=2Z ∴坐标为(Z:2Z:Z),Z≠0
即(1:2:1)(2:4:2)(1.2:2.4:1.2)等形如(Z:2Z:Z),Z≠0的坐标都是(1,2)在新的坐标体系下的坐标
(2) 求平行线L1:X+2Y+3Z=0 与L2:X+2Y+Z=0 相交的无穷远点
∵ L1∥L2 所以有Z=0, X+2Y=0
∴坐标为(-2Y:Y:0),Y≠0
即(-2:1:0)(-4:2:0)(-2.4:1.2:0)等形如(-2Y:Y:0),Y≠0
椭圆曲线
一条椭圆曲线是在射影平面上满足威尔斯特拉斯方程(Weierstrass)所有点的集合
Y
2
Z
+
a
1
X
Y
Z
+
a
3
Y
Z
2
=
X
3
+
a
2
X
2
Z
+
a
4
X
Z
2
+
a
6
Z
3
Y^2Z+a_1XYZ+a_3YZ^2 = X^3+a_2X^2Z+a_4XZ^2+a_6Z^3
Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3
1椭圆曲线方程是一个齐次方程
2曲线上的每个点都必须是非奇异的(光滑的),偏导数FX(X,Y,Z)、FY(X,Y,Z)、FZ(X,Y,Z)不同为0
3椭圆曲线的形状并不是椭圆的。只是因为椭圆曲线的描述方程,类似于计算一个椭圆周长的方程故得名
椭圆曲线示例
非椭圆曲线示例
这两个方程都不是椭圆曲线,因为他们在(0:0:1)点处(即原点)没有切线,不满足椭圆曲线每个点都必须是非奇异的(光滑的)
椭圆曲线普通方程
椭圆曲线普通方程:
y
2
+
a
1
x
y
+
a
3
y
=
x
3
+
a
2
x
2
+
a
4
x
+
a
6
y^2+a_1xy+a_3y=x^3+a_2x^2+a_4x+a_6
y2+a1xy+a3y=x3+a2x2+a4x+a6
无穷远点 (0, Y, 0)
平常点(x,y)斜率k:
F
x
(
x
,
y
)
=
a
1
y
−
3
x
2
−
2
a
2
x
−
a
4
F_x(x,y)=a_1y−3x^2−2a_2x−a_4
Fx(x,y)=a1y−3x2−2a2x−a4
F y ( x , y ) = 2 y + a 1 x + a 3 F_y(x,y)=2y+a_1x+a_3 Fy(x,y)=2y+a1x+a3
k = − F x ( x , y ) F y ( x , y ) = 3 x 2 + 2 a 2 x + a 4 − a 1 y 2 y + a 1 x + a 3 k=−\\fracFx(x,y)Fy(x,y)=\\frac3x^2+2a_2x+a_4−a_1y2y+a_1x+a3 k=−Fy(x,y)Fx(x,y)=2y+a1x+a33x2+2a2x+a4−a1y
椭圆曲线阿贝尔群
我们已经看到了椭圆曲线的图象,但点与点之间好象没有什么联系。我们能不能建立一个类似于在实数轴上加法的运算法则呢?这就要定义椭圆曲线的加法群,这里需要用到近世代数中阿贝尔群。
在数学中,群是一种代数结构,由一个集合以及一个二元运算所组成。已知集合和运算(G,*)如果是群则必须满足如下要求
1.封闭性:∀a,b∈G,ab ∈ G
2.结合性: ∀a,b,c∈G ,有 (ab)c = a (b*c)
3.单位元:ョe∈G, ∀a ∈G,有ea = ae = a
4.逆元: ∀a ∈G ,ョb∈G 使得 ab = ba = e
阿贝尔群除了上面的性质还满足交换律公理a * b = b * a
同样在椭圆曲线也可以定义阿贝尔群。
任意取椭圆曲线上两点P、Q(若P、Q两点重合,则作P点的切线),作直线交于椭圆曲线的另一点R’,过R’做y轴的平行线交于R,定义P+Q=R。这样,加法的和也在椭圆曲线上,并同样具备加法的交换律、结合律
同点加法:
若有k个相同的点P相加,记作kP
P+P+P=2P+P=3P
有限域椭圆曲线
椭圆曲线是连续的,并不适合用于加密;所以,我们必须把椭圆曲线变成离散的点,我们要把椭圆曲线定义在有限域上。我们给出一个有限域Fp
- Fp中有p(p为质数)个元素0,1,2,…, p-2,p-1
- Fp的加法是a+b≡c(mod p)
- Fp的乘法是a×b≡c(mod p)
- Fp的除法是a÷b≡c(mod p),即 a×b^(-1)≡c (mod p),b-1也是一个0到p-1之间的整数,但满足b×b-1≡1 (mod p)
- Fp的单位元是1,零元是 0
- Fp域内运算满足交换律、结合律、分配律
椭圆曲线Ep(a,b),p为质数,x,y∈[0,p-1]
y
2
=
x
3
+
a
x
+
b
(
m
o
d
p
)
y^2=x^3+ax+b(mod \\quad p)
y2=x3+ax+b(modp)
选择两个满足下列约束条件的小于p的非负整数a、b
4
a
3
+
27
b
2
≠
0
(
m
o
d
p
)
4a^3+27b^2≠0(mod\\quad p)
4a3+27b2=0(modp)
Fp上的椭圆曲线同样有加法
1.无穷远点 O∞是零元,有O∞+ O∞= O∞,O∞+P=P
2.P(x,y)的负元是 (x,-y mod p)= (x,p-y) ,有P+(-P)= O∞
3.P(x1,y1),Q(x2,y2)的和R(x3,y3) 有如下关系:
x3≡k2-x1-x2(mod p)
y3≡k(x1-x3)-y1(mod p)
若P=Q 则 k=(3x2+a)/2y1mod p
若P≠Q,则k=(y2-y1)/(x2-x1) mod p
例题椭圆曲线已知E23(1,1)上两点P(3,10),Q(9,7),求(1)-P,(2)P+Q,(3) 2P
(
1
)
−
P
=
(
3
,
−
10
m
o
d
23
)
=
(
3
,
13
)
(1)−P=(3,−10mod23)=(3,13)
(1)−P=(3,−10mod23)=(3,13)
( 2 ) k = 7 − 10 9 − 3 = − 2 − 1 m o d 23 (2)k=\\frac7−109−3=−2^−1mod23 (2)k=9−37−10=−2−1mod23
2 ⋅ 2 − 1 = 1 m o d 23 ⇒ 2 − 1 = 12 \\quad\\quad2⋅2^−1=1mod23⇒2^−1=12 2⋅2−1=1mod23⇒2−1=12
k = − 12 m o d 23 = 11 \\quad\\quad k=−12mod23=11 k=−12mod23=11
P + Q = ( 1 1 2 − 3 − 9 m o d 23 , 11 × ( 3 − ( − 6 ) ) m o d 23 ) = ( 17 , 20 ) \\quad\\quad P+Q=(11^2−3−9mod23,11×(3−(−6))mod23)=(17,20) P+Q=(112−3−9mod23,11×(3−(−6))mod23)=(17,20)
以上是关于ECC椭圆曲线详解的主要内容,如果未能解决你的问题,请参考以下文章