09.02 區塊鏈中存在的 一些密碼學

在比特幣區塊鏈的整個體系中,大量使用了公開的加密算法,比如Merkle Tree哈希樹算法、橢圓曲線算法、SHA-256哈希算法、對稱加密算法以及一些編碼算法,如Base58編碼、VarInt編碼、DER編碼等。下面我們來了解其中的幾個核心算法。

區塊鏈中存在的 一些密碼學

1.橢圓曲線算法

橢圓曲線在密碼學中的使用是在1985年由NealKoblitz和Victor Miller分別獨立提出的。它的主要優勢是:在某些情況下,它比其他的算法(比如RSA)使用更小的密鑰,但提供相當的或更高等級的安全性。比特幣使用了基於secp256k1橢圓曲線數學的公鑰密碼學算法。它包含私鑰與公鑰,交易發出方用私鑰進行簽名,並將簽名與原始數據發送給整個比特幣網絡,網絡中的所有節點則用公鑰對交易有效性進行驗證。簽名算法保證了交易是由擁有對應私鑰的人所發出的。數據簽名算法的核心在於證明數據是簽名者發出的、不可抵賴的,而不是待簽名數據本身的保密性。

區塊鏈中存在的 一些密碼學

2.SHA-256哈希算法

SHA是安全散列算法(Secure HashAlgorithm)的縮寫,是一個密碼散列函數家族。這一組函數是由美國國家安全局(NSA)設計,美國國家標準與技術研究院(NIST)發佈的,包括SHA-1、SHA-224、SHA-256、SHA-384和SHA-512五種變體,主要適用於數字簽名標準。後4個哈希函數又並稱為SHA-2。SHA-1在許多安全協議中廣為使用,包括TLS、SSL、PGP、SSH、S/MIME和IPsec,曾被視為是MD5(更早之前被廣為使用的哈希函數)的後繼者。但隨著計算機技術的發展,SHA-1的安全性被密碼學家嚴重質疑,且在2005年被王小云等密碼學家成功破譯。SHA-2的算法跟SHA-1基本相似,但至今尚未出現對SHA-2的有效攻擊,安全性較高。SHA-256就是SHA-2函數中的一個,是輸出值為256位的哈希算法。

區塊鏈中存在的 一些密碼學

3.對稱加密算法

AES(Advanced Encryption Standard)是一個對稱分組密碼算法,旨在取代DES成為廣泛使用的標準,最終成為美國新的數據加密標準而被廣泛應用在各個領域。其大致運作原理和前文的對稱加密算法的流程相同。比特幣官方客戶端 [3]使用AES算法中的AES-256-CBC來加密錢包文件,用戶設置密碼後,採用用戶設置的密碼通過AES算法對錢包私鑰進行加密,確保客戶端私鑰的安全,從而保證資產的安全。

4.Base58編碼

可讀性編碼算法在理論上並非密碼學理論的核心內容,它類似於古典密碼學裡的置換算法機制。編碼算法的目的不是為了保護數據的安全性,而是為了可讀性。信息以二進制的形式傳輸,不具備可讀性,而數字與字母組成的字符串才更容易被識別。可讀性編碼不改變信息內容,只改變信息內容的表現形式,部分編碼算法還加入了容錯校驗功能,以保證傳輸過程中數據的準確性和完整性。Base58是比特幣使用的一種獨特的編碼方式,主要用於產生比特幣的錢包地址。相比Base64,Base58不使用數字“0”、大寫字母“O”、大寫字母“I”和小寫字母“l”,以及“+”和“/”符號 [4]。

設計Base58的主要目的是:

1)避免混淆。在某些字體下,數字0和大寫字母O,以及大寫字母I和小寫字母l非常相似。

2)不使用“+”和“/”的原因是,非字母或數字的字符串作為賬號的一部分被接受。

3)沒有標點符號,通常不會被從中間分行。

4)大部分的軟件支持雙擊選擇整個字符串。

比特幣使用了Base58算法來對公鑰的Hash160及私鑰進行編碼,從而生成以1或3開頭的比特幣地址及WIF(Wallet ImpFormat)格式的私鑰。


分享到:


相關文章: