本文主要目的是对椭圆曲线做一个形象的介绍,比较通俗的可以理解与传统的基于取模运算的加密算法如RSA的区别。没有涉及过多密码学运算和数论知识。
如果感兴趣可以参考Elliptic Curve Cryptography: a gentle introduction,比较容易看懂,其中还配置了一个可视化的椭圆曲线工具,本文的配图都是利用该工具生成的。
好了,开始进入主题:Elliptic Curve Cryptography (ECC)
1. 简单概念
Elliptic Curve Cryptography 椭圆加密算法,简称ECC,是基于椭圆曲线数学理论的一种非对称加密算法(公钥加密算法),与RSA这些广为使用的加密算法相比,尽管目前ECC加密算法也应用的很广泛,当其基本的实现原理还是对大多数人来说比较陌生。
特性:与RSA相比可以使用更短的密钥实现与RSA相当或者更高的安全性。
一下方程式表示了椭圆曲线,其中a, b, c, d为系数。
y^2 = ax^3 + bx^2 + cx + d
当a = 1, b = 0, c = -7, d = 10 时,方程表示如下图所示:
y^2 = x^3 - 7x + 10
此时曲线显示如下图蓝线所示:
可以看出椭圆曲线并不是椭圆形的,形状与名称并没有太大联系。
2. 运算法则
2.1 加法
在这里我们取最简单的一种方式来解释椭圆曲线中的加法,其它的特殊方式可以参考 Elliptic Curve Cryptography: a gentle introduction
如下图所示,过曲线上两点P和Q画一条直线,与曲线交点关于x轴对称位置的点R,即为P + Q。 R = P + Q
2.2 二倍运算
当2.1中Q = P的时候,可以得到R = 2P。但此时无法用上述方法进行解释。因此在这种情况下,两点重叠的时候,将椭圆曲线在P点的切线,与椭圆曲线的交点关于x轴对称位置的点,定义为R,即2P。如下图所示: