由于比特幣的去中心化安全機制是完全建立在密碼學基礎之上的,所以比特幣家族又被稱為“密碼學貨幣”,可以說密碼學是比特幣比特幣誕生的基石之一。
加密的定義:通過把信息變得混亂,使未經授權就的人無法訪問它,而被授權的人能夠訪問的一種方式。加密過程要保證信息的保密性、完整性、不可否認性。
1 密碼學的發(fā)展
1.1古典加密技術
密碼學的發(fā)展經歷了從經典加密技術(對稱加密)到現(xiàn)代加密技術(非對稱加密的)的過程,經典加密技術通過某種不為人知的算法,將明文經過加密得到密文,此密文只有通過對應的解密算法才能轉換成明文。比如明文是bitcoin,加密算法規(guī)定對每個字母都按照字母表的順序向后移動三位即
a b c d e f g h i j k l m n o p q r s t u v w x y z
d e f g h i j k l m n o p q r s t u v w x y z a b c
這樣變換后的密文就變成elwfrlq,這樣如果不知道解密算法,別人就無法識別,當然真實被應用的加密算法比這復雜的多,但是這種加密方式的安全性都依賴于加密算法,但這種加密技術很容通過頻率分析的方法破解。后來的但是計算機出現(xiàn)之后,人們發(fā)現(xiàn)無論多么復雜的加密算法,都能通過統(tǒng)計分析的方式破解。
1.2對稱加密體制
對稱加密是指加密所用的密鑰和解密所用的密鑰相同,也稱為私鑰加密體制。對稱加密體制的安全性依賴與密鑰,比較著名的對稱加密算法有DES,IDEA等,由于對稱加密技術只能用于對數據的加密解密,提供數據的機密性,但無法用作數字簽名。因而我們需要新的密碼體制,非對稱加密體制應運而生。
1.3非對稱密碼體制
非對稱加密體制也叫公鑰加密技術,該技術針對私鑰密碼體制的缺陷而設計,在公鑰加密系統(tǒng)中,加密和解密是相對獨立的,加密和解密使用不同的密鑰,加密密鑰叫做公鑰是公開的,任何人都可以使用,解密密鑰叫做私鑰,只有解密者知道。在非對稱加密體制中,加密過程如下,加密放使用公鑰加密,將密文發(fā)送給使用后,解密放使用對應的私鑰解密。在用作數字簽名時,發(fā)送方通過私鑰對消息加密,生成數字簽名,接收方通過對應的公鑰驗證數字簽名的合法性。
2 密碼學在比特幣中的應用
2.1用戶賬戶
比特幣的實現(xiàn)依賴于密碼學技術,其中比特幣賬戶采用了非對稱加密算法,用戶自己保留私鑰,對其發(fā)出的交易進行簽名,并公開私鑰。比特幣的賬戶地址就是用戶的公鑰經過一系列hash及編碼運算后生成的160位字符串。在一次交易中,付款人通過收款人的公鑰對本次交易進行簽名,收款人收到交易后就能通過收款人的私鑰驗證本次交易是否合法。
2.2哈希算法
Hash算法能將任意長度的二進制(明文)映射為較短的固定長度二進制值(Hash值),并且不同的明文很難映射為相同的Hash值。
Hash算法滿足一下三個性質:
- 明文M的任何改變都會導致Hash值H(M)的改變;
- 在給定某個哈希函數H和哈希值H(M)的情況下,得出M在計算上時不可以行的;
- 即對于消息M1和哈希值H(M1),找到M2使得H(M2)= H(M1) 在計算上不可行(弱碰撞);或者,找到任意兩個M1和M2使得H(M1)= H(M2) 在計算上不可行(強碰撞)。
比特幣協(xié)議中引入了哈希函數,解決雙重支付的問題,付款人A將比特幣發(fā)送給收款人B時,在交易完成之前,即交易被寫入區(qū)塊鏈之前,A又將這些比特幣發(fā)送給了C,這時就面臨如何避免雙重支付的問題。
比特幣協(xié)議中,網絡節(jié)點通過工作量證明機制,實現(xiàn)以工作量證明問題提的解換取檢驗交易是否合法的話語權,避免了僵尸節(jié)點對不合法交易的隨意確認?;诠ぷ髁孔C明的原理,找到足夠多的網絡節(jié)點使得這次不合法交易通過及其不容易,也就避免了雙重支付的問題。關于工作量證明可以參考我的另一篇文章從分布式一致性到區(qū)塊鏈共識機制。