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

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


椭圆曲线方程

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

cer公钥转pem ecc公钥_密码体制

其中cer公钥转pem ecc公钥_密码学_02都是满足某些简单条件的实数。定义包括一个称为无穷远点的元素cer公钥转pem ecc公钥_公钥密码_03。椭圆曲线的具体例子如下图所示。

cer公钥转pem ecc公钥_公钥密码_04


由图可见:椭圆曲线关于x轴对称。

椭圆曲线上的加法定义:如果其上的3个点位于同一直线上,那么它们的和为O.进一步可如下定义椭圆曲线的加法律:

1、O为加法单位元,即对椭圆曲线上的任意一点P,有P+O=P

2、设P=(x,y)是椭圆去线上的一点,他的加法逆元定义为cer公钥转pem ecc公钥_区块链_05

3、设Q和R是椭圆曲线上x坐标不同的两点,Q+R的定义如下:画一条通过Q、R的直线,与椭圆曲线交于cer公钥转pem ecc公钥_密码学_06(这一交点是唯一的,除非所做的直线是Q点或R点的切线,此时分别取cer公钥转pem ecc公钥_密码学_07)。由cer公钥转pem ecc公钥_cer公钥转pem_08

4、点Q得倍数定义如下,在点Q做椭圆曲线得一条切线,设切线与椭圆曲线交于S,定义2Q=Q+Q=-S。类似地,可定义3Q=Q+Q+Q,···,等。

以上定义具有加法地一般性质,包括交换律和结合律等。


有限域上的椭圆曲线

密码学中普遍采用的是有限域上的椭圆曲线,在式1-1中所有系数都是有限域GF§中的元素(p为大素数)。其中最常用的是由方程:
cer公钥转pem ecc公钥_公钥密码_09
椭圆曲线cer公钥转pem ecc公钥_区块链_10表示系数分别为a,b,p的椭圆曲线方程。
一般而言,cer公钥转pem ecc公钥_区块链_10由以下方式产生:
(1)对每一cer公钥转pem ecc公钥_公钥密码_12,计算cer公钥转pem ecc公钥_密码学_13
(2)决定(1)中求得的值在模p下是否有平方根,如果没有,则曲线上没有与这一相对应的点。如果有,则求出两个平方根(y=0时只有一个平方根)。
cer公钥转pem ecc公钥_区块链_10上的加法定义如下:
cer公钥转pem ecc公钥_密码体制_15,则
(1)P+O=P
(2)如果P=(x,y),那么(x,y)+(x,-y)=O,即(x,-y)是P的加法逆元,表示为-P