天天看點

區塊鍊密碼學之對稱加密前言比特币中的對稱加密總結

前言

對稱加密,顧名思義就是公鑰和私鑰都是同一個,隻有一把密鑰,那麼密鑰的共享就需要特别注意,容易洩露。但是由于它的加密效率高(速度快、占用空間小),主要用在大量資料的加密,往往需要提前分發密鑰。

對稱密碼從實作上可以分為兩種:分組密碼和序列密碼。前者将明文切分為定長資料塊作為基本加密機關,應用最為廣泛。後者則每次隻對一個位元組或字元進行加密處理,且密碼不斷變化,隻用在一些特定領域,如數字媒介的加密等。

分組密碼其中代表算法有DES、AES等。AES目前尚未出現有效的破解手段。

比特币中的對稱加密

比特币中使用的對稱加密算法為AES算法,具體來說是AES256。用于比特币錢包的私鑰加密。采用使用者設定的密碼通過AES對錢包私鑰進行加密,確定用戶端私鑰的安全。下面從源碼使用來看看,位址為:https://github.com/1261385937/AES256

區塊鍊密碼學之對稱加密前言比特币中的對稱加密總結

secret_key是用來加密的密鑰,比特币使用的非對稱加密的私鑰,為了友善,上面是我随意寫的。

public_key_hash_first_half是用來混合加密的,比特币中使用的是Serialize後的公鑰,經過sha256後,取前128位。

上面的代碼是對 msg 加密,加密結果儲存在vchCiphertext。 下面來看看如何解密:

區塊鍊密碼學之對稱加密前言比特币中的對稱加密總結

解密時,同樣需要傳入secret_key和public_key_hash_first_half。對vchCiphertext進行解密,揭秘結果放在quondam_msg中。顯而易見,quondam_msg的内容為1,2,3。

總結

至此,AES256如何加密解密使用介紹完畢。密碼學這塊,是無數“密碼朋克”的心血結晶,密碼學這塊比較特殊,極其嚴謹,需要經過大量使用驗證的。即使知道原理,也不見得可以對它進行修改,因為你無法保證“你搗鼓出來的”安全性如何。是以筆者覺得,如果你不是專門研究密碼學的高手,知道核心細節和不知道核心細節差別不大。密碼學這塊還是選用出名的、成熟的加密算法為上上策。以太坊和EOS也是選用了和比特币一樣的secp256k1。原因恐怕也是如此。