1. 程式人生 > >ChainDesk:深入MSP成員管理與Fabric CA服務實現-走進MSP

ChainDesk:深入MSP成員管理與Fabric CA服務實現-走進MSP

作者:ChainDesk韓小東

本篇文章閱讀時間:3分鐘


目標

MSP 概念及作用

MSP 的組成結構

MSP 在 Hyperledger Fabric 中的應用

任務實現

資料隱私及安全是區塊鏈技術中的的重要組成部分,聯盟鏈中由多個不同的組織組成,且每一個組織又可以由多個節點組成,那麼在 Hyperledger Fabric 中使用了什麼且如何確保資料隱私及安全,在這一章中我們來認識一下相關的重要內容。

6.1.1 MSP定義及作用

在 Hyperledger Fabric 中,各個網路參與者之間的通訊安全依賴於 PKI 標準來實現,並確保在區塊鏈上釋出的訊息得到相應的認證。

PKI(Public Key Infrastructure):公鑰基礎結構。由向各方(如服務的使用者,服務提供商)釋出數字證書的證書頒發機構組成,然後他們使用它們在與其環境交換的訊息中對自己進行身份驗證。

PKI 有四個關鍵要素:

數字證書:包含與證書持有者相關的一組屬性的文件。最常見的證書型別是符合X.509標準的證書,允許在其結構中編碼一方的識別細節。

公鑰和私鑰:身份驗證和訊息完整性是安全通訊中的重要概念。身份驗證要求確保交換訊息的各方建立特定訊息的身份。對於具有“完整性”的訊息意味著在其傳輸期間不能被修改。

證書頒發機構:證書頒發機構向不同的參與者分發證書,這些證書由CA進行數字簽名。CA是為組織的參與者提供可驗證的數字身份的基礎。

證書撤銷列表:某種原因而被撤銷的證書的引用列表。

PKI 只是一個體繫結構,負責生成及頒發;在 Hyperledger Fabric 中的預設 MSP 實際上是使用符合 X.509 標準的證書作為身份,採用傳統的公鑰基礎結構(PKI)分層模型來實現。

MSP(Membership Service Provider):成員服務提供商,是 Hyperledger Fabric 1.0版本開始抽象出來的一個模組化元件。用於定義身份驗證,進行身份驗證和允許訪問網路的規則。更確切地說,MSP 是 Hyperledger Fabric 對網路中的組成成員進行身份管理與驗證的模組元件。

具體作用如下:

MSP 管理使用者 ID。

驗證想要加入網路的節點:每一個想加入網路中的節點必須提供其有效且合法的 MSP 資訊。

為客戶發起的交易提供憑證:在各節點(Client、Peer、Orderer)之間進行資料傳輸時,需要驗證各節點的簽名。

MSP 在 Hyperledger Fabric 中的分類:

網路MSP:對整個 Hyperledger Fabric 網路中的成員進行管理;定義參與組織的 MSP ,以及組織成員中的哪些成員被授權執行管理任務(如建立通道)

通道MSP:對一個通道中的組織成員進行管理。通道在特定的一組組織之間提供私有通訊。在該通道的 MSP 環境中通道策略定義了誰有許可權參與通道上的某些行為(如新增組織或例項化鏈碼)。

Peer MSP:本地 MSP 在每個 Peer 的檔案系統上定義,並且每個 Peer 都有一個單獨的 MSP 例項。執行與通道 MSP 完全相同的功能,其限制是它僅適用於定義它的 Peer。

Orderer MSP:與 Peer MSP 相同,Orderer 本地 MSP 也在其節點的檔案系統上定義,僅適用於該節點。

User MSP: 每一個組織都可以擁有多個不同的使用者,都在其 Organizations 節點的檔案系統上定義,僅適用該組織(包括該組織下的所有 Peer 節點)。

6.1.2 MSP 的組成結構

MSP的邏輯結構如下所示(與實際的物理結構會有所不同):

區塊鏈技術QQ交流群:263270946 掌握更多技術乾貨,關注微信公眾號“ChainDesk”

如上圖所示,MSP有九個元素。其中MSP名稱是根資料夾名稱,每個子資料夾代表MSP配置的不同元素:

根CA(Root CAs):資料夾中包含根CA(CA:Certificate Authorities)的自簽名 X.509 證書列表。用於自簽名及給中間 CA 證書籤名。

中間CA(ICA):包含由根據 CA 頒發的證書列表。

組織單位(OUs):這些單位列在 $FABRIC_CFG_PATH/msp/config.yaml 檔案中,包含一個組織單位列表,其成員被視為該MSP所代表的組織的一部分。

管理員(B):此資料夾包含一個標識列表,用於定義具有此組織管理員角色的角色。對於標準MSP 型別,此列表中應該有一個或多個 X.509 證書。

需要注意,僅僅一個具有管理員的角色,並不意味著他們可以管理特定的資源,給定標識在管理系統方面的實際功能由管理系統資源的策略決定。

