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對稱金鑰材料為例介紹。
建立對稱金鑰材料。
說明如果您已有密鑰材料,請跳過本步驟。但需要注意檔案中只能包含密鑰材料,不能有額外的內容,例如分行符號。
在本樣本中,使用OpenSSL工具,產生一個32位元組的對稱金鑰材料。
openssl rand 32 >aes256key_to_import.key執行
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執行
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私密金鑰和公開金鑰為例介紹。
建立非對稱金鑰材料。如果您已有密鑰材料,請跳過本步驟。
例如,使用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):

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

執行
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執行
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執行
importPubKey命令,匯入非對稱金鑰材料的公開金鑰。Command: importPubKey -f secp256k1_key_pub.pem -l secp256k1_key_pub參數
說明
-f
公開金鑰的檔案名稱。
-l
密鑰標籤。
預期輸出:
Cfm3CreatePublicKey returned: 0x00 : HSM Return: SUCCESS