在深入學(xué)習(xí)區(qū)塊鏈時,不可避免的需要了解密碼學(xué)。密碼學(xué)流傳已久,有幾千年歷史,在軍事、外交、情報等領(lǐng)域有廣泛的的應(yīng)用。在區(qū)塊鏈領(lǐng)域,也大量應(yīng)用了密碼學(xué)算法,比如哈希算法和橢圓曲線算法,今天我們盤點一下區(qū)塊鏈項目常用的一些加密算法。
1. 哈希算法
比特幣系統(tǒng)中使用的哈希函數(shù)分別用于完成工作量證明計算合生成地址。簡言之,哈希算法是將任意長度的字符串映射為較短的固定長度的字符串。因為這個運算的確定性,高效性使得去中心化的計算能夠?qū)崿F(xiàn)。又因為對輸入的敏感性,和該映射逆函數(shù)難以尋找(抗原像攻擊),對區(qū)塊鏈系統(tǒng)安全性有很大幫助。
2. 橢圓曲線算法
橢圓曲線是一套關(guān)于加密數(shù)據(jù),解密數(shù)據(jù)交換密匙的算法, 也可用于對數(shù)據(jù)簽名和驗證。
簽名一方面可以保證用戶的賬戶不被其他人頂替,另一方面保證用戶不能否認(rèn)其所簽名的交易。用私鑰對交易信息簽名,礦工用用戶的公鑰驗證簽名,驗證通過,則交易信息記賬,完成交易。
3. Base58編碼
Base58是比特幣使用的編碼方式,主要用于產(chǎn)生比特幣的錢包地址,這種編碼格式不僅實現(xiàn)了數(shù)據(jù)壓縮,保持了易讀性,還具有錯誤診斷功能。
4. 零知識證明
零知識證明是20世紀(jì)80年代初由計算機科學(xué)家Goldwasser和Micali等人共同提出的一項技術(shù),它主要是指證明者能夠在不向驗證者提供任何有用信息的情況下,使驗證者相信某個論斷是正確的。
零知識證明能夠成立需要具備三個要素,即完整性、可靠性和零知識。舉個例子來說就是,假設(shè)有一個環(huán)形走廊,出口和入口相鄰但不互通(在目測距離之內(nèi)),在這個環(huán)形走廊中間的某處有一道鎖起來的門,只有擁有鑰匙的人才可以通過;這時A要向B證明自己擁有打開這道門的鑰匙,用零知識量證明來解決就是,B看著A走進入口并在出口等待,如果A從入口進入通過走廊并從出口走出,則可以證明其擁有打開中間那扇門的鑰匙,而在這個過程中,他完全不用向B提供鑰匙的具體信息。所以零知識證明實際上是一種概率證明而非確定性證明。
這四項加密技術(shù)大家看完有什么感受嗎?