本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
步骤 2:下载包装公有密钥和导入令牌
创建不具有密钥材料的 AWS KMS key 后,使用 AWS KMS 控制台或 GetParametersForImport API 下载该 KMS 密钥的包装公有密钥和导入令牌。包装公有密钥和导入令牌是一个不可分割的集合,必须一起使用。
您将使用包装公有密钥来加密您的密钥材料以供传输。在下载 RSA 包装密钥对之前,您可以选择 RSA 包装密钥对的长度(密钥规范),以及用于加密导入的密钥材料以便在步骤 3 中传输的包装算法。AWS KMS 还支持 SM2 包装密钥规范(仅限中国区域)。
每个包装公有密钥和导入令牌集的有效期为 24 小时。如果您不在 24 小时的下载期限内使用它们导入密钥材料,则必须下载新的公有密钥和令牌集。您可以随时下载新的包装公有密钥和导入令牌集。这使您可以更改 RSA 包装密钥长度(“密钥规范”)或替换丢失的集。
您也可以下载包装公有密钥和导入令牌,以将相同的密钥材料重新导入 KMS 密钥中。您可以执行此操作来设置或更改密钥材料的过期时间,或者恢复过期或删除的密钥材料。每次将密钥材料导入 AWS KMS 时,都必须下载并重新加密密钥材料。
- 包装公有密钥的使用
-
下载包括一个对您的 AWS 账户 来说是唯一的公有密钥,也称为“包装公有密钥”。
在导入密钥材料之前,使用公有包装密钥对密钥材料进行加密,然后将加密的密钥材料上传到 AWS KMS。AWS KMS 收到您的加密密钥材料后,它会使用相应的私有密钥对密钥材料进行解密,然后在 AES 对称密钥下重新加密密钥材料,所有这些都在 AWS KMS 硬件安全模块(HSM)中完成。
- 使用导入令牌
-
下载包括一个带有元数据的导入令牌,以确保您的密钥材料导入正确。当您将加密的密钥材料上传至 AWS KMS 时,您必须上传在此步骤中下载的同一导入令牌。
选择包装公有密钥规范
要在导入过程中保护您的密钥材料,请使用从 AWS KMS 下载的包装公有密钥和支持的包装算法为其加密。您在下载包装公有密钥和导入令牌之前选择密钥规范。所有包装密钥对都是在 AWS KMS 硬件安全模块(HSM)中生成的。私有密钥永远不会让 HSM 处于纯文本状态。
- RSA 包装密钥规范
-
包装公有密钥的密钥规范决定了 RSA 密钥对中密钥的长度,该密钥对在传输到 AWS KMS 的过程中可以保护您的密钥材料。一般来说,我们建议使用实用的最长的包装公有密钥。我们提供多种包装公有密钥规范,以支持各种 HSM 和密钥管理器。
除非另有说明,AWS KMS 支持以下用于导入所有类型密钥材料的 RSA 包装密钥的密钥规范。
-
RSA_4096(首选)
-
RSA_3072
-
RSA_2048
注意
不支持以下组合:ECC_NIST_P521 密钥材料、RSA_2048 公有包装密钥规范和 RSAES_OAEP_SHA_* 包装算法。
您不能使用 RSA_2048 公有包装密钥直接包装 ECC_NIST_P521 密钥材料。使用更大的包装密钥或 RSA_AES_KEY_WRAP_SHA_* 包装算法。
-
- SM2 包装密钥规范(仅限中国区域)
-
AWS KMS 支持以下用于导入非对称密钥材料的 SM2 包装密钥的密钥规范。
-
SM2
-
选择包装算法
要在导入过程中保护您的密钥材料,请使用下载的包装公有密钥和支持的包装算法为其加密。
AWS KMS 支持多种标准 RSA 包装算法和两步混合包装算法。通常,我们建议使用与您导入的密钥材料和包装密钥规范兼容的最安全的包装算法。通常,选择硬件安全模块 (HSM) 支持的算法或用于保护密钥材料的密钥管理系统。
下表显示了每种类型的密钥材料和 KMS 密钥支持的包装算法。算法是以首选项顺序列出的。
密钥材料 | 支持的包装算法和规范 |
---|---|
对称加密密钥 256 位 AES 密钥
128 位 SM4 密钥(仅限中国区域) |
|
非对称 RSA 私有密钥 |
|
非对称椭圆曲线(ECC)私有密钥
您不能使用 RSAES_OAEP_SHA_* 包装算法和 RSA_2048 包装密钥规范来包装 ECC_NIST_P521 密钥材料。 |
|
非对称 SM2 私有密钥(仅限中国区域) |
|
HMAC 密钥 |
|
注意
中国区域不支持 RSA_AES_KEY_WRAP_SHA_256
和 RSA_AES_KEY_WRAP_SHA_1
包装算法。
-
RSA_AES_KEY_WRAP_SHA_256
– 一种两步混合包装算法,该算法将加密密钥材料与您生成的 AES 对称密钥相结合,然后使用下载的 RSA 公有包装密钥和 RSAES_OAEP_SHA_256 包装算法对 AES 对称密钥进行加密。除中国区域外,包装 RSA 私有密钥材料需要使用
RSA_AES_KEY_WRAP_SHA_*
包装算法。中国区域必须使用SM2PKE
包装算法。 -
RSA_AES_KEY_WRAP_SHA_1
– 一种两步混合包装算法,该算法将加密密钥材料与您生成的 AES 对称密钥相结合,然后使用下载的 RSA 包装公有密钥和 RSAES_OAEP_SHA_1 包装算法对 AES 对称密钥进行加密。除中国区域外,包装 RSA 私有密钥材料需要使用
RSA_AES_KEY_WRAP_SHA_*
包装算法。中国区域必须使用SM2PKE
包装算法。 -
RSAES_OAEP_SHA_256
– RSA 加密算法,使用最优非对称加密填充 (OAEP) 与 SHA-256 哈希函数。 -
RSAES_OAEP_SHA_1
– RSA 加密算法,使用最优非对称加密填充 (OAEP) 与 SHA-1 哈希函数。 -
RSAES_PKCS1_V1_5
(已淘汰;自 2023 年 10 月 10 日起,AWS KMS 不支持 RSAES_PKCS1_V1_5 包装算法)– PKCS #1 版本 1.5 中定义的具有填充格式的 RSA 加密算法。 -
SM2PKE
(仅限中国区域)– 一种由 OSCCA 在 GM/T 0003.4-2012 中定义的基于椭圆曲线的加密算法。
下载包装公有密钥和导入令牌(控制台)
您可以使用 AWS KMS 控制台下载包装公有密钥和导入令牌。
-
如果您刚刚完成创建不带密钥材料的 KMS 密钥的步骤并且您位于 Download wrapping key and import token(下载包装密钥和导入令牌)页面上,请跳至 步骤 9。
-
登录到 AWS Management Console,然后通过以下网址打开 AWS Key Management Service(AWS KMS)控制台:https://console.aws.amazon.com/kms
。 -
要更改 AWS 区域,请使用页面右上角的区域选择器。
-
在导航窗格中,选择客户托管密钥。
提示
您只能将密钥材料导入源为外部(导入密钥材料)的 KMS 密钥中。这指示已创建不带密钥材料的 KMS 密钥。要向表中添加 Origin (源) 列,请在页面右上角,选择设置图标 (
)。打开 Origin (源),然后选择 Confirm (确认)。
-
选择待导入的 KMS 密钥的别名或密钥 ID。
-
选择 Cryptographic configuration(加密配置)选项卡并查看其值。这些选项卡在 General configuration(常规配置)部分下。
您只能将密钥材料导入源为外部(导入密钥材料)的 KMS 密钥。有关创建带已导入密钥材料的 KMS 密钥的信息,请参阅 导入密钥的 AWS KMS 密钥材料。
-
选择密钥材料选项卡,然后选择导入密钥材料。
密钥材料选项卡仅针对源值为外部(导入密钥材料)的 KMS 密钥显示。
-
对于选择包装密钥规范,选择您的 KMS 密钥的配置。创建此密钥后,您无法更改密钥规范。
-
对于选择包装算法,请选择您将用于为密钥材料加密的选项。有关这些选项的详细信息,请参阅选择包装算法。
-
选择下载包装公有密钥和导入令牌,然后保存文件。
如果有 Next (下一步) 选项,而且要立即继续执行此过程,请选择 Next (下一步)。要稍后再继续,请选择 Cancel (取消)。
-
解压缩
.zip
文件,即您在上一步 (Import_Parameters_
) 中保存的文件。<key_id>
_<timestamp>
此文件夹包含以下文件:
-
名为
WrappingPublicKey.bin
的文件中的包装公有密钥。 -
名为
ImportToken.bin
的文件中的导入令牌。 -
名为 README.txt 的文本文件。此文件包含以下相关信息:包装公有密钥、用于为密钥材料加密的包装算法,以及包装公有密钥和导入令牌的过期日期和时间。
-
-
要继续执行此过程,请参阅为您的密钥材料加密。
下载包装公有密钥和导入令牌(AWS KMS API)
要下载公有密钥和导入令牌,请使用 GetParametersForImport API。指定将与导入的密钥材料关联的 KMS 密钥。此 KMS 密钥的 Origin 值必须为 EXTERNAL
。
此示例指定了 RSA_AES_KEY_WRAP_SHA_256
包装算法、RSA_3072 包装公有密钥规范和示例密钥 ID。将这些示例值替换为有效的下载值。在该操作中,对于密钥 ID,您可以使用密钥 ID 或密钥 ARN,但不能使用别名名称或别名 ARN。
$
aws kms get-parameters-for-import \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --wrapping-algorithmRSA_AES_KEY_WRAP_SHA_256
\ --wrapping-key-specRSA_3072
该命令成功执行后,您会看到类似以下内容的输出:
{ "ParametersValidTo": 1568290320.0, "PublicKey": "
public key (base64 encoded)
", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "ImportToken": "import token (base64 encoded)
" }
为了准备下一步的数据,base64 会对公有密钥和导入令牌进行解码,并将解码后的值保存在文件中。
要对公有密钥进行 base64 解码并导入令牌:
-
复制 base64 编码公有密钥 (由示例输出中
公有密钥 (base64 编码)
表示),将其粘贴到新文件中,然后保存文件。向文件提供一个描述性名称,例如PublicKey.b64
。 -
使用 OpenSSL
对文件的内容进行 base64 解码,然后将解码后的数据保存到一个新文件中。以下示例会对您在上一步骤 ( PublicKey.b64
) 中保存的文件中的数据进行解码,并将输出保存到一个名为WrappingPublicKey.bin
的新文件中。$
openssl enc -d -base64 -A -in PublicKey.b64 -out WrappingPublicKey.bin
-
复制 base64 编码导入令牌 (由示例输出中
导入令牌 (base64 编码)
表示),将其粘贴到新文件中,然后保存文件。为文件指定一个描述性名称,例如importtoken.b64
。 -
使用 OpenSSL
对文件的内容进行 base64 解码,然后将解码后的数据保存到一个新文件中。以下示例会对您在上一步骤 ( ImportToken.b64
) 中保存的文件中的数据进行解码,并将输出保存到一个名为ImportToken.bin
的新文件中。$
openssl enc -d -base64 -A -in importtoken.b64 -out ImportToken.bin
继续执行步骤 3:加密密钥材料。