撤銷證書(ReCA):儲存已被撤銷參與者身份的資訊。

簽名證書(SCA):背書節點在交易提案響應中的簽名證書。此資料夾對於本地 MSP 是必需的,並且該節點必須只有一個 X.509 證書。

私鑰(KeyStore):此資料夾是為 Peer 或 Orderer 節點(或客戶端的本地MSP)的本地MSP定義的,幷包含節點的簽名金鑰。此金鑰以加密方式匹配 SCA 資料夾中包含的簽名證書,並用於簽署資料(如簽署交易提議響應,作為認可階段的一部分)。此資料夾對於本地MSP是必需的,並且必須只包含一個私鑰。

TLS根CA(TLS RCA):包含組織信任的用於 TLS 通訊的根 CA 的自簽名 X.509 證書列表。此資料夾中必須至少有一個 TLS 根 CA X.509 證書。

TLS中間CA(TLS ICA):儲存由 TLS 根 CA 頒發的中間證書列表。

 

6.1.3 MSP應用

要想初始化一個MSP例項,每一個peer節點和orderer節點都需要在本地指定其配置並啟動。

首先, 為了方便地在網路中引用MSP,每個MSP都需要一個特定的名字(如 OrdererMSP、Org1MSP 或 Org2MSP.domain.com)。此名字被稱之為 MSP 識別符號或 MSP ID。對於每個 MSP 例項來說,MSP 識別符號都必須獨一無二。

在系統起始階段,需要指定在網路中出現的所有 MSP 的驗證引數,且這些引數需要在系統通道的創世區塊中指定。MSP的驗證引數包括MSP識別符號、信任源證書、中間 CA 和管理員的證書,以及 OU 說明和 CLR。系統的創世區塊會在 orderer 節點設定階段被提供給它們,且允許它們批准建立通道的請求。如果創世區塊包含兩個有相同識別符號的 MSP,那麼 orderer 節點將拒絕系統創世區塊,導致網路載入程式執行失敗。

要想生成 X.509 證書以滿足 MSP 配置,應用程式可以有多種方式實現:

使用Openssl。在此需要注意:在 Hyperledger Fabric 中,不支援包括RSA金鑰在內的證書。

使用 cryptogen 工具,其操作方法參見第三章 3.1 生成組織結構與身份證書 一節 。

Hyperledger Fabric CA 也可用於生成配置 MSP 所需的金鑰及證書。詳見下節內容。

在節點的配置檔案中(對 peer 節點而言配置檔案是 core.yaml 檔案,對 orderer 節點而言則是orderer.yaml檔案。在實際開發中可自定義配置檔名稱),我們需要指定到 mspconfig 資料夾的路徑,以及節點的 MSP 的 MSP 識別符號。節點的 MSP 的 MSP 識別符號則會作為引數 localMspId 和 LocalMSPID 的值分別提供給 peer 節點和 orderer 節點。

執行環境可以通過為 peer 使用 CORE 字首(如 CORE_PEER_LOCALMSPID)及為 orderer 使用 ORDERER 字首(例如 ORDERER_GENERAL_LOCALMSPID)對以上變數進行重寫。如在 fabric-samples 中提供的示例配置檔案 docker-compose-base.yaml:

區塊鏈技術QQ交流群:263270946 掌握更多技術乾貨,關注微信公眾號“ChainDesk”

FAQ

MSP 是如何實現對身份的驗證?

身份驗證過程:

首先,使用證書頒發機構對使用者身份進行驗證。證書頒發機構標識應用程式、Peer 和 Orderer 標識,並驗證這些憑據。通過使用簽名演算法和簽名驗證演算法生成簽名。具體地,生成簽名以簽名演算法開始,簽名演算法利用與其各自身份相關聯的實體的憑證,並輸出認可。生成簽名,該簽名是繫結到特定標識的位元組陣列。

接下來,簽名驗證演算法將身份,認可和簽名作為輸入,如果簽名位元組陣列與輸入的認可的有效簽名相對應,則輸出 'accept',否則輸出 'reject'。如果輸出是 'accept',則使用者可以看到網路中的事務並與網路中的其他參與者執行事務。如果輸出為 'reject',則表示使用者未經過身份驗證,並且無法向網路提交事務或檢視任何的事務。

未經授權禁止轉載、改編,轉載請註明出處!

本文地址: https://www.chaindesk.cn/witbook/11/134


ChainDesk——全球區塊鏈技術生態超級社群

以區塊鏈技術為入口,搭建全球區塊鏈技術生態超級社群,社群將服務於公鏈生態建設、DAPP專案研發、技術諮詢、課程體系研發、區塊鏈書籍編寫,區塊鏈課程製作、講師培訓、區塊鏈職業教育、區塊鏈線上教育、去中心化技術評測一體化的區塊鏈技術超級社群。

免費·原創·專業·高效·系統