本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 AWS CloudHSM key_mgmt_util 工具中的 genDSAKeyPair 命令在硬件安全模块(HSM)中生成数字签名算法
在运行任何 key_mgmt_util 命令之前,您必须启动 key_mgmt_util 并以加密用户(CU)身份登录到 HSM。
提示
要查找您所创建密钥的属性(例如类型、长度、标签和 ID),请使用 getAttribute。要查找特定用户的密钥,请使用 getKeyInfo。要根据属性值查找密钥,请使用 findKey。
语法
genDSAKeyPair -h genDSAKeyPair -m
<modulus length>
-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]
示例
这些示例演示如何使用 genDSAKeyPair 创建 DSA 密钥对。
例 :创建 DSA 密钥对
此命令会创建一个具有 DSA
标签的 DSA 密钥对。输出显示公有密钥的密钥句柄为 19
且私有密钥的句柄为 21
。
Command:
genDSAKeyPair -m 2048 -l DSA
Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 19 private key handle: 21 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
例 :创建仅会话型 DSA 密钥对
此命令会创建仅在当前会话中有效的 DSA 密钥对。该命令除了必需的 (不唯一) 标签外还将分配 DSA_temp_pair
的唯一 ID。您可能希望创建诸如此类的密钥对并且验证仅会话型令牌。输出显示公有密钥的密钥句柄为 12
且私有密钥的句柄为 14
。
Command:
genDSAKeyPair -m 2048 -l DSA-temp -id DSA_temp_pair -sess
Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 12 private key handle: 14 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
要确认密钥对仅在会话中存在,请使用具有值为 1
(true) 的 findKey 的 -sess
参数。
Command:
findKey -sess 1
Total number of keys present 2 number of keys matched from start index 0::1 12, 14 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS
例 :创建共享、不可提取的 DSA 密钥对
此命令会创建一个 DSA 密钥对。私有密钥与三个其他用户共享,而且它无法从 HSM 中导出。公有密钥可由任何用户使用且可始终被提取。
Command:
genDSAKeyPair -m 2048 -l DSA -id DSA_shared_pair -nex -u 3,5,6
Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 11 private key handle: 19 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
例 :创建仲裁控制型密钥对
此命令会创建一个具有 DSA-mV2
标签的 DSA 密钥对。该命令使用 -u
参数与用户 4 和 6 共享私有密钥。它使用 -m_value
参数来要求使用私有密钥的任何加密操作需要至少两个批准的仲裁。此命令还使用 -attest
参数来验证生成密钥对的固件的完整性。
输出显示该命令生成一个具有密钥句柄 12
的公有密钥和一个具有密钥句柄 17
的私有密钥,并且显示通过了对于集群固件的鉴证检查。
Command:
genDSAKeyPair -m 2048 -l DSA-mV2 -m_value 2 -u 4,6 -attest
Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 12 private key handle: 17 Attestation Check : [PASS] Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
此命令在私有密钥 (密钥句柄 ) 上使用 getKeyInfo17
。输出确认密钥由当前用户 (用户 3) 所有且与用户 4 和 6 (无其他用户) 共享。输出还显示已启用仲裁身份验证且仲裁大小为 2。
Command:
getKeyInfo -k 17
Cfm3GetKey returned: 0x00 : HSM Return: SUCCESS Owned by user 3 also, shared to following 2 user(s): 4 6 2 Users need to approve to use/manage this key
参数
- -h
-
显示该命令的帮助信息。
必需:是
- -m
-
指定模数的长度 (以位为单位)。唯一有效值为
2048
。必需:是
- -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
运行完整性检查,以验证运行集群的固件是否被篡改。
默认:不执行认证检查。
必需:否