背景
ECC英文全称"Elliptic Curve Cryptography",其背后的密码学原理或者说安全性,是基于椭圆曲线离散对数问题(Elliptic Curve Discrete Logarithm Problem,ECDLP)。ECC密码学被普遍认为是RSA密码系统的接替算法,相比于RSA,ECC在使用更短的密钥长度即可达到同等的安全性,比如ECC164位的密钥,相当于RSA 1024位密钥提供的保密强度,且由于密钥更短,运算速度和带宽占用上也更有优势。
关于ECC的数学原理介绍和使用方法,网上有许多教程,下面主要是个人对认为比较难理解的知识点的思考和汇总。
椭圆曲线的确定
描述一条Fp上的椭圆曲线,常用到六个参数:
T=(p,a,b,G,n,h)。
p 、a 、b 用来确定一条椭圆曲线,
G为基点,
n为点G的阶,
h 是椭圆曲线上所有点的个数m与n相除的整数部分。
这几个参数取值的选择,直接影响了加密的安全性。参数值一般要求满足以下几个条件:
- p 当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求;
- p≠n×h;
- pt≠1 (mod n),1≤t<20;
- 4a3 + 27b2 ≠ 0 (mod p);
- n 为素数;
- h≤4
椭圆曲线的选择
使用ECC时,应该从密码学家证明过具备安全性的曲线中选择曲线使用,如secp256k1, P-521 ,Curve25519等,不应该使用私有的曲线。即不要自行选择或者定义T=(p,a,b,G,n,h)中这些确定椭圆曲线的参数。
密钥长度的选项和选择
由于我们对RSA比较熟悉,因此我们可以把两种算法中不同密钥长度的安全性进行类比,这样就可以基于RSA的经验,来选择合适的密钥长度,下表是两种算法,在提供同等级安全时,各自需要的密钥长度。就RSA而言,目前主流密钥长度至少都是1024bits以上,低于或者等于1024bit的密钥已经不建议使用,对于一些政府部门,金融机构,应选择使用大于2048bits的密钥长度。
椭圆曲线明文,密文,密钥和椭圆曲线的关系
很多文章对椭圆曲线的数学原理的解释十分详细,但是看完还是没办法理解是如何将这个曲线和加解密联系在一起。其实明文