一.Hyperledger Fabric介紹
2015年,Linux基金會啟動瞭Hyperledger項目,目標是發展跨行業的區塊鏈技術。
Hyperledger Fabric是Hyperledger中的一個區塊鏈項目,包含一個賬本,使用智能合約並且是一個通過所有參與者管理交易的系統。
Hyperledger Fabric 是分佈式賬本解決方案的平臺,以模塊化架構為基礎,支持不同組件的可插拔。
具備以下特點
1. 高度保密性
2. 可伸縮性
3. 彈性
4. 可擴展性
二.基本概念
區塊鏈
共享的、通過智能合約更新的多副本交易系統,並通過協作共識機制保持賬本副本一致同步。
1.分佈式賬本
區塊鏈網絡的核心是一個分佈式賬本,它記錄瞭網絡上發生的所有交易。
特點
- 去中心化
- 網絡中每個參與者都保存賬本的副本
- 網絡中每個參與者共同維護賬本(協作)
- 信息隻能以“附加”的方式記錄在區塊鏈中
- 使用加密技術保障交易一旦被添加進賬本中,無法被篡改
2.智能合約
為瞭持續的進行信息的更新,以及對賬本進行管理(寫入交易,進行查詢等),區塊鏈網絡引入瞭智能合約來實現對賬本的訪問和控制。
智能合約不僅僅可用於在區塊鏈網絡中打包信息,它們也可以被用於自動的執行由參與者定義的特定交易操作。
3.共識
保持網絡中所有賬本交易的同步流程,就是共識。確保賬本僅在交易被適當的參與者批準時更新,並且當賬本更新時,它們以相同的順序更新相同的交易。
4.為什麼區塊鏈可行
當前記錄系統 | 區塊鏈 |
---|---|
無法統一管理參與者身份,確認源頭費力 | 各參與者都有賬本副本 |
明確交易耗時長 | 共享賬本、共享更新賬本流程 |
手工簽訂合約 | 減少與私人信息及處理的時間、成本和風險 |
數據獨立,易單點故障 | 可見性高,信任度高 |
5.Hyperledger Fabric 中相關概念
Hyperledger Fabric 參與者需要認證許可。
1.成員管理 MSP(Membership Service Provider)
Membership Service Provider(MSP)用來登記所有的成員。
賬本數據可被存儲為多種格式,共識機制可被接入或者斷開,同時支持多種不同的MSP。
2.通道 channel
參與者可以建立通道channel,同一個channel中的參與者,才會擁有該channel中的賬本,而其他不在此channel中的參與者則看不到這個賬本。
3.共享賬本 Shared Ledger
共享賬本包含世界狀態(world state)和交易記錄(transaction log)。在Hyperledger Fabric網絡中的每一個參與者都擁有一個賬本的副本。
1.世界狀態組件描述瞭賬本在特定時間點的狀態,它是賬本的數據庫。
2.交易記錄組件記錄瞭產生世界狀態當前值的所有交易,它是世界狀態的更新歷史。
3.賬本則是世界狀態數據庫和交易歷史記錄的集合。
世界狀態存儲數據庫【可插入】。默認是LevelDB一個key-value存儲數據庫。
交易記錄模塊【非可插入】。它隻是記錄在區塊鏈網絡中賬本數據庫被使用時之前和之後的值。
4.智能合約 Smart Contracts
智能合約被稱為chaincode,當一個區塊鏈外部的一個應用程序需要訪問賬本時,就會調用chaincode。大多數情況下,chaincode隻會訪問賬本的數據庫組件和世界狀態(world state)(比如查詢),但不會查詢交易記錄。
5.隱私 Privacy
隱私,根據網絡的需求,在一個Business-to-Business(B2B)網絡中的參與者會對信息共享的程度極為敏感。然而,對於其他的網絡,隱私並不是首要考慮的因素。
Hyperledger Fabric支持構建隱私保護嚴格的網絡,也支持構建相對開放的網絡。
6.共識 Consensus
共識:可插拔,根據需求選擇,目前支持SOLO,Kafka以及後續會添加的SBFT (Simplified Byzantine Fault Tolerance)。
交易必須按照它們發生的順序寫入分類帳,即使它們可能在網絡內不同的參與者集之間。為此,必須建立交易順序,並且必須采用一種方法來拒絕錯誤(或惡意)插入分類帳的不良交易。
三. 身份 Identity
區塊鏈網絡中的不同參與者包括對等點(peers)、訂購者(orderers)、客戶端應用程序(client applications, )、管理員(administrators)等。這些參與者中的每一個——能夠使用服務的網絡內部或外部的活動元素——都有一個封裝在 X.509 數字證書中的數字身份。
作用:確定瞭對資源的確切權限以及參與者在區塊鏈網絡中擁有的信息的訪問權限
數字身份還具有 Fabric 用來確定權限的一些附加屬性。
1.主體(principal)
身份和相關屬性的聯合提供瞭一個特殊的名稱。 像userID 或 groupID,但更靈活一些,因為它們可以包含參與者身份的廣泛屬性,例如參與者的組織、組織單位、角色甚至參與者的特定身份。
2.會員服務提供者( MSP)
要使身份可驗證,它必須來自受信任的權威機構。Fabric中使用會員服務提供者( MSP) 組件實現,它定義瞭管理該組織的有效身份的規則。
默認 MSP 實現使用 X.509 證書作為身份,采用傳統的公鑰基礎設施 (PKI) 分層模型。
3. 身份使用的場景
去超時結賬假設隻能用A信用卡、B信用卡(A、B為舉例使用),那對於其他卡無論是否真實及其他卡是否有餘額都無效。即便有瞭有效的信用卡還需要商店認可才能使用。
PKI 和 MSP 以相同的方式協同工作——PKI 提供身份列表,而 MSP 說明其中哪些是參與網絡的給定組織的成員。
PKI 類似卡片提供商——它分發許多不同類型的可驗證身份。(如發行A卡、B卡、C卡)
MSP 就像商店接受的卡提供商列表,確定哪些身份是商店支付網絡的受信任成員(參與者)。MSP 將可驗證的身份轉變為區塊鏈網絡的成員。(如商店僅支持A卡、B卡)
四. PKI 公鑰基礎設施
是一組互聯網技術,可在網絡中提供安全通信。將S置於HTTPS中的是 PKI ,如果您在 Web 瀏覽器上打開的是https的鏈接,您可能正在使用 PKI 來確保它來自經過驗證的來源。
公鑰基礎設施 (PKI) 的元素。PKI 由向各方(例如,服務的用戶、服務提供商)頒發數字證書的證書頒發機構組成,然後他們使用它們在與環境交換的消息中對自己進行身份驗證。
CA 的證書撤銷列表 (CRL) 構成不再有效證書的參考。證書的吊銷可能有多種原因。例如,證書可能會因為與證書相關聯的加密私有材料已經暴露而被撤銷。
區塊鏈網絡不僅僅是一個通信網絡,它依賴於 PKI 標準來確保各種網絡參與者之間的安全通信,並確保發佈在區塊鏈上的消息得到正確的身份驗證。
1.PKI 四個關鍵要素
- 數字證書 (Digital Certificates)
- 公鑰和私鑰 (Public and Private Keys)
- 證書頒發機構 (Certificate Authorities)
- 證書吊銷列表 (Certificate Revocation Lists)
1.數字證書(Digital Certificates)
數字證書是一種文檔,其中包含與證書持有者相關的一組屬性。最常見的證書類型是符合X.509 標準的證書,它允許在其結構中對一方的識別細節進行編碼。
如看作Mary身份信息
- Subject包含瞭若幹屬性,另X.509 證書中還有其他屬性。
- Mary 是SUBJECT證書的主人,突出顯示的SUBJECT文本顯示瞭關於 Mary 的關鍵事實。
- Mary的公鑰在證書上顯示,私鑰沒顯示,私鑰必須保密。
- 所有屬性都可以使用稱為密碼學的數學技術記錄下來,這樣篡改就會使證書失效
Mary 的 X.509 證書可看成一張無法更改的數字身份證。
2.身份驗證、公鑰和私鑰 (Authentication, Public keys, and Private Keys)
身份驗證和消息完整性是安全通信中的重要概念。
- 身份驗證要求交換消息的各方確信創建特定消息的身份。
- 消息具有“完整性”意味著在其傳輸過程中不能被修改。
傳統的身份驗證機制依賴於數字簽名,顧名思義,數字簽名允許一方對其消息進行數字簽名。數字簽名還為簽名消息的完整性提供瞭保證。
從技術上講,數字簽名機制要求每一方持有兩個加密連接的密鑰:
- 一個廣泛可用並充當身份驗證錨的公鑰,
- 一個用於在消息上生成數字簽名的私鑰 。
數字簽名消息的接收者可以通過檢查附加簽名在預期發送者的公鑰下是否有效,來驗證接收消息的來源和完整性。
私鑰和各自的公鑰之間的獨特關系是使安全通信成為可能的加密魔法。密鑰之間獨特的數學關系使得私鑰可用於在消息上生成簽名,隻有相應的公鑰才能匹配,並且隻能在同一消息上。
Mary 使用她的私鑰對消息進行簽名。任何看到簽名消息的人都可以使用她的公鑰來驗證簽名。
3.證書頒發機構(Certificate Authorities)
通常數字身份 digital identity(或簡稱身份)具有符合 X.509 標準並由證書頒發機構 (CA) 頒發的經過加密驗證的數字證書的形式。
常見安全協議:Symantec(最初是 Verisign)、GeoTrust、DigiCert、GoDaddy 和 Comodo 等。
證書頒發機構將證書分發給不同的參與者。這些證書由 CA 進行數字簽名,並將參與者與參與者的公鑰綁定在一起(以及可選的完整屬性列表)。因此,如果一個人信任 CA(並且知道它的公鑰),它可以相信特定參與者綁定到證書中包含的公鑰,並擁有包含的屬性,通過驗證參與者證書上的 CA 簽名。
證書可以廣泛傳播,因為它們既不包括參與者的私鑰,也不包括 CA 的私鑰。因此,它們可以用作信任錨,以驗證來自不同參與者的消息。
CA 也有一個證書,它們可以廣泛使用。這允許給定 CA 頒發的身份的消費者通過檢查證書是否隻能由相應私鑰的持有者 (CA) 生成來驗證他們。
在區塊鏈環境中,每個希望與網絡交互的參與者都需要一個身份。在這種情況下,您可能會說一個或多個 CA可用於從數字角度定義組織的成員。
1.根 CA、中間 CA 和信任鏈(Root CAs, Intermediate CAs and Chains of Trust)
CA 有兩種形式:根 CA和中間CA。
由於根 CA(Symantec, Geotrust 等)必須將數億個證書安全地分發給互聯網用戶,因此將這個過程分散到所謂的中間 CA上是有意義的。
這些中間 CA 的證書由根 CA 或其他中間機構頒發,允許為鏈中任何 CA 頒發的任何證書建立“信任鏈”。
這種追溯根 CA 的能力不僅允許 CA 的功能擴展,同時仍然提供安全性——允許使用證書的組織放心地使用中間 CA——它限制瞭根 CA 的暴露,如果受到損害,將危及整個信任鏈。另一方面,如果中間 CA 受到損害,則風險會小得多。
隻要每個中間 CA 的證書的頒發 CA 是根 CA 本身或對根 CA 有信任鏈,就在根 CA 和一組中間 CA 之間建立信任鏈
2.Fabric CA
Fabric CA是一個私有根 CA 提供者,能夠管理具有 X.509 證書形式的 Fabric 參與者的數字身份。
由於 Fabric CA 是針對 Fabric 根 CA 需求的自定義 CA,因此它本質上無法提供 SSL 證書以供瀏覽器中的一般或自動使用。但是,由於必須使用某些CA 來管理身份(即使在測試環境中),所以 Fabric CA 可用於提供和管理證書。使用公共/商業根或中間 CA 來提供標識也是可能的,而且是完全合適的。
4.證書吊銷列表(Certificate Revocation Lists)
它隻是對 CA 知道由於某種原因而被吊銷的證書的引用列表。如CRL 就像一張被盜信用卡的列表。
當第三方想要驗證另一方的身份時,它首先檢查頒發 CA 的 CRL 以確保證書沒有被吊銷。
驗證者不必檢查 CRL,但如果他們不這樣做,他們就會冒著接受受損身份的風險。
使用 CRL 檢查證書是否仍然有效。如果冒名頂替者試圖將受損的數字證書傳遞給驗證方,則可以首先根據頒發 CA 的 CRL 檢查它,以確保它沒有被列為不再有效。
註意:被吊銷的證書與即將到期的證書非常不同。吊銷的證書尚未過期——從其他方面來看,它們是完全有效的證書。
五.會員資格 Membership
如何使用這些身份來代表區塊鏈網絡的受信任成員。
會員服務提供商 (MSP) ,它通過列出其成員的身份或通過識別來確定信任域的成員(例如組織),確定哪些根 CA 和中間 CA 是受信任的哪些 CA 被授權為其成員頒發有效身份,或者——通常情況下——通過兩者的結合。