go語言入門教程百度網盤:橢圓曲線加密算法ECC和橢圓曲線數字簽名算法ECDSA

7.1.1 橢圓曲線密碼學概述

橢圓曲線密碼學(Elliptic curve cryptography,縮寫爲 ECC),是基於橢圓曲線數學理論實現的一種非對稱加密算法。git

橢圓曲線算法又細分爲多種具體的算法。Go語言內置的橢圓曲線是secp256R1算法,而比特幣系統中使用secp256K1算法。以太坊系統雖然也採用secp256K1算法,可是跟比特幣系統的secp256K1算法上又有所差別。算法

橢圓曲線公鑰系統是代替RSA的強有力的競爭者,與經典的RSA、DSA等公鑰密碼體制相比,橢圓密碼體制有明顯的優點。安全

一、ECC與RSA算法的優點對比性能

(1)安全性能更高(ECC可使用更短的密鑰),同等安全強度下,二者祕鑰長度的對好比下表所示。加密

(2)處理速度快,計算量小,處理速度快 在私鑰的處理速度上(解密和簽名),ECC遠 比RSA、DSA快得多。3d

(3)存儲空間佔用小,ECC的密鑰尺寸和系統參數與RSA、DSA相比要小得多, 因此佔用的存儲空間小得多。cdn

(4)帶寬要求低使得ECC具備普遍的應用前景。blog

ECC的這些特色使它必將取代RSA,成爲通用的公鑰加密算法。ip

7.1.2 數字簽名的概念

所謂數字簽名(Digital Signature)(又稱公開密鑰數字簽名、電子簽章)是一種相似寫在紙上的普通的物理簽名,可是使用了公鑰加密領域的技術實現,用於鑑別數字信息的方法。一套數字簽名一般定義兩種互補的運算,一個用於簽名,另外一個用於驗證。數字簽名能夠驗證數據的來源,能夠驗證數據傳輸過程當中是否被修改。數學

數字簽名是經過非對稱加密算法中的私鑰加密、公鑰解密過程來實現的。私鑰加密就是私鑰簽名,公鑰解密就是公鑰驗證簽名。所以數字簽名由兩部分組成:第一部分是使用私鑰爲消息建立簽名的算法,第二部分是容許任何人用公鑰來驗證簽名的算法。數字簽名的使用流程如圖13.12所示。

圖7.1 數字簽名

數字簽名應該知足以下要求。

l 簽名不可僞造性;

l 簽名不可抵賴的;

l 簽名可信性,簽名的識別和應用相對容易,任何人均可以驗證簽名的有效性;

l 簽名是不可複製的,簽名與原文是不可分割的總體;

l 簽名消息不可篡改,由於任意比特數據被篡改,其簽名便被隨之改變,那麼任何人能夠驗證而拒絕接受此簽名。

相關文章
相關標籤/搜索