區塊鏈技術的應用和開發,數字加密技術是關鍵。一旦加密方法遭到破解,區塊鏈的數據安全將受到挑戰,區塊鏈的不可篡改性將不復存在。加密算法分爲對稱加密算法和非對稱加密算法,區塊鏈中主要應用非對稱加密算法。算法
非對稱加密指爲知足安全性需求和全部權驗證需求而集成到區塊鏈中的加密技術。非對稱加密一般在加密和解密過程當中使用兩個非對稱的密碼,分別稱爲公鑰和私鑰。非對稱密鑰對具備兩個特色:安全
一是用其中一個密鑰加密信息後,只有另外一個對應的密鑰才能解開。網絡
二是公鑰可向其餘人公開,私鑰則保密,其餘人沒法經過該公鑰推算出相應的私鑰。併發
非對稱密鑰加密系統的主要應用有兩個,分別是公鑰加密和公鑰認證。公鑰加密和公鑰認證的過程並不同,下面分別進行簡單介紹。分佈式
加密是將數據資料加密,使得非法用戶即便取得加密過的資料,也沒法獲取正確的資料內容,因此數據加密能夠保護數據,防止監聽攻擊。其重點在於數據的安全性。函數
爲了讓讀者更容易理解什麼是公鑰加密,先來看一個簡單的例子。如有兩個用戶Jack和Michael,Jack想把一段文字經過公鑰加密技術發送給Michael,而Michael有一對公鑰和私鑰,那麼這個加密和解密過程以下:工具
Michael將他的公鑰發送給Jack。區塊鏈
Jack就用Michael的公鑰對文字進行加密,將加密後的結果發送給Michael。3. Michael用他的私鑰解密Jack發送給他的消息。總體過程如圖1所示。加密
身份認證與加密不一樣,主要用於鑑別用戶的真僞。這裏咱們只要可以鑑別一個用戶的私鑰是正確的,就能夠鑑別這個用戶的真僞。列舉一個簡單的例子,Michael想讓Jack知道本身是真實的Michael,而不是其餘人假冒的,整個身份認證的過程以下:spa
Michael使用他的私鑰對文件進行簽名,發送給Jack。
Jack使用Michael的公鑰解密文件,若是解密成功,則證實Michael的私鑰是正確的,於是就完成了對Michael的身份鑑別。從而驗證簽名。
從上述兩個例子能夠看出,公鑰加密是發送者先用公鑰加密,接收者再用私鑰解密,而公鑰認證則是發送者先用私鑰加密,接收者再用公鑰解密以驗證。
在區塊鏈的分佈式網絡裏,節點之間進行通信並達成信任,須要依賴數字簽名技術,數字簽名涉及到公鑰、私鑰和錢包等工具,它有兩個做用:
一是證實消息確實是由信息發送方簽名併發出來的。
二是肯定消息的完整性。
數字簽名技術是將摘要信息用發送者的私鑰加密,與原文一塊兒傳送給接收者。接收者只有用發送者的公鑰才能解密被加密的摘要信息,而後用HASH函數對收到的原文產生一個摘要信息,與解密的摘要信息對比。若是相同,則說明收到的信息是完整的,在傳輸過程當中沒有被修改,不然說明信息被修改過。所以數字簽名可以驗證信息的完整性。
咱們用一個例子來講明,先看上圖,發送方把hello kitty的信息進行雙重處理:
1.經過接收方公鑰來進行加密獲得密文。
爲何要接收方的公鑰來加密? 由於只有接收方的私鑰能夠解開接受方公鑰加過的密,保證只有接受方能夠解密。
2.對hello kitty哈希獲得摘要,接着再通過發送方私匙進行簽名,簽名後得出的數字簽名和密文一塊兒發給接受方。
爲何要用發送方的私鑰簽名?由於這種方式,才能讓接收方確認這條信息是發送方發出來的。只有發送方的公鑰才能解開發送方的簽名。
接收方一樣對接收到的信息(密文及數字簽名)進行如下步驟處理:
1.用本身的私匙解開密文,獲得hello kitty.
2.對hello kitty哈希獲得摘要。
3.經過發送方的公鑰解開發送方簽名,獲得摘要‚。
4.對解密密文的摘要�和解密數字簽名的摘要‚進行對比,若摘要一致,則可確認信息爲發送方所發,及信息的完整性。
數字簽名是一種能被輕鬆識別的認證工具,由於驗證它的過程本質上只是用計算機解一道數學題而已。因此,眨眼間就能夠完成認證過程,不用像人爲比對字跡或印章那樣耗時費力。
經過數字簽名咱們主要實現了:
一、接收方能經過發送方的公鑰認證發送方的身份
二、經過私鑰方式簽名,別人僞造不了信息的簽名
三、發送方也經過私鑰簽名抵賴不了對信息的簽名
四、經過數字摘要技術保證了數據的完整性
五、哈希函數也保證了數據不可有任何篡改
明明沒有和TA相見,但在比特世界裏,數字簽名卻可讓你見字如面。