如今不少基於區塊鏈技術的數字貨幣系統,好比:比特幣和以太坊,它們都使用了橢圓曲線密碼學(ECC, Elliptic Curve Cryptography)來保證貨幣的安全性。html
ECC 是一種公開密鑰密碼學,又稱爲非對稱密碼學。在這種密碼學中,須要產生一對密鑰。其中一個密鑰稱爲私鑰,須要保密;另外一個密鑰稱爲公鑰,是能夠公開讓別人知道的。算法
私鑰和公鑰在數學上的關係是不可逆的,也就是經過某個數學函數,咱們能夠從私鑰計算出公鑰,可是不能從公鑰反向推導出私鑰(或者說從計算上是不可行的)。安全
橢圓曲線加密算法對應的數學函數是橢圓曲線乘法,而另外一種普遍使用的非對稱加密算法 RSA (由三個發明人姓氏的開頭字母組成)對應的數學函數是極大整數的因式分解。網絡
與對稱密碼學使用相同的密鑰進行加解密不一樣,非對稱密碼學有一個很有用的特性:若是用公鑰對數據進行加密,只有用對應的私鑰才能解密;若是用私鑰對數據進行加密,那麼只有用對應的公鑰才能解密。函數
一據說橢圓曲線,不少人會憑直覺認爲這條數學曲線像個橢圓,其實否則。橢圓曲線由於用二元三次方程 y2 = x3 + ax + b 來表示,相似橢圓周長計算方程 而得名。如下是比特幣的橢圓曲線圖,是否是一點也不像橢圓:性能
橢圓曲線上點的加法定義:任意取橢圓曲線上兩點 A、C (若 A、C 兩點重合,則作 A 點的切線)作直線交於橢圓曲線的另外一點 D',過 D'作 y 軸的平行線交於 D。在這裏咱們規定 A+C=D。區塊鏈
k 個相同的點 P 相加,咱們記做 kP。以下圖:P+P+P = 2P+P = 3P。加密
若是咱們定義 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。該曲線的參數很是簡單(人們相信不是爲了設計一條弱曲線而被精心構造的):
( secp256k1 的 a、b 以及基點 G)
與傳統的 RSA 算法相比,嚴格選定參數的 ECC 有更強的安全性,不易被攻擊。
1)破解相同位數密鑰所需能量:
有科學家經過計算攻破一個密碼學算法須要多少能量並把它與水沸騰須要多少能量對比來衡量一個加密算法的安全性。
通過他的分析,破解一個228位的 RSA 密鑰須要的能量少於煮沸一湯匙水的能量。而破解一個228位的橢圓曲線密鑰須要足夠煮沸地球上全部水的能量。
RSA 要達到一個安全的水平,須要一個至少2380位的密鑰。此外 RSA 算法還有一個缺點就是隨着密鑰長度的增長,其安全性的增益是減小的。這意味着咱們沒法經過不斷增長密鑰長度來得到更高的安全性。
2)性能對比:
另外一方面,使用橢圓曲線簽名算法(ECDSA)作簽名的性能也比 RSA 簽名算法高不少。根據某些研究結果,在得到相同的安全性時,前者要比後者快20多倍。
橢圓曲線加密算法可以以更短的密鑰獲取與其餘加密算法相同的安全性及更快的運算速度,因此 ECC 正在快速成爲網絡隱私和安全的首選解決方案。比特幣等數字貨幣系統也紛紛使用 ECC 做爲其安全性的基石。
下面咱們簡單說說橢圓曲線密碼學在比特幣中的用法。
另:在生成私鑰 k 的過程當中,確保 k 是真正隨機生成的很是重要。曾經有些廠商的隨機數生成算法由於有漏洞或者故意留有後門,形成了巨大的安全隱患。
http://toutiao.manqian.cn/wz_aJj096BV3Mx.html