Hash
哈希(Hash)算法主要作用是將一段任意長度的數據,經過計算轉換成一段定長的數據。
這種算法的特性是:幾乎不能通過Hash的結果推導出原文。並且幾乎沒有可能找到兩個不同的信息,對兩個信息進行Hash計算之后得到相同的哈希值。
Hash算法的一個重要特性就是:作驗證的時候是快速的,但逆向推出明文是基本不可能的。例如:有兩條信息,可以很快速的計算出來它們各自的哈希值,並通過哈希值的比對,就可以判定出兩條信息是否內容相同,但是幾乎不可能從過哈希值計算出信息的原文。
注:哈希函數的另外一個特性,難題友好性在區塊鏈的工作量證明POW中起到很大作用。所謂難題友好性,是指沒有便捷的方法去產生一個滿足特殊要求的哈希值。比如,比特幣區塊,就是要求礦工計算到18個0開頭的哈希值,這通常需要一個非常大的計算量。
非對稱密碼學的特征和用途
非對稱密碼學又稱公鑰密碼學,是使用一對公鑰和私鑰的密碼學,加密和解密用的不是同一把鑰匙。
可以公開的鑰匙叫公鑰,需要保密的鑰匙叫私鑰。
公鑰由私鑰產生,私鑰可以推導出公鑰,但從公鑰無法推導出私鑰。
非對稱密碼的主要用途是:加密和數字簽名
加密
加密,顧名思義就是對信息進行加密,在這種場景下,用公鑰加密,用私鑰解密,
例如,小李要向小王發送保密信息時,首先小李使用小王的公鑰對信息加密,然后把密文發送給小王,小王接收到密文之后,用自己的私鑰解密獲得信息明文
數字簽名
數字簽名主要的目的就是讓簽名者無法抵賴。和加密相反,在簽名的時候,用私鑰加密(簽名),用公鑰解密(驗證)。
例如:乙方收到甲方傳過來的一串信息,怎么能夠確定是由甲方而不是其他人偽造的呢?首先,需要甲方用自己的私鑰對信息加密,然后把密文和明文發送給乙方,乙方使用甲方的公鑰解密,如果能夠成功解密就可以證明信息確實是甲方發出的。但是,通常不需要對發送信息的整個內容都加密,因為太慢,為了提高速度,可以利用Hash算法的特性,首先用Hash算法計算出信息的唯一摘要,然后對信息摘要加密,乙方用甲方公鑰解密后得到的是信息的摘要,然后對信息作Hash計算得到摘要,將兩個摘要對比,如果相同,可以認為該信息是甲方發出的。
證書和證書鏈
證書
證書是由證書簽證機關(CA)簽發的對用戶的公鑰的認證。
證書內容主要包括:電子簽證機關的信息、公鑰用戶信息、公鑰、權威機構的簽字和有效期等。(其實證書可以簡單的看作一個公鑰)
證書鏈
CA是Certificate authority的縮寫,證書授權者。就是頒發證書的機構。
根證書是頒發機構頒發給自己的(自簽名,self-signed),這是信任的起點。
其實CA簽發證書,就是用它自己的私鑰對證書的公鑰做數字簽名。
某機構獲得頒發機構頒發的證書及對應的私鑰后,還可以用自己的私鑰再頒發新的證書(數字簽名),這樣就形成了一個證書鏈。
對於一個證書鏈,如果頭一個證書是可信的,那么后續的證書就都是可信任的
TLS
Fabric通過使用TLS(Transport Layer Security)實現節點間安全通信。
一個Peer節點同時是TLS服務端和TLS客戶端:當另外一個Peer節點、應用或者CLI與當前Peer節點建立連接的時候,當前Peer節點是TLS服務端;當Peer節點與其它Peer節點或Orderer節點建立連接時,它是TLS客戶端。
