使用 KMU 生成 AWS CloudHSM RSA 密钥对
使用 AWS CloudHSM key_mgmt_util 工具中的 genRSAKeyPair 命令生成 RSA
在运行任何 key_mgmt_util 命令之前,您必须启动 key_mgmt_util 并以加密用户(CU)身份登录到 HSM。
提示
要查找您所创建密钥的属性(例如类型、长度、标签和 ID),请使用 getAttribute。要查找特定用户的密钥,请使用 getKeyInfo。要根据属性值查找密钥,请使用 findKey。
语法
genRSAKeyPair -h genRSAKeyPair -m
<modulus length>
-e<public exponent>
-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 中使用 genRSAKeyPair 创建非对称密钥对。
例 :创建并检查 RSA 密钥对
此命令将创建一个带 2048 位模数和指数 65537 的 RSA 密钥对。输出表明,公有密钥句柄为 2100177
,私有密钥句柄为 2100426
。
Command:
genRSAKeyPair -m 2048 -e 65537 -l rsa_test
Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 2100177 private key handle: 2100426 Cluster Status: Node id 0 status: 0x00000000 : HSM Return: SUCCESS Node id 1 status: 0x00000000 : HSM Return: SUCCESS
下一条命令使用 getAttribute 获取我们刚刚创建的公有密钥的属性。它将输出写入 attr_2100177
文件。后跟 cat 命令,该命令将获取属性文件的内容。有关解释密钥属性的帮助,请参阅 KMU 的 AWS CloudHSM 密钥属性参考。
生成的十六进制值确认它是一个类型为 RSA (OBJ_ATTR_CLASS
0x02
) 的公有密钥 (OBJ_ATTR_KEY_TYPE 0x00
)。您可以使用此公有密钥进行加密 (OBJ_ATTR_ENCRYPT 0x01
),但不能进行解密 (OBJ_ATTR_DECRYPT 0x00
)。该结果还包含密钥长度 (512,0x200
)、模数、模数长度 (2048,0x800
) 和公有指数 (65537,0x10001
)。
Command:
getAttribute -o 2100177 -a 512 -out attr_2100177
Attribute size: 801, count: 26 Written to: attr_2100177 file Cfm3GetAttribute returned: 0x00 : HSM Return: SUCCESS
$
cat attr_2100177
OBJ_ATTR_CLASS 0x02 OBJ_ATTR_KEY_TYPE 0x00 OBJ_ATTR_TOKEN 0x01 OBJ_ATTR_PRIVATE 0x01 OBJ_ATTR_ENCRYPT 0x01 OBJ_ATTR_DECRYPT 0x00 OBJ_ATTR_WRAP 0x01 OBJ_ATTR_UNWRAP 0x00 OBJ_ATTR_SIGN 0x00 OBJ_ATTR_VERIFY 0x01 OBJ_ATTR_LOCAL 0x01 OBJ_ATTR_SENSITIVE 0x00 OBJ_ATTR_EXTRACTABLE 0x01 OBJ_ATTR_LABEL rsa_test OBJ_ATTR_ID OBJ_ATTR_VALUE_LEN 0x00000200 OBJ_ATTR_KCV 0xc51c18 OBJ_ATTR_MODULUS 0xbb9301cc362c1d9724eb93da8adab0364296bde7124a241087d9436b9be57e4f7780040df03c2c 1c0fe6e3b61aa83c205280119452868f66541bbbffacbbe787b8284fc81deaeef2b8ec0ba25a077d 6983c77a1de7b17cbe8e15b203868704c6452c2810344a7f2736012424cf0703cf15a37183a1d2d0 97240829f8f90b063dd3a41171402b162578d581980976653935431da0c1260bfe756d85dca63857 d9f27a541676cb9c7def0ef6a2a89c9b9304bcac16fdf8183c0a555421f9ad5dfeb534cf26b65873 970cdf1a07484f1c128b53e10209cc6f7ac308669112968c81a5de408e7f644fe58b1a9ae1286fec b3e4203294a96fae06f8f0db7982cb5d7f OBJ_ATTR_MODULUS_BITS 0x00000800 OBJ_ATTR_PUBLIC_EXPONENT 0x010001 OBJ_ATTR_TRUSTED 0x00 OBJ_ATTR_WRAP_WITH_TRUSTED 0x00 OBJ_ATTR_DESTROYABLE 0x01 OBJ_ATTR_DERIVE 0x00 OBJ_ATTR_ALWAYS_SENSITIVE 0x00 OBJ_ATTR_NEVER_EXTRACTABLE 0x00
例 :生成共享 RSA 密钥对
此命令将生成一个 RSA 密钥对并与用户 4 (HSM 上的另一个 CU) 共享私有密钥。该命令使用 m_value
参数以要求至少两次批准,之后密钥对中的私有密钥才能用于加密操作。在使用 m_value
参数时,还必须在命令中使用 -u
,并且 m_value
不能超过用户总数 (-u
中的值数 + 所有者)。
Command:
genRSAKeyPair -m 2048 -e 65537 -l rsa_mofn -id rsa_mv2 -u 4 -m_value 2
Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 27 private key handle: 28 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
参数
- -h
-
显示该命令的帮助信息。
必需:是
- -m
-
指定模数的长度 (以位为单位)。最小值为 2048。
必需:是
- -环
-
指定公有指数。此值必须为大于或等于 65537 的奇数。
必需:是
- -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
运行完整性检查,以验证运行集群的固件是否被篡改。
默认:不执行认证检查。
必需:否