ECC椭圆曲线加密扫盲贴

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

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


椭圆曲线方程

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

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


有限域上的椭圆曲线

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

你可能感兴趣的:(区块链,密码学,区块链)