加密服務支持您將自帶的密鑰材料導入密碼機中。本文介紹如何將對稱密鑰材料和非對稱密鑰材料導入密碼機。
適用的密碼機類型
通用密碼機(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