ECC椭圆曲线加密扫盲贴

椭圆曲线密码*ECC(Elliptic Curve Cryptography)可用短的多的**获得同样的安全性,因此具有广泛的应用前景。ECC已被IEEE公钥密码标准P1363采用。

其实我本科的时候是学过椭圆曲线加密的,也用Openssl玩过一段时间,但是经不住时间的摧残,现在已经完全忘记了。这篇博客旨在帮助自己复习,同时给需要的朋友提供一点参考资料


椭圆曲线方程

椭圆曲线并非椭圆,而是因为其曲线方程和计算椭圆周长的方程类似。一般地,椭圆曲线的曲线方程是以下形式的三次方程:

y2+axy+by=x3+cx2+dx+e y^2+axy+by = x^3 +cx^2+dx+e
其中abcdea、b、c、d、e都是满足某些简单条件的实数。定义包括一个称为无穷远点的元素OO。椭圆曲线的具体例子如下图所示。ECC椭圆曲线加密扫盲贴
由图可见:椭圆曲线关于x轴对称。
椭圆曲线上的加法定义:如果其上的3个点位于同一直线上,那么它们的和为O.进一步可如下定义椭圆曲线的加法律:
1、O为加法单位元,即对椭圆曲线上的任意一点P,有P+O=P
2、设P=(x,y)是椭圆去线上的一点,他的加法逆元定义为P2=P1=(x,y)P_2=-P_1=(x,-y)
3、设Q和R是椭圆曲线上x坐标不同的两点,Q+R的定义如下:画一条通过Q、R的直线,与椭圆曲线交于P1P_1(这一交点是唯一的,除非所做的直线是Q点或R点的切线,此时分别取P1=QP1=RP_1=Q和P_1=R)。由Q+R+P1=OQ+R=P1Q+R+P_1=O,得Q+R=-P_1
4、点Q得倍数定义如下,在点Q做椭圆曲线得一条切线,设切线与椭圆曲线交于S,定义2Q=Q+Q=-S。类似地,可定义3Q=Q+Q+Q,···,等。
以上定义具有加法地一般性质,包括交换律和结合律等。


有限域上的椭圆曲线

密码学中普遍采用的是有限域上的椭圆曲线,在式1-1中所有系数都是有限域GF§中的元素(p为大素数)。其中最常用的是由方程:
y2=x3+ax+b(a,bGF(p),4a3+27b20)y^2=x^3+ax+b(a,b\in GF(p),4a^3+27b^2\ne 0)
椭圆曲线Ep(a,b)E_{p}(a,b)表示系数分别为a,b,p的椭圆曲线方程。
一般而言,Ep(a,b)E_{p}(a,b)由以下方式产生:
(1)对每一x0x<pxx(0\le x \lt p且x为整数 ),计算x3+ax+b(modp)x^3+ax+b(mod p)
(2)决定(1)中求得的值在模p下是否有平方根,如果没有,则曲线上没有与这一相对应的点。如果有,则求出两个平方根(y=0时只有一个平方根)。
Ep(a,b)E_{p}(a,b)上的加法定义如下:
P,QEp(a,b)P,Q\in E_{p}(a,b),则
(1)P+O=P
(2)如果P=(x,y),那么(x,y)+(x,-y)=O,即(x,-y)是P的加法逆元,表示为-P