加密服务支持您将自带的密钥材料导入密码机中。本文介绍如何将对称密钥材料和非对称密钥材料导入密码机。
适用的密码机类型
通用密码机(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