导入密钥材料步骤 2:下载包装公有密钥和导入令牌 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

导入密钥材料步骤 2:下载包装公有密钥和导入令牌

创建不Amazon KMS key带密钥材料的后,使用Amazon KMS控制台或 GetParametersForImportAPI 下载封装公钥的 RSA 和该 KMS 密钥的导入令牌。包装公有密钥和导入令牌是一个不可分割的集合,必须一起使用。

您将使用包装公有密钥来加密您的密钥材料以供传输。在下载之前,您可以选择 RSA 包装密钥对的长度(密钥规范),以及用于加密导入的密钥材料以便在步骤 3 中传输的包装算法。

每个包装公有密钥和导入令牌集的有效期为 24 小时。如果您不在 24 小时的下载期限内使用它们导入密钥材料,则必须下载新的公有密钥和令牌集。您可以随时下载新的包装公有密钥和导入令牌集。这使您可以更改 RSA 包装密钥长度(“密钥规范”)或替换丢失的集。

您也可以下载包装公有密钥和导入令牌,以将相同的密钥材料重新导入 KMS 密钥中。您可以执行此操作来设置或更改密钥材料的过期时间,或者恢复过期或删除的密钥材料。每次将密钥材料导入 Amazon KMS 时,都必须下载并重新加密密钥材料。

包装公有密钥的使用

下载包括一个对您的 Amazon Web Services 账户 来说是唯一的公有密钥,也称为“包装公有密钥”

在导入密钥材料之前,使用公有包装密钥对密钥材料进行加密,然后将加密的密钥材料上传到 Amazon KMS。Amazon KMS 收到您的加密密钥材料后,它会使用相应的私有密钥对密钥材料进行解密,然后在 AES 对称密钥下重新加密密钥材料,所有这些都在 Amazon KMS 硬件安全模块(HSM)中完成。

使用导入令牌

下载包括一个带有元数据的导入令牌,以确保您的密钥材料导入正确。当您将加密的密钥材料上传至 Amazon KMS 时,您必须上传在此步骤中下载的同一导入令牌。

选择包装公有密钥规范

要在导入过程中保护您的密钥材料,请使用从 Amazon KMS 下载的包装公有密钥和支持的包装算法为其加密。您在下载包装公有密钥和导入令牌之前选择密钥规范。所有包装密钥对都是在 Amazon KMS 硬件安全模块(HSM)中生成的。私有密钥永远不会让 HSM 处于纯文本状态。

包装公有密钥的密钥规范决定了 RSA 密钥对中密钥的长度,该密钥对在传输到 Amazon KMS 的过程中可以保护您的密钥材料。一般来说,我们建议使用实用的最长的包装公有密钥。我们提供多种包装公有密钥规范,以支持各种 HSM 和密钥管理器。

除非另有说明,Amazon 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_* 包装算法。

选择包装算法

要在导入过程中保护您的密钥材料,请使用下载的包装公有密钥和支持的包装算法为其加密。

Amazon KMS 支持多种标准 RSA 包装算法和两步混合包装算法。通常,我们建议使用与您导入的密钥材料和包装密钥规范兼容的最安全的包装算法。通常,选择硬件安全模块 (HSM) 支持的算法或用于保护密钥材料的密钥管理系统。

下表显示了每种类型的密钥材料和 KMS 密钥支持的包装算法。算法是以首选项顺序列出的。

密钥材料 支持的包装算法和规范
对称加密密钥

256 位 AES 密钥

128 位 SM4 密钥(仅限中国区域)

包装算法:

RSAES_OAEP_SHA_256

RSAES_OAEP_SHA_1

已淘汰的包装算法:

RSAES_PKCS1_V1

注意

截至 2023 年 10 月 10 日,Amazon KMS不支持 RSAES_PKCS1_V1_5 包装算法。

包装密钥规范:

RSA_2048

RSA_3072

RSA_4096

非对称 RSA 私有密钥
包装算法:

RSA_AES_KEY_WRAP_SHA_256

RSA_AES_KEY_WRAP_SHA_1

包装密钥规范:

RSA_2048

RSA_3072

RSA_4096

非对称椭圆曲线(ECC)私有密钥

您不能使用 RSAES_OAEP_SHA_* 包装算法和 RSA_2048 包装密钥规范来包装 ECC_NIST_P521 密钥材料。

包装算法:

RSA_AES_KEY_WRAP_SHA_256

RSA_AES_KEY_WRAP_SHA_1

RSAES_OAEP_SHA_256

RSAES_OAEP_SHA_1

包装密钥规范:

RSA_2048

RSA_3072

RSA_4096

HMAC 密钥
包装算法:

RSAES_OAEP_SHA_256

RSAES_OAEP_SHA_1

包装密钥规范:

RSA_2048

RSA_3072

RSA_4096

  • RSA_AES_KEY_WRAP_SHA_256 – 一种两步混合包装算法,该算法将加密密钥材料与您生成的 AES 对称密钥相结合,然后使用下载的 RSA 公有包装密钥和 RSAES_OAEP_SHA_256 包装算法对 AES 对称密钥进行加密。

    包装 RSA 私有密钥材料需要使用 RSA_AES_KEY_WRAP_SHA_* 包装算法。

  • RSA_AES_KEY_WRAP_SHA_1 – 一种两步混合包装算法,该算法将加密密钥材料与您生成的 AES 对称密钥相结合,然后使用下载的 RSA 包装公有密钥和 RSAES_OAEP_SHA_1 包装算法对 AES 对称密钥进行加密。

    包装 RSA 私有密钥材料需要使用 RSA_AES_KEY_WRAP_SHA_* 包装算法。

  • RSAES_OAEP_SHA_256 – RSA 加密算法,使用最优非对称加密填充 (OAEP) 与 SHA-256 哈希函数。

  • RSAES_OAEP_SHA_1 – RSA 加密算法,使用最优非对称加密填充 (OAEP) 与 SHA-1 哈希函数。

  • RSAES_PKCS1_V1_5(已淘汰;自 2023 年 10 月 10 日起,Amazon KMS 不支持 RSAES_PKCS1_V1_5 包装算法)– PKCS #1 版本 1.5 中定义的具有填充格式的 RSA 加密算法。

下载包装公有密钥和导入令牌(控制台)

您可以使用 Amazon KMS 控制台下载包装公有密钥和导入令牌。

  1. 如果您刚刚完成创建不带密钥材料的 KMS 密钥的步骤并且您位于 Download wrapping key and import token(下载包装密钥和导入令牌)页面上,请跳至 步骤 9

  2. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon Key Management Service (Amazon KMS) 控制台:https://console.aws.amazon.com/kms

  3. 要更改 Amazon Web Services 区域,请使用页面右上角的区域选择器。

  4. 在导航窗格中,选择客户托管密钥

    提示

    您只能将密钥材料导入外部(导入密钥材料)的 KMS 密钥中。这指示已创建不带密钥材料的 KMS 密钥。要向表中添加 Origin (源) 列,请在页面右上角,选择设置图标 ( )。打开 Origin (源),然后选择 Confirm (确认)

  5. 选择待导入的 KMS 密钥的别名或密钥 ID。

  6. 选择 Cryptographic configuration(加密配置)选项卡并查看其值。这些选项卡在 General configuration(常规配置)部分下。

    您只能将密钥材料导入外部(导入密钥材料)的 KMS 密钥。有关创建带已导入密钥材料的 KMS 密钥的信息,请参阅 导入密钥的 Amazon KMS 密钥材料

  7. 选择密钥材料选项卡,然后选择导入密钥材料

    密钥材料选项卡仅针对值为外部(导入密钥材料)的 KMS 密钥显示。

  8. 对于选择包装密钥规范,选择您的 KMS 密钥的配置。创建此密钥后,您无法更改密钥规范。

  9. 对于选择包装算法,请选择您将用于为密钥材料加密的选项。有关这些选项的详细信息,请参阅选择包装算法

  10. 选择下载包装公有密钥和导入令牌,然后保存文件。

    如果有 Next (下一步) 选项,而且要立即继续执行此过程,请选择 Next (下一步)。要稍后再继续,请选择 Cancel (取消)

  11. 解压缩 .zip 文件,即您在上一步 (Import_Parameters_<key_id>_<timestamp>) 中保存的文件。

    此文件夹包含以下文件:

    • 名为 WrappingPublicKey.bin 的文件中的 RSA 包装公有密钥。

    • 名为 ImportToken.bin 的文件中的导入令牌。

    • 名为 README.txt 的文本文件。此文件包含以下相关信息:包装公有密钥、用于为密钥材料加密的包装算法,以及包装公有密钥和导入令牌的过期日期和时间。

  12. 要继续执行此过程,请参阅为您的密钥材料加密

下载包装公有密钥和导入令牌(Amazon KMS API)

要下载公钥和导入令牌,请使用 GetParametersForImportAPI。指定将与导入的密钥材料关联的 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-algorithm RSA_AES_KEY_WRAP_SHA_256 \ --wrapping-key-spec RSA_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 解码并导入令牌:

  1. 复制 base64 编码公有密钥 (由示例输出中公有密钥 (base64 编码) 表示),将其粘贴到新文件中,然后保存文件。向文件提供一个描述性名称,例如 PublicKey.b64

  2. 使用 OpenSSL 对文件的内容进行 base64 解码,然后将解码后的数据保存到一个新文件中。以下示例会对您在上一步骤 (PublicKey.b64) 中保存的文件中的数据进行解码,并将输出保存到一个名为 WrappingPublicKey.bin 的新文件中。

    $ openssl enc -d -base64 -A -in PublicKey.b64 -out WrappingPublicKey.bin
  3. 复制 base64 编码导入令牌 (由示例输出中导入令牌 (base64 编码)表示),将其粘贴到新文件中,然后保存文件。为文件指定一个描述性名称,例如 importtoken.b64

  4. 使用 OpenSSL 对文件的内容进行 base64 解码,然后将解码后的数据保存到一个新文件中。以下示例会对您在上一步骤 (ImportToken.b64) 中保存的文件中的数据进行解码,并将输出保存到一个名为 ImportToken.bin 的新文件中。

    $ openssl enc -d -base64 -A -in importtoken.b64 -out ImportToken.bin

继续执行步骤 3:加密密钥材料