椭圆曲线加密法(ECC, Elliptic Curve Cryptography)与RSA同样属于非对称加密,但是在很多方面胜过RSA:1. 在相同密钥长度下,椭圆曲线比RSA拥有更强的安全性;
2. 达到相同的安全性时,椭圆曲线更节约存储空间和算力;
像一般的非对称加密原理那样,椭圆曲线也是基于“从a推导出b很难,从b推导出a容易”这样的模式实现了非对称加密的。RSA通过大质数分解实现相同的模式,而椭圆曲线则是用更复杂的方法实现了相同的模式。
首先,椭圆曲线加密通过椭圆曲线实现了一个阿贝尔群,阿贝尔群有以下特点:
闭包 如果a和b都是𝔾的成员,那么a+b也是𝔾的成员。
组合性 (a+b)+c=a+(b+c)
单位元 存在确切的一个值,称之为单位元0,使得 a+0=0+a=a
逆元 每个元素都有一个相反数b,使得 a+b=0
交换性 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/
网友评论