浅谈椭圆曲线加密ECC

椭圆曲线加密法(ECC, Elliptic Curve Cryptography)与RSA同样属于非对称加密,但是在很多方面胜过RSA:

  1. 在相同密钥长度下,椭圆曲线比RSA拥有更强的安全性;
  2. 达到相同的安全性时,椭圆曲线更节约存储空间和算力;

像一般的非对称加密原理那样,椭圆曲线也是基于“从a推导出b很难,从b推导出a容易”这样的模式实现了非对称加密的。RSA通过大质数分解实现相同的模式,而椭圆曲线则是用更复杂的方法实现了相同的模式。

下面简单介绍一下椭圆曲线加密的实现原理。

首先,椭圆曲线加密通过椭圆曲线实现了一个阿贝尔群,阿贝尔群有以下特点:

  1. 闭包       如果a和b都是G的成员,那么a+b也是G的成员。
  2. 组合性   (a+b)+c=a+(b+c)
  3. 单位元   存在确切的一个值,称之为单位元0,使得 a+0=0+a=a
  4. 逆元      每个元素都有一个相反数b,使得 a+b=0
  5. 交换性   a+b=b+a

椭圆曲线是这样实现阿贝尔群的,首先定义椭圆曲线方程

椭圆曲线方程(x, y, a, b 均为 实数)

然后定义:

  1. 群元素为椭圆曲线上的点,外加单位元
  2. 单位元为无穷远点,记作0
  3. 椭圆上的点P的逆元-P是与P点以X轴轴对称的点
  4. 群运算P+Q定义为 在椭圆曲线上画出点P和点Q,连直线穿过P和Q,该直线会与椭圆曲线相较于第三个点,称之为R。根据R取得R的逆元-R,最终 P+Q=-R
  5. n x P定义为 P+P+...+P (n个P相运算)
运算的几何表示形式

但是密码学中,并不能使用上面介绍的实数域上的椭圆曲线。因为

1. 实数域上的椭圆曲线是连续的,有无限个点,密码学要求有限点。

2. 实数域上的椭圆曲线的运算有误差,不精确。密码学要求精确。

因此我们需要把椭圆曲线上的点限定为有限几个,首先将x, y, a, b的值域从实数限定为一个整数模n环(n为质数),这样值就限定为0到n-1的整数,因此椭圆曲线公式就被改造成了如下的样子。

改造后的公式

改造之后仍然是一个阿贝尔群,但元素集合已经变成了有限集。

连续的曲线变成了离散的点

关键的东西来了,已知点P和Q,求k,使得 kP = Q

事实和理论均证明求k是非常复杂的,但是给定k来验证 kP = Q的过程却非常简单,这和RSA采用的大质因数分解法的性质是一样的。因此,这个问题就是椭圆曲线加密的基石。

更详细的内容请参见:http://andrea.corbellini.name/2015/05/17/elliptic-curve-cryptography-a-gentle-introduction/

猜你喜欢

转载自blog.csdn.net/Ahxing1985/article/details/82027517
今日推荐