蝸牛講-fabric原理之MSP介紹



什么是MSP

 

在區塊鏈網絡中用於頒發和驗證證書和身份的一組加密機制和協議。是一個可插拔的接口。

 

理論上講,可以通過以下組件來定義一個MSP:

  • 身份格式,或是說證書,有時還帶有一個產生身份的算法

  • 一種簽名算法,利用與身份相關的秘鑰和消息,生成一組byte數組(實際上就是簽名),這組byte數組也和該身份唯一綁定。

  • 一種簽名驗證算法,算法的輸入為身份,消息和簽名(bytes數組),如果簽名數組對於輸入消息是一個有效的簽名,那么輸出是“接受”,否則就是“拒絕”

  • 一組規則。對於MSP來說,滿足這個規則的身份必須是一個有效的身份

  • 一組admin身份集合,用於修改MSP指定的一些配置

 

一個區塊鏈網絡中可以管理一個或是多個MSP。對於很多MSP來說,前面三點是比較通用規則,4和5對於不同的MSP會有所變化。從這個角度看,Fabric-CA也算是一個MSP。而官網提供的first-network,沒有用到Farbic-CA, 用的是localMSP。

 

使用MSP

 

這里列舉一個節點側的典型MSP場景。注意這里的節點在網絡中不涉及到身份發布流程,只限制於客戶端的背書請求,客戶端身份驗證和客戶端身份簽名驗證三個過程。

 

在這個場景中,身份(id) 具有X.509證書格式,由一個明確的根CA頒發。根據證書秘鑰,簽名和簽名驗證算法都是基於 ECDSA或是RSA(取決於生成證書時候的設置的算法),身份的驗證主要包含有:

 通過可信的根CA,驗證證書鏈是否正確

確保身份沒有被吊銷,這個可以通過在msp啟動階段配置吊銷列表或是MSP身份白名單實現

 

節點簽名能力

 

Orderer節點,peer節點都需要有簽名能力,為了實現這個,節點的管理員要在節點設置的時候指定MSP的配置。由於此處包含的MSP實例僅用於實例化節點的簽名標識,因此我們通過SignerMSP引用此MSP。簽名者MSP是可以被管理員手動更改,所以可以在各個節點之間變化。如果需要設置簽名者MSP,需要將下面四組文件復制到節點文件系統中的專用位置,四組文件為:

Cacert – PEM文件,MSP的根證書

Admincerts – PEM文件,MSP的管理員證書

Keystore-  節點的簽名私鑰

Signcerts – PEM文件,節點身份的編碼證書,fabric有四種身份:user,peer, orderer,client

 

如下為peer相關證書文件對應的目錄

|——org1.example.com   組織名稱

               |

               |——-ca    組織的根證書

               |

               |——-msp   組織的msp

               |

               |——-peers 節點相關證書

               |

               |——-tlsca    組織內部的tlsca證書

               |

               |——-users   組織所屬用戶

 

 

 

鏈的參與者

 

鏈的創世塊必現包含有鏈的參與者的MSP說明。如果一個MSP涵蓋了多條鏈,那么需要維護每條鏈上的MSP狀態。這是為了避免重新配置不一致攻擊,所謂的重新配置不一致攻擊是指通過每個組織的MSP的重新配置交易信息到達每個鏈的順序不一致導致,這樣就會出現在一定時間內,同一個管道內的節點MSP信息不一致情況。

 

我們一般定義一個MSP都是基於鏈或管道的上下文。這是為了orderer節點和peer節點可以對這條鏈上或是這條管道內的所有交易簽名者,背書者,管道的廣播和鏈或是管道創建,終止等請求進行認證。

 

特別是在orderer的系統管道中指定的MSP允許策略規范去管理以下請求:管道讀請求(認證,驗證管道的delivery請求),寫請求(認證和驗證管道廣播請求),鏈的創建者(鑒定鏈的創建請求)和管理員(認證和驗證管道配置請求)。可以看出,鏈中的MSP具有驗證者身份,和本地提供的MSP提供的簽名者形成對比。更具體的說,peer和orderer在系統管道和鏈的上下文設置MSP是為了認證交易和配置相關的請求,這里的MSP不提供生成簽名的能力。

 

Peer和orderer節點可以驗證由多個MSP頒發的身份簽名。為了方便實現這點,fabric引入了MSP管理者概念。Fabric組件中的MSPManager接口可以在鏈設置階段或是orderer管道啟動時候被創建一個或是多個實例,使用這些MSP管理者來驗證交易簽名。MSPManager接口的引入給fabric帶來了幾個重要優勢:

  • 可以插拔的MSP

  • 同時支持多個MSP提供者

  • 隱藏了單一MSP和MSP架構內部復雜性

MSPManager 使用鏈的配置塊信息來實例化MSP,如下圖所示

 

 

 

 

 


 

蝸牛講技術,滿滿的都是干貨,你值得關注。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM