fabric中的一些概念(2)

身份

什麼是身份?

區塊鏈網絡中的不同參與者包括 Peer 節點、排序節點、客戶端應用程序、管理員等等。這些參與者都有一個封裝在 X.509 數字證書中的數字身份。這些身份非常重要,因爲它們決定了參與者在區塊鏈網絡中對資源的確切權限和對信息的訪問權限

此外,數字身份還具有一些額外的屬性,Fabric 使用這些屬性來確定權限,併爲身份和相關屬性的聯合提供了一個特殊的名稱—主體。主體與 userid 或 groupid 類似,但是更加靈活,因爲它們可以包含參與者身份的廣泛屬性,比如參與者的組織、組織單元、角色,甚至參與者的特定身份。當我們討論主體時,它們是決定其權限的屬性。

要使身份可驗證,它必須來自受信的權威機構。成員服務提供者(MSP)就是Fabric中的受信機構。更具體地說,MSP 是一個爲組織定義有效身份管理規則的組件。Fabric 中的默認 MSP 實現使用 X.509 證書作爲身份,採用了傳統公鑰基礎設施(PKI)層次模型(稍後將詳細介紹 PKI)。

一個簡單的場景來解釋身份的使用

假設你去超市買一些雜貨。在收銀臺,你會看到一個牌子,上面寫着只接受 Visa、Mastercard 和 AMEX 卡。如果你想用另一張卡支付——我們稱之爲 “ImagineCard”——不管這張卡是否真實,你的賬戶裏是否有足夠的資金。我們不會接受的。

 

擁有一張有效的信用卡是不夠的——它還必須被商店接受!PKI 和 MSP 以相同的方式協同工作——PKI 提供了一個身份列表,MSP 表示這些身份中哪些是參與網絡的給定組織的成員。

PKI 證書授權中心和 MSP 提供了類似的功能組合。PKI 就像一個卡提供商——它提供許多不同類型的可驗證身份。另一方面,MSP 類似於商店接受的卡片提供者列表,確定哪些身份是商店支付網絡的可信成員(參與者)。MSP 將可驗證的身份轉換爲區塊鏈網絡的成員

讓我們更詳細地研究一下這些概念。

什麼是PKI?

公鑰基礎設施(PKI)是一組互聯網技術,它在網絡中提供安全的通信。將 S 放入 HTTPS 的是 PKI——如果您在 web 瀏覽器上閱讀本文,您可能正在使用 PKI 來確保它來自經過驗證的來源。

PKI

公鑰基礎設施(PKI)的元素。PKI 由證書授權中心組成,這些授權中心向各方(例如服務的用戶、服務提供者)頒發數字證書,然後在與環境交換的消息中使用這些證書對自己進行身份驗證。CA 的證書撤銷列表(CRL)構成不再有效的證書的引用。撤銷證書的原因有很多。例如,因爲與證書關聯的加密私有材料已被公開,證書可能會被吊銷。

雖然區塊鏈網絡不僅僅是一個通信網絡,它還依賴 PKI 標準來確保各個網絡參與者之間的安全通信,並確保在區塊鏈上發佈的消息得到正確的身份驗證。因此,瞭解 PKI 的基礎知識以及爲什麼 MSP 如此重要是很重要的。

PKI 有四個要素:

  • 數字證書
  • 公鑰和私鑰
  • 證書授權中心
  • 證書撤銷列表

讓我們快速描述一下這些 PKI 基礎知識,如果您想了解更多細節,可以從 Wikipedia 開始。

數字證書

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

例如,密歇根州底特律市 Mitchell Cars 公司製造部門的瑪麗莫里斯可能擁有一個 SUBJECT 屬性爲 C=US, ST=Michigan, L=Detroit, O=Mitchell Cars, OU=Manufacturing, CN=Mary Morris /UID=123456 的數字證書。瑪麗的證件類似於她的政府身份證——它提供了有關瑪麗的信息,她可以用這些信息來證明有關她的關鍵事實。在 X.509 證書中還有許多其他屬性,但是現在讓我們只關注這些屬性。

 

描述一個叫瑪麗·莫里斯的參與方的數字證書。瑪麗是證書的 SUBJECT ,突出顯示的主題文本顯示了關於瑪麗的關鍵事實。如您所見,證書還包含更多的信息。最重要的是,瑪麗的公鑰分佈在她的證書中,而她的私鑰沒有。此簽名密鑰必須保持私有。

重要的是,瑪麗的所有屬性都可以使用一種稱爲密碼學的數學技術(字面意思是“祕密寫作”)記錄下來,這樣篡改會使證書失效。密碼學允許瑪麗向其他人提供她的證書,以證明她的身份,只要另一方信任證書頒發者,即證書頒發機構(certificate Authority, CA)。只要 CA 安全地保存某些加密信息(即它自己的私有簽名密鑰),任何閱讀證書的人都可以確保關於瑪麗的信息沒有被篡改——它始終具有瑪麗莫里斯的那些特定屬性。將瑪麗的 X.509 證書看作是無法更改的數字身份證。

認證,公鑰和私鑰

身份認證和消息完整性是安全通信中的重要概念。身份認證要求交換消息的各方確信創建特定消息的身份。要使信息具有“完整性”,就意味着信息在傳輸期間不可能發生過修改。例如,您可能想要搞清楚正與自己通信的到底是真的瑪麗還是冒充者。或者,如果瑪麗給你發了一條信息,你可能想要確保它在傳輸過程中沒有被任何人篡改過。

傳統的身份認證機制依賴於數字簽名,顧名思義,就是允許一方對其消息進行數字簽名。數字簽名還爲簽名消息的完整性提供了保證。

從技術上講,數字簽名機制要求每一方都持有兩個加密連接的密鑰:一個公開密鑰和一個私有祕鑰。公開密鑰高度可獲取,充當身份驗證錨;私有祕鑰用於在消息上生成數字簽名。數字簽名消息的接收方可以通過檢查消息中的附加簽名在預期發送方的公鑰下是否有效來驗證所接收消息的來源和完整性。

私鑰與其對應公鑰之間的獨特關係是使安全通信成爲可能的密碼術。密鑰之間獨特的數學關係在於私鑰可用於對消息生成簽名,只有對應的公鑰能夠、且僅能在相同消息上與之匹配。

在上面的示例中,瑪麗使用她的私鑰對消息簽名。任何使用瑪麗的公鑰查看此簽名消息的人都可以驗證該簽名。

證書授權

如您所見,參與者或節點可通過數字身份的方式參與區塊鏈網絡,該數字身份是由系統信任的機構爲其頒佈的。多數情況下,數字身份(或簡稱身份)具有密碼驗證的數字證書形式,符合 X.509 標準,由證書授權中心(CA)頒發。

CA 是互聯網安全協議的一個常見部分,您可能聽說過一些比較流行的協議:賽門鐵克(最初是 Verisign)、GeoTrust、DigiCert、GoDaddy 和 Comodo 等等。

CertificateAuthorities

證書授權中心將證書分發給不同的參與者。這些證書由 CA 進行數字簽名,證書把參與者與其公鑰綁定在一起(也可以和一整套屬性綁定)。因此,如果一方信任 CA (並且知道CA的公鑰),那麼通過驗證參與者證書上的 CA 簽名,它就可以信任以下事實:證書中的公鑰是該參與者的;該參與者擁有證書中所包含的屬性。

證書既不包含參與者的私鑰,也不包含 CA 的私鑰,因此可以廣泛傳播。證書可作爲驗證不同參與者所發送的信息的信任錨。

CA 也有一個證書,可以廣泛使用。這樣的話,若某參與方想要使用一指定CA頒佈的證書,可以通過檢查證書只能由相應私鑰(CA)的持有者生成來驗證該證書。

在區塊鏈設置中,希望與網絡交互的每個參與者都需要一個身份。在這種情況下,您可能會說可以使用一個或多個 CA 從數字的角度定義組織的成員。CA爲組織的參與者擁有可驗證的數字身份奠定了基礎。

根 CA,中間 CA 和信任鏈

CA 有兩種類型:根 CA 和中間 CA。由於根 CA(賽門鐵克、Geotrust等)必須向互聯網用戶安全頒發數億個證書,因此將此過程分散到所謂的中間 CA 是有意義的。中間 CA 的證書由根 CA 或其他中間機構頒發,這就爲鏈上所有 CA 頒發的全部證書建立起一條“信任鏈”。追溯到根 CA 的這種能力不僅使得 CA在保證安全的同時擴展了自身功能——讓使用證書的組織在運用中間 CA的時候有足夠信心——而且還限制了根 CA 的暴露。根CA一旦遭到破壞,將會危及整個信任鏈。而如果受到損害的是中間CA,則曝光量會小得多。

 

在根 CA 和一組中間 CA 之間建立信任鏈的前提是,每個中間 CA 的證書頒發機構 要麼是根 CA 本身,要麼是與根CA有信任鏈關係的其他中間CA。

當涉及到跨多個組織頒發證書時,中間 CA 提供了巨大的靈活性,這在許可區塊鏈系統(如 Fabric)中非常有用。例如,您將看到不同的組織可能使用不同的根 CA,或者使用相同的根 CA 和不同的中間 CA——這完全取決於網絡的需要。

Fabric CA

因爲 CA 非常重要,所以Fabric 內置了一個的CA 組件,支持用戶在自己搭建的區塊鏈網絡中創建 CA。該組件——稱爲 Fabric CA,是一個私有根 CA 的提供者,能夠管理具有 X.509 證書的 Fabric 參與者的數字身份。因爲 Fabric CA 是針對 Fabric 根 CA 需求的一種自定義 CA,所以它本質上不能爲瀏覽器中的常規/自動使用提供 SSL 證書。但是,由於必須使用一些 CA 來管理身份(即使是在測試環境中),因此可以用Fabric CA 來提供和管理證書。使用公共/商業根CA或中間 CA 來提供身份也是可以的,而且是完全合適的。

如果您感興趣,可以在 CA 文檔部分閱讀更多關於 Fabric CA 的內容。

證書撤銷列表

證書撤銷列表(Certificate Revocation List, CRL)很容易理解——它就是一個證書的參照列表,有了它,CA 就知道列表上的這些證書是因爲這樣或那樣的原因被撤銷了的。回憶一下上文中我們談到的商店場景,其中CRL 就好比一個被盜信用卡列表。

當第三方想要驗證另一方的身份時,它首先會檢查頒發其證書的 CA 的 CRL,以確保該證書未被撤銷。驗證者不是必須要檢查 CRL,但是如果他們不檢查 ,就將冒着接受被盜身份的風險。

 

使用 CRL 檢查證書是否依然有效。如果虛假身份者試圖將一個已受損的數字證書傳遞給驗證方,可以根據證書頒發CA 的 CRL 檢查它,以確保它未被列爲不再有效。

注意,被撤銷的證書與到期的證書相差甚遠。被撤銷的證書還沒有過期——按其他任何標準衡量,它們都是完全有效的證書。有關 CRL 的更多信息,請單擊這裏

現在您已經瞭解了 PKI 如何通過信任鏈來提供可驗證的身份,下一步就來看如何使用這些身份來代表區塊鏈網絡的受信成員。這就是成員服務提供者(MSP)發揮作用的地方——它能識別出區塊鏈網絡中給定組織的成員

要了解更多關於成員身份的信息,請參閱關於 MSP

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章