ECC 构筑安全可靠的区块链

如今不少基于区块链技术的数字货币系统,好比:比特币和以太坊,它们都使用了椭圆曲线密码学(ECC, Elliptic Curve Cryptography)来保证货币的安全性。html

 

ECC 是一种公开密钥密码学,又称为非对称密码学。在这种密码学中,须要产生一对密钥。其中一个密钥称为私钥,须要保密;另外一个密钥称为公钥,是能够公开让别人知道的。算法

 

私钥和公钥在数学上的关系是不可逆的,也就是经过某个数学函数,咱们能够私钥计算出公钥,可是不能从公钥反向推导出私钥(或者说从计算上是不可行的)。安全

 

 

椭圆曲线加密算法对应的数学函数是椭圆曲线乘法,而另外一种普遍使用的非对称加密算法 RSA (由三个发明人姓氏的开头字母组成)对应的数学函数是极大整数的因式分解。网络

 

 

 

与对称密码学使用相同的密钥进行加解密不一样,非对称密码学有一个有用的特性:若是用公钥对数据进行加密,只有用对应的私钥才能解密;若是用私钥对数据进行加密,那么只有用对应的公钥才能解密。函数

 

 

一据说椭圆曲线,不少人会凭直觉认为这条数学曲线像个椭圆,其实否则。椭圆曲线由于用二元三次方程 y2 = x3 + ax + b 表示,相似椭圆周长计算方程 ECC 构筑安全可靠的区块链 而得名。如下是比特币的椭圆曲线图,是否是一点也不像椭圆:性能

 

ECC 构筑安全可靠的区块链

 

椭圆曲线上点的加法定义:任意取椭圆曲线上两点 A、C (若 A、C 两点重合,则作 A 点的切线)作直线交于椭圆曲线的另外一点 D',过 D'作 y 轴的平行线交于 D。在这里咱们规定 A+C=D。区块链

 

ECC 构筑安全可靠的区块链

 

k 个相同的点 P 相加,咱们记做 kP。以下图:P+P+P = 2P+P = 3P。加密

 

ECC 构筑安全可靠的区块链

 

若是咱们定义 K=kG, k 为整数,G 为椭圆曲线上的一个点,该等式就是表示 k 个 G 点相加或 k 乘以G 获得的结果为点 K,K 也为椭圆曲线上的一个点。spa

 

咱们能够用这个等式中的 k 做为私钥,而结果点 K 做为公钥。G 为该椭圆曲线的基点,和参数 a,b 都是公开的设计

 

已知整数 k 和基点 G,根据椭圆曲线加法法则,推算出点 K 是很是容易的,由于存在快速算法能够将计算复杂度下降到O(logk)

 

私钥推导出公钥的过程是不可逆的,即如今数学上尚未有效的方法能够从基点 G 和点 K 推算出整数 k。若是使用遍历法来寻找整数 k,其计算复杂度为O(k)。在实际使用时,整数 k 会取一个很是大的值。

 

好比: k 为一个78位的十进制数,由私钥推算出公钥的计算复杂度为 O(78),用遍历法从公钥找出私钥的计算复杂度为 O(1078),而宇宙中已知的原子总数大概为 1080,因此采用暴力破解法破解私钥是根本不可行的。

 

 

为了让椭圆曲线更形象易理解,咱们上面画的曲线都是连续的,实际用于加密的曲线都是有限域上定义的离散曲线。

 

随着椭圆曲线参数 a、 b,基点 G 的不一样,椭圆曲线的加密性能也不同。为了得到更高的安全性,对这些参数也有一些特定的要求。

 

咱们会给一些经常使用的使用特定参数的椭圆曲线取一个名字。好比:美国国家标准与技术研究院(NIST)和美国国家安全局(NSA)推荐过的 secp256r一、secp521r1 等椭圆曲线(有些开源社区怀疑这些曲线中参数有可能被精心选取,致使曲线加密性能弱化),中国国家密码局认定的 SM2 国产密码算法。

 

比特币和以太坊使用的椭圆曲线是 secp256k1。该曲线的参数很是简单(人们相信不是为了设计一条弱曲线而被精心构造的):

 

ECC 构筑安全可靠的区块链

( secp256k1 的 a、b 以及基点 G)

 

 

与传统的 RSA 算法相比,严格选定参数的 ECC 有更强的安全性,不易被攻击。

 

1)破解相同位数密钥所需能量:

 

有科学家经过计算攻破一个密码学算法须要多少能量并把它与水沸腾须要多少能量对比来衡量一个加密算法的安全性。

 

通过他的分析,破解一个228位的 RSA 密钥须要的能量少于煮沸一汤匙水的能量。而破解一个228位的椭圆曲线密钥须要足够煮沸地球上全部水的能量。

 

ECC 构筑安全可靠的区块链

 

RSA 要达到一个安全的水平,须要一个至少2380位的密钥。此外 RSA 算法还有一个缺点就是随着密钥长度的增长,其安全性的增益是减小的。这意味着咱们没法经过不断增长密钥长度来得到更高的安全性。

 

2)性能对比:

 

另外一方面,使用椭圆曲线签名算法(ECDSA)作签名的性能也比 RSA 签名算法高不少。根据某些研究结果,在得到相同的安全性时,前者要比后者快20多倍。

 

椭圆曲线加密算法可以以更短的密钥获取与其余加密算法相同的安全性及更快的运算速度,因此 ECC 正在快速成为网络隐私和安全的首选解决方案。比特币等数字货币系统也纷纷使用 ECC 做为其安全性的基石。

 

 

下面咱们简单说说椭圆曲线密码学在比特币中的用法。

 

 

ECC 构筑安全可靠的区块链

 

 

 

另:在生成私钥 k 的过程当中,确保 k 是真正随机生成的很是重要。曾经有些厂商的随机数生成算法由于有漏洞或者故意留有后门,形成了巨大的安全隐患。

 

http://toutiao.manqian.cn/wz_aJj096BV3Mx.html

相关文章
相关标签/搜索