Hyperledger Fabric使用硬件安全模塊(HSM)


使用硬件安全模型

官方文檔
可以通過Fabric節點使用硬件安全模塊(HSM)來產生和存儲私鑰。HSM用於保護私鑰和處理加密操作。允許peer節點與orderer節點在不暴露他們的私鑰的條件下去簽名和背書交易,當前Fabric只支持使用PKCS11標准與HSM進行通信。

配置HSM

為了在Fabric節點上使用HSM,需要更新關於節點配置文件如core.yaml中的BCCSP(加密服務提供者)部分.在BCCSP部分,需要選擇PKCS11作為提供者並提供需要使用的PKCS11庫的路徑。還需要提供為加密操作創建的令牌的標簽和密碼。可以使用令牌去生成和存儲多個秘鑰。
預先構建的Hyperledger Fabric Docker鏡像不能夠使用PKCS11。如果使用Docker部署Fabric,需要通過以下的命令啟動PKCS11構建自己的鏡像。

make docker GO_TAGS=pkcs11

同時也需要確保PKCS11的庫文件是有效的,掛載到容器內部或者通過節點安裝后是可以使用的。

示例

接下來的示例說明了如何去配置一個可以使用HSMFabirc節點。

首先,需要安裝一個實現了PKCS11的接口。本例使用開源的softhsm實現。在下載和配置完成softhsm后,需要設置環境變量SOFTHSM2_CONF指向softhsm2配置文件。

可以使用softhsm去創建用於處理關於Fabric節點在HSM插槽中用於加密操作令牌。在這個示例中,我們創建了一個標簽為fabric,密碼為71811222的令牌。在創建令牌完成之后,更新配置文件來使用PKCS11,並將令牌作為加密服務提供者。可以在下面發現關於BCCSP部分配置的例子:

#############################################################################
# BCCSP (區塊鏈加密服務提供者) 部分,用於選擇使用的已實現的加密庫文件
#############################################################################
bccsp:
  default: PKCS11
  pkcs11:
    Library: /etc/hyperledger/fabric/libsofthsm2.so
    Pin: 71811222
    Label: fabric
    hash: SHA2
    security: 256

也可以通過環境變量來覆蓋配置文件中相關的字段。如果通過Fabric CA服務器連接到了HSM,則需要設置以下環境變量:

FABRIC_CA_SERVER_BCCSP_DEFAULT=PKCS11
FABRIC_CA_SERVER_BCCSP_PKCS11_LIBRARY=/etc/hyperledger/fabric/libsofthsm2.so
FABRIC_CA_SERVER_BCCSP_PKCS11_PIN=71811222
FABRIC_CA_SERVER_BCCSP_PKCS11_LABEL=fabric

如果使用docker compose部署了節點,在構建完自己的鏡像后,可以更新docker compose文件通過volumessofthsm庫文件和配置文件掛載到容器中。例如,可以添加下面的環境和volumes變量到docker compose文件:

  environment:
     - SOFTHSM2_CONF=/etc/hyperledger/fabric/config.file
  volumes:
     - /home/softhsm/config.file:/etc/hyperledger/fabric/config.file
     - /usr/local/Cellar/softhsm/2.1.0/lib/softhsm/libsofthsm2.so:/etc/hyperledger/fabric/libsofthsm2.so

配置使用HSM的網絡

如果使用HSM部署了Fabric節點,私鑰將會在HSM內部生成而不是節點本地的MSP中的keystore文件夾內。MSP中的keystore文件夾將為空文件夾。另外,Fabric節點將使用關於signcerts文件夾內的簽名證書的主題秘鑰標識符去接收HSM中的私鑰。這個創建MSP文件夾的過程將和之前不同,取決於自己使用的Fabric 證書認證中心。

使用Fabric CA

可以通過編輯相同的配置文件配置Fabric CA使peer節點或者是orderer節點使用HSM。因為可以使用Fabric CA內部的HSM來生成秘鑰。通過下面的步驟將直接創建本地的MSP文件夾:

  1. 創建一個HSM令牌並將它指向Fabirc CA的配置文件。當Fabric CA服務啟動時,將會在HSM中生成CA簽名證書。如果不擔心CA簽名證書是否暴露,可以跳過該步驟。
  2. 使用Fabric CA客戶端通過自己的CA去注冊peer或者order節點身份。
  3. 編輯Fabric CA客戶端配置文件或者是環境變量使用HSM作為加密服務提供者並再次登錄獲取節點的身份。登錄命令將通過HSM生成私鑰文件.
  4. 更新關於peer或者orderer節點的配置文件中的BCCSP部分使用PKCS11,並將令牌作為加密服務提供者。指向由Fabric CA客戶端創建的MSP文件夾。一旦部署完成,peer節點或者orderer節點將可以通過由HSM提供保護的私鑰文件簽名和背書交易。

通過自己的CA使用HSM

如果使用自己的CA證書中心來部署Fabric組件,可以通過以下幾步使用HSM:

  1. 配置自己的CA使用PKCS11創建令牌與HSM進行通信。然后使用自己的CA去為每一個節點生成私鑰和簽名證書。私鑰由HSM內部進行生成。
  2. 使用CA去構建節點的MSP文件夾。將步驟一中生成的簽名證書放入signcerts文件夾內。可以保持keystore文件夾為空。
  3. 更新關於peer或者orderer節點的配置文件中的BCCSP部分使用PKCS11,並將令牌作為加密服務提供者。指向由Fabric CA客戶端創建的MSP文件夾。一旦部署完成,peer節點或者orderer節點將可以通過由HSM提供保護的私鑰文件簽名和背書交易。


免責聲明!

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



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