使用 KMU 生成 AWS CloudHSM ECC 密钥对
使用 AWS CloudHSM key_mgmt_util 工具中的 genECCKeyPair
命令在硬件安全模块(HSM)中生成椭圆曲线加密genECCKeyPair
命令时,您必须为密钥对指定椭圆曲线标识符和标签。您也可以与其他 CU 用户共享私有密钥,创建不可提取的密钥、仲裁控制的密钥和会话结束时过期的密钥。如果命令成功,则它会返回 HSM 分配到公有和私有 ECC 密钥的密钥句柄。您可以使用密钥句柄来区分这些密钥与其他命令。
在运行任何 key_mgmt_util 命令之前,您必须启动 key_mgmt_util 并以加密用户(CU)身份登录到 HSM。
提示
要查找您所创建密钥的属性(例如类型、长度、标签和 ID),请使用 getAttribute。要查找特定用户的密钥,请使用 getKeyInfo。要根据属性值查找密钥,请使用 findKey。
语法
genECCKeyPair -h genECCKeyPair -i <EC curve id> -l <label> [-id <key ID>] [-min_srv <minimum number of servers>] [-m_value <0..8>] [-nex] [-sess] [-timeout <number of seconds> ] [-u <user-ids>] [-attest]
示例
以下示例演示如何在您的 HSM 中使用 genECCKeyPair 创建 ECC 密钥对。
例 :创建并检查 ECC 密钥对
此命令使用 NID_secp384r1 椭圆曲线和 ecc14
标签创建 ECC 密钥对。输出表明,私有密钥的密钥句柄为 262177
,并且公有密钥的密钥句柄为 262179
。该标签同时应用于公有密钥和私有密钥。
Command:
genECCKeyPair -i 14 -l ecc14
Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 262179 private key handle: 262177 Cluster Error Status Node id 2 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
生成密钥后,您可以检查其属性。使用 getAttribute 将新 ECC 私有密钥的所有属性(由常量 512
表示)写入 attr_262177
文件。
Command:
getAttribute -o 262177 -a 512 -out attr_262177
got all attributes of size 529 attr cnt 19 Attributes dumped into attr_262177 Cfm3GetAttribute returned: 0x00 : HSM Return: SUCCESS
然后,使用 cat
命令查看 attr_262177
属性文件的内容。输出表明,该密钥是一个椭圆曲线私有密钥,它可用于签名,但不可用于加密、解密、包装、解开包装或验证。该密钥是持久性的,并且可导出。
$
cat attr_262177
OBJ_ATTR_CLASS 0x03 OBJ_ATTR_KEY_TYPE 0x03 OBJ_ATTR_TOKEN 0x01 OBJ_ATTR_PRIVATE 0x01 OBJ_ATTR_ENCRYPT 0x00 OBJ_ATTR_DECRYPT 0x00 OBJ_ATTR_WRAP 0x00 OBJ_ATTR_UNWRAP 0x00 OBJ_ATTR_SIGN 0x01 OBJ_ATTR_VERIFY 0x00 OBJ_ATTR_LOCAL 0x01 OBJ_ATTR_SENSITIVE 0x01 OBJ_ATTR_EXTRACTABLE 0x01 OBJ_ATTR_LABEL ecc2 OBJ_ATTR_ID OBJ_ATTR_VALUE_LEN 0x0000008a OBJ_ATTR_KCV 0xbbb32a OBJ_ATTR_MODULUS 044a0f9d01d10f7437d9fa20995f0cc742552e5ba16d3d7e9a65a33e20ad3e569e68eb62477a9960a87911e6121d112b698e469a0329a665eba74ee5ac55eae9f5 OBJ_ATTR_MODULUS_BITS 0x0000019f
例 使用无效的 EEC 曲线
此命令将尝试使用 NID_X9_62_prime192v1 曲线创建 ECC 密钥对。由于此椭圆曲线对 FIPS 模式 HSM 无效,因此该命令将失败。消息报告集群中的某个服务器不可用,但这通常不表示集群中的 HSM 有问题。
Command:
genECCKeyPair -i 1 -l ecc1
Cfm3GenerateKeyPair returned: 0xb3 : HSM Error: This operation violates the current configured/FIPS policies Cluster Error Status Node id 0 and err state 0x30000085 : HSM CLUSTER ERROR: Server in cluster is unavailable
参数
- -h
-
显示该命令的帮助信息。
必需:是
- -i
-
指定椭圆曲线的标识符。输入标识符。
有效值:
-
2:NID_X9_62_prime256v1
-
14:NID_secp384r1
-
16:NID_secp256k1
必需:是
-
- -l
-
指定用户定义的密钥对标签。键入字符串。同样的标签适用于配对中的两个密钥。
label
的最大大小为 127 个字符。您可使用任何短语,以帮助您识别密钥。由于标签并非唯一,因此您可将其用于分组和分类密钥。
必需:是
- -id
-
为密钥对指定用户定义标识符。在集群中键入唯一字符串。默认值是空字符串。您指定的 ID 适用于密钥对中的两个密钥。
默认值:无 ID 值。
必需:否
- -min_srv
-
指定在
-timeout
参数的值到期之前密钥在其上同步的 HSM 数量的最小值。如果密钥在分配的时间内未同步到指定数量的服务器,则不会创建它。AWS CloudHSM 自动将每个密钥与集群中的每个 HSM 同步。要加快此过程,请将
min_srv
的值设置为小于集群中的 HSM 数,并设置一个较低的超时值。但请注意,一些请求可能无法生成密钥。默认值:1
必需:否
- -m_value
-
指定必须批准使用密钥对中的私有密钥进行任何加密操作的用户数量。键入
0
至8
范围的值。此参数规定了私有密钥的仲裁身份验证要求。默认值
0
表明禁用密钥的仲裁身份验验证功能。启用仲裁身份验证后,指定数量的用户必须签署令牌才能批准私有密钥加密操作以及共享或取消共享私有密钥操作。要查找密钥的
m_value
用户,请使用 getKeyInfo。只有当命令中的
-u
参数与足够多的用户共享密钥对以满足m_value
要求时,此参数才有效。默认:0
必需:否
- -nex
-
使私钥无法提取。生成的私钥无法从 HSM 中导出。公有密钥始终可提取。
默认:密钥对中的公有密钥和私有密钥均可提取。
必需:否
- -sess
-
创建仅在当前会话中存在的密钥。会话结束后,密钥无法恢复。
如果您只需要一个短暂的密钥,例如用于加密然后快速解密另一个密钥的包装密钥,请使用此参数。对于会话结束后可能需要解密的加密数据,切勿使用会话密钥。
若要将会话密钥更改为永久(令牌)密钥,请使用 setAttribute。
默认:密钥永久有效。
必需:否
- -timeout
-
指定命令等待密钥同步到
min_srv
参数指定数量的 HSM 所需的时间(以秒为单位)。仅当
min_srv
参数也用于此命令时,该参数才有效。默认:没有超时 该命令无限期等待,仅当密钥同步至最少数量的服务器时才返回。
必需:否
- -u
-
与指定用户共享密钥对中的私钥。此参数向其他 HSM 加密用户(CU)授予在加密操作中使用私有密钥的权限。任何用户都可以在不共享的情况下使用公有密钥。
键入一个逗号分隔的 HSM 用户 ID 列表,例如 -
u 5,6
。请勿包括当前用户的 HSM 用户 ID。要查找 HSM 上的 CU 的 HSM 用户 ID,请使用 listUsers。要共享或取消共享现有密钥,请在 cloudhsm_mgmt_util 中使用 shareKey。默认:只有当前用户可使用私有密钥。
必需:否
- -attest
运行完整性检查,以验证运行集群的固件是否被篡改。
默认:不执行认证检查。
必需:否