全部產品
Search
文件中心

Key Management Service:將密鑰材料匯入密碼機HSM

更新時間:Aug 02, 2024

Data Encryption Service支援您將內建的密鑰材料匯入密碼機中。本文介紹如何將對稱金鑰材料和非對稱金鑰材料匯入密碼機。

適用的密碼機類型

通用密碼機(FIPS)

前提條件

已啟動HSM用戶端代理(hsm_proxy)。具體操作,請參見啟動HSM用戶端(hsm_proxy)

使用的工具

key_mgmt_tool命令列工具。詳細介紹,請參見key_mgmt_tool

執行本文檔操作前,請通過key_mgmt_tool(密碼機密鑰管理工具)並使用CU使用者登入,命令如下。

說明
  • 請將/opt/hsm/bin/key_mgmt_tool替換為真實路徑。

  • 請將<yourCuUserName><yourCuUserPassword>替換真實CU使用者名稱、密碼。

$/opt/hsm/bin/key_mgmt_tool 
Command: loginHSM -u CU -s <yourCuUserName> -p <yourCuUserPassword>

匯入對稱金鑰材料

以匯入AES-256對稱金鑰材料為例介紹。

  1. 建立對稱金鑰材料。

    說明

    如果您已有密鑰材料,請跳過本步驟。但需要注意檔案中只能包含密鑰材料,不能有額外的內容,例如分行符號。

    在本樣本中,使用OpenSSL工具,產生一個32位元組的對稱金鑰材料。

    openssl rand 32 >aes256key_to_import.key
  2. 執行genSymKey命令,產生封裝密鑰。

    Command:  genSymKey -t 31 -s 32 -sess -l import-wrapping-key

    參數

    說明

    -t

    密鑰類型。取值:

    • 21:3DES

    • 31:AES

    -s

    密鑰長度。單位為位元組。

    • AES類型的密鑰:取值為16、 24或32。

    • 3DES類型的密鑰:取值為24。

    -sess

    密鑰用於會話。表示它是臨時使用,而非長期儲存。

    -l

    密鑰標籤。

    預期輸出:

      Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS
      Symmetric Key Created.  Key Handle: 37
      Cluster Status:
      Node id 0 status: 0x00000000 : HSM Return: SUCCESS
  3. 執行imSymKey命令,匯入對稱金鑰材料。

    Command:  imSymKey -f aes256key_to_import.key -t 31 -l aes256-key-imported -w 37

    參數

    說明

    -f

    密鑰材料的檔案名稱。

    -t

    密鑰材料的密鑰類型。取值:

    • 16:GENERIC_SECRET

    • 21:3DES或DES

    • 31:AES

    -l

    密鑰標籤。

    -w

    封裝密鑰的標識。即您執行genSymKey命令產生封裝密鑰時,輸出結果中的Key Handle值。

    說明

    Key Handle值由密碼機隨機分配,您需要根據實際情況修改。

    預期輸出:

      Cfm3ImportWrapKey returned: 0x00 : HSM Return: SUCCESS
      Cfm3CreateUnwrapTemplate2 returned: 0x00 : HSM Return: SUCCESS
      Cfm3ImportUnWrapKey returned: 0x00 : HSM Return: SUCCESS
      Symmetric Key Imported.  Key Handle: 35 
      Cluster Status:
      Node id 0 status: 0x00000000 : HSM Return: SUCCESS

匯入非對稱金鑰材料

以匯入一個ECC secp256k1私密金鑰和公開金鑰為例介紹。

  1. 建立非對稱金鑰材料。如果您已有密鑰材料,請跳過本步驟。

    例如,使用OpenSSL工具,產生一個ECC secp256k1的非對稱金鑰材料。

    openssl ecparam -name secp256k1 -genkey -noout -out secp256k1_key.pem
    openssl ec -in secp256k1_key.pem -pubout -out secp256k1_key_pub.pem

    私密金鑰檔案樣本(secp256k1_key.pem):image.png

    公開金鑰檔案樣本(secp256k1_key_pub.pem):image.png

  2. 執行genSymKey命令,建立封裝密鑰。

    說明

    您可根據需要匯入非對稱金鑰材料的公開金鑰或私密金鑰。如果僅匯入公開金鑰,不需要建立封裝密鑰。

    Command:  genSymKey -t 31 -s 32 -sess -l import-wrapping-key

    參數

    說明

    -t

    密鑰類型。取值:

    • 21:3DES

    • 31:AES

    -s

    密鑰長度。單位為位元組。

    • AES類型的密鑰:取值為16、 24或32。

    • 3DES類型的密鑰:取值為24。

    -sess

    密鑰用於會話。表示它是臨時使用,而非長期儲存。

    -l

    密鑰標籤。

    預期輸出:

      Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS
      Symmetric Key Created.  Key Handle: 37
      Cluster Status:
      Node id 0 status: 0x00000000 : HSM Return: SUCCESS
  3. 執行importPrivateKey命令,匯入非對稱金鑰材料的私密金鑰。

    Command:  importPrivateKey -f secp256k1_key.pem -l secp256k1_key-imported -w 37

    參數

    說明

    -f

    私密金鑰的檔案名稱。

    -l

    密鑰標籤。

    -w

    封裝密鑰的標識。即您執行genSymKey命令產生封裝密鑰時,輸出結果中的Key Handle值。

    說明

    Key Handle值由密碼機隨機分配,您需要根據實際情況修改。

    預期輸出:

    	BER encoded key length is 135
      Cfm3ImportWrapKey returned: 0x00 : HSM Return: SUCCESS
      Cfm3CreateUnwrapTemplate2 returned: 0x00 : HSM Return: SUCCESS
      Cfm3ImportUnWrapKey: 0x00 : HSM Return: SUCCESS
      Private Key Imported.  Key Handle: 36 
      Cluster Status:
      Node id 0 status: 0x00000000 : HSM Return: SUCCESS
  4. 執行importPubKey命令,匯入非對稱金鑰材料的公開金鑰。

    Command:  importPubKey -f secp256k1_key_pub.pem -l secp256k1_key_pub

    參數

    說明

    -f

    公開金鑰的檔案名稱。

    -l

    密鑰標籤。

    預期輸出:

    	Cfm3CreatePublicKey returned: 0x00 : HSM Return: SUCCESS