首頁>科技>

談到區塊鏈,就繞不開密碼學。

密碼學中的非對稱加密演算法主要用公鑰和私鑰對資料的儲存和傳輸的加密和解密。使用者要進行交易,就必須用私鑰對原資料進行簽名,只有對應的公鑰才能驗證簽名串與原資料是匹配的。同時,用公鑰加密的原資料,只有對應的私鑰才能解開,這樣就能夠真正確保鏈上資料和資產的安全。

這一舉措,是密碼學在應用領域的一大進步。過去,人們之間進行交易必須依賴基於血液、鄉鄰或第三方來建立信任,但在區塊鏈世界中,卻以數學的方式為人們建立了新的不可動搖的信任通道。

一、從RSA到ECC

現在應用最廣泛的非對稱加密演算法是橢圓曲線演算法(ECC)。在談ECC之前,我們先介紹一下RSA演算法。

二戰時期,人們透過發電報來進行通訊,但是電報非常容易被截獲,所以必須要對其進行加密。當時德國採用的密碼叫做恩格碼,是將要傳輸的字元根據一個替換表來進行替換,比如a轉成d ,c 轉成x。但這種做法有個通病,就是需要每天更新這個替換表。如果表被人截獲了,作戰計劃就很容易被破解。

電影《模仿遊戲》講述了圖靈破解恩格瑪密碼機的這段歷史

這時候有人提出,是否能在保證結果準確的前提下,對加密和解密過程採用不同的替換表?

1976年,Diffie和Hellman在《密碼學的新方向》一文中論證了這種思想的可行性。基於這種思想建立的密碼體制,被稱為公鑰密碼體制,也叫非對稱密碼體制。這個設想提出後,多種公鑰密碼演算法相繼被提出,可惜許多不安全也不實用。

直到Rivest、Shamir和Adleman三位教授用名字的首字母命名了一種新演算法:RSA,很好地解決了所面臨的諸多問題。

不同於以往的對稱加密需要厚厚的密碼本,RSA演算法屬於非對稱加密。所謂非對稱加密,是指將秘鑰分為公鑰和私鑰,公鑰和私鑰必須成對出現,不能單獨生成。公鑰任何人都可以知道,用以加密;私鑰只有接受資訊的人才能知道,用以解密。

只要RSA的質數足夠大,解密將會耗費巨大的算力和時間,短期內難以破解。但為了追求安全性,RSA需要非常大的質數作為基礎,拉長秘鑰會使得加密成本大幅增加。更致命的是,RSA演算法在應對量子計算機的威脅時有些力不從心。

此時,ECC應運而生。ECC於1985年由Koblitz和Miller兩位教授提出。和RSA演算法一樣,ECC也是非對稱加密演算法的一種,但ECC在使用中的便捷性和安全性大大強過RSA。

二、什麼是ECC?

橢圓曲線演算法(ECC, Elliptic Curve Cryptography)是一種基於離散對數問題的非對稱(或公鑰)加密演算法,可以用對橢圓曲線上的點進行加法或乘法運算來表達。

總的來說,與RSA演算法相比,ECC演算法擁有以下幾個方面的優勢:

CPU佔用少

RSA演算法一般採用2048 位的加密長度,而ECC演算法一般採用256 位加密長度,意味著佔用更少的儲存空間,更低的CPU開銷和佔用更少的頻寬。

隨著越來越多的使用者使用移動裝置來完成各種網上活動,ECC加密演算法為移動網際網路安全提供更好的客戶體驗。

抗攻擊性強

ECC演算法的數學理論非常深奧和複雜,國際上公認的解ECC演算法的最有效方法是Pollard rho,它的破譯或求解難度基本上是指數級的。

而我們熟知的RSA所利用的是大整數因子分解問題,國際上公認的對於RSA演算法最有效的破譯和攻擊方法是一般數域篩(NFS)方法,它的破譯或求解難度是亞指數級的。

ECC比目前的其他加密演算法能更好的防止攻擊,使網站和基礎設施比用傳統的加密方法更安全,為移動網際網路安全提供更好的保障。

更好的效能

透過下圖不難發現,160位ECC加密安全性相當於1024位RSA加密,而210位ECC加密安全性甚至相當於2048位RSA加密。ECC中256位數的金鑰與RSA演算法中3072位數金鑰所提供的安全強度相同。

RSA和ECC安全模長的比較

這意味著你以更低的計算能力代價得到了更高的安全性。經國外有關權威機構測試,在Apache和IIS伺服器採用ECC演算法,Web伺服器響應時間比RSA快十幾倍。

這些優勢已經使得ECC逐漸完成了對RSA的取代,成為了新一代的通用公鑰加密演算法。

三、ECC在區塊鏈中的應用

如今,ECC早已無處不在:我們的第二代身份證都基於ECC,美國政府部門也用ECC加密內部通訊,FireFox和Chrome瀏覽器、蘋果的iMessage服務都使用ECC。這裡主要介紹ECC在區塊鏈中最為典型的應用場景——數字簽名。

數字簽名是隻有資訊的傳送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對資訊的傳送者傳送資訊真實性的一個有效證明。簽名者使用私鑰進行簽名,簽名的私鑰僅對自簽名者公開,公鑰是公開的,每個人都可以用公鑰對私鑰擁有者產生的簽名進行驗證,來驗證是否是有私鑰擁有者簽署的。

常用的數字簽名體制包括RSA、EIGamal、ECDSA。那麼,在區塊鏈系統當中,為什麼主要使用的是基於ECC的數字簽名演算法ECDSA 呢?

如上圖所示,在橢圓曲線密碼體制中,當私鑰長度為160位的時候,其安全級別是80位(這裡的80指的是2的80次方),當私鑰長度為256位的時候,其安全級別是128位。

對比一下其他密碼體制,比如 Elgamal 要想達到128位安全級別的話,其私鑰長度是3072位,是橢圓曲線私鑰長度的12倍。

而私鑰的長度對密碼體制的影響是:私鑰的長度越長,密碼系統裡面的加解密、簽名、驗籤演算法等,其效率越低。因此,在同樣的安全級別下,區塊鏈系統使用了私鑰更短、效率更高的橢圓曲線。

所以,之所以在區塊鏈系統中主要使用的是橢圓曲線數字簽名演算法,主要是因為在數字簽名演算法中,橢圓曲線數字簽名演算法能夠以相對較短的金鑰長度達到更高的安全級別。

區塊鏈的一個特點是公開透明,在區塊鏈上實現隱私看似和區塊鏈的本質略顯矛盾,但橢圓曲線演算法、零知識證明等技術的發展使得這種用例得以兩全。

在隱私安全方面,平臺採用橢圓曲線、零知識證明、ABE等前沿加密演算法,保障許可權與隱私成熟的技術來實現隱私交易。

10
最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 馬老師該去胡雪巖故居走走