公鑰與私鑰
區塊鏈技術的應用和開發,數字加密技術是關鍵。一旦加密方法遭到破解,區塊鏈的數據安全將受到挑戰,區塊鏈的不可篡改性將不復存在。加密算法分為對稱加密算法和非對稱加密算法,區塊鏈中主要應用非對稱加密算法。
非對稱加密指為滿足安全性需求和所有權驗證需求而集成到區塊鏈中的加密技術。非對稱加密通常在加密和解密過程中使用兩個非對稱的密碼,分別稱為公鑰和私鑰。非對稱密鑰對具有兩個特點:
一是用其中一個密鑰加密信息后,只有另一個對應的密鑰才能解開。
二是公鑰可向其他人公開,私鑰則保密,其他人無法通過該公鑰推算出相應的私鑰。
非對稱密鑰加密系統的主要應用有兩個,分別是公鑰加密和公鑰認證。公鑰加密和公鑰認證的過程並不一樣,下面分別進行簡單介紹。
公鑰加密
加密是將數據資料加密,使得非法用戶即使取得加密過的資料,也無法獲取正確的資料內容,所以數據加密可以保護數據,防止監聽攻擊。其重點在於數據的安全性。
為了讓讀者更容易理解什么是公鑰加密,先來看一個簡單的例子。若有兩個用戶Jack和Michael,Jack想把一段文字通過公鑰加密技術發送給Michael,而Michael有一對公鑰和私鑰,那么這個加密和解密過程如下:
Michael將他的公鑰發送給Jack。
Jack就用Michael的公鑰對文字進行加密,將加密后的結果發送給Michael。3. Michael用他的私鑰解密Jack發送給他的消息。整體過程如圖1所示。

公鑰認證
身份認證與加密不同,主要用於鑒別用戶的真偽。這里我們只要能夠鑒別一個用戶的私鑰是正確的,就可以鑒別這個用戶的真偽。列舉一個簡單的例子,Michael想讓Jack知道自己是真實的Michael,而不是其他人假冒的,整個身份認證的過程如下:
Michael使用他的私鑰對文件進行簽名,發送給Jack。
Jack使用Michael的公鑰解密文件,如果解密成功,則證明Michael的私鑰是正確的,因而就完成了對Michael的身份鑒別。從而驗證簽名。

從上述兩個例子可以看出,公鑰加密是發送者先用公鑰加密,接收者再用私鑰解密,而公鑰認證則是發送者先用私鑰加密,接收者再用公鑰解密以驗證。
數字簽名
在區塊鏈的分布式網絡里,節點之間進行通訊並達成信任,需要依賴數字簽名技術,數字簽名涉及到公鑰、私鑰和錢包等工具,它有兩個作用:
一是證明消息確實是由信息發送方簽名並發出來的。
二是確定消息的完整性。
數字簽名技術是將摘要信息用發送者的私鑰加密,與原文一起傳送給接收者。接收者只有用發送者的公鑰才能解密被加密的摘要信息,然后用HASH函數對收到的原文產生一個摘要信息,與解密的摘要信息對比。如果相同,則說明收到的信息是完整的,在傳輸過程中沒有被修改,否則說明信息被修改過。因此數字簽名能夠驗證信息的完整性。

我們用一個例子來說明,先看上圖,發送方把hello kitty的信息進行雙重處理:
1.通過接收方公鑰來進行加密得到密文。
為什么要接收方的公鑰來加密? 因為只有接收方的私鑰可以解開接受方公鑰加過的密,保證只有接受方可以解密。
2.對hello kitty哈希得到摘要,接着再經過發送方私匙進行簽名,簽名后得出的數字簽名和密文一起發給接受方。
為什么要用發送方的私鑰簽名?因為這種方式,才能讓接收方確認這條信息是發送方發出來的。只有發送方的公鑰才能解開發送方的簽名。
接收方同樣對接收到的信息(密文及數字簽名)進行以下步驟處理:
1.用自己的私匙解開密文,得到hello kitty.
2.對hello kitty哈希得到摘要。
3.通過發送方的公鑰解開發送方簽名,得到摘要‚。
4.對解密密文的摘要�和解密數字簽名的摘要‚進行對比,若摘要一致,則可確認信息為發送方所發,及信息的完整性。
總結
數字簽名是一種能被輕松識別的認證工具,因為驗證它的過程本質上只是用計算機解一道數學題而已。所以,眨眼間就可以完成認證過程,不用像人為比對字跡或印章那樣耗時費力。
通過數字簽名我們主要實現了:
1、接收方能通過發送方的公鑰認證發送方的身份
2、通過私鑰方式簽名,別人偽造不了信息的簽名
3、發送方也通過私鑰簽名抵賴不了對信息的簽名
4、通過數字摘要技術保證了數據的完整性
5、哈希函數也保證了數據不可有任何篡改
明明沒有和TA相見,但在比特世界里,數字簽名卻可以讓你見字如面。