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

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

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

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

您将使用包装公有密钥来加密您的密钥材料以供传输。在下载RSA封装密钥对之前,您需要选择封RSA装密钥对的长度(密钥规范),以及用于加密导入的密钥材料以便在步骤 3 中传输的封装算法。 Amazon KMS 还支持SM2包装密钥规范(仅限中国区域)。

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

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

包装公有密钥的使用

下载内容包括您独有的公钥 Amazon Web Services 账户,也称为封装公钥

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

使用导入令牌

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

选择包装公有密钥规范

为了在导入过程中保护您的密钥材料,您可以使用从中 Amazon KMS下载的封装公钥和支持的封装算法对其进行加密。您在下载包装公有密钥和导入令牌之前选择密钥规范。所有封装密钥对都是在 Amazon KMS 硬件安全模块 (HSMs) 中生成的。私钥永远不会以纯文本HSM形式保留。

RSA包装关键规格

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

Amazon KMS 支持以下用于导入所有类型密钥材料的RSA包装密钥的关键规范,除非另有说明。

  • RSA_4096(首选)

  • RSA_3072

  • RSA_2048

    注意

    NOT支持以下组合:ECC_ NIST _P521 密钥材料、RSA _2048 公共封装密钥规范和 RSAES _ OAEP _* 包装算法。SHA

    您不能使用 NIST _ RSA 2048 ECC 公共包装密钥直接封装 _ _P521 密钥材料。使用较大的包装密钥或 RSA _ _ AES _ KEY WRAP _ SHA _* 包装算法。

SM2包装密钥规范(仅限中国地区)

Amazon KMS 支持以下用于导入非对称密钥材料的SM2包装密钥的密钥规范。

  • SM2

选择包装算法

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

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

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

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

256 位密钥 AES

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

包装算法:

RSAESOAEP_ 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

SM2PKE(仅限中国地区)

包装密钥规范:

RSA_2048

RSA_3072

RSA_4096

SM2(仅限中国地区)

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

您不能使用 RSAES _ OAEP _ SHA _* 包装算法和 _ RSA 2048 封装密钥规范来封装 ECC _ NIST _P521 密钥材料。

包装算法:

RSA_ AES _ KEY WRAP _ SHA _256

RSA_ AES _ _ KEY WRAP _ SHA _1

RSAESOAEP_ SHA _256

RSAES_ OAEP _ SHA _1

SM2PKE(仅限中国地区)

包装密钥规范:

RSA_2048

RSA_3072

RSA_4096

SM2(仅限中国地区)

非对称SM2私钥(仅限中国区域)
包装算法:

RSAESOAEP_ SHA _256

RSAES_ OAEP _ SHA _1

SM2PKE(仅限中国地区)

包装密钥规范:

RSA_2048

RSA_3072

RSA_4096

SM2(仅限中国地区)

HMAC钥匙
包装算法:

RSAESOAEP_ SHA _256

RSAES_ OAEP _ SHA _1

包装密钥规范:

RSA_2048

RSA_3072

RSA_4096

注意

中国区域不支持RSA_AES_KEY_WRAP_SHA_256RSA_AES_KEY_WRAP_SHA_1包装算法。

  • RSA_AES_KEY_WRAP_SHA_256— 一种两步混合封装算法,它将加密密钥材料与您生成的AES对称密钥相结合,然后使用下载的RSA公共包装密钥和 RSAES _ _ _ OAEP 256 包装算法AES对称密钥进行加密。SHA

    RSA_AES_KEY_WRAP_SHA_*封装RSA私钥材料需要使用封装算法,但中国地区除外,您必须使用SM2PKE包装算法。

  • RSA_AES_KEY_WRAP_SHA_1— 一种两步混合封装算法,它将加密密钥材料与您生成的AES对称密钥相结合,然后使用下载的封装AES公钥和 RSAES _ _ _ OAEP 1 RSA 包装算法对称密钥进行加密。SHA

    RSA_AES_KEY_WRAP_SHA_*封装RSA私钥材料需要使用封装算法,但中国地区除外,您必须使用SM2PKE包装算法。

  • RSAES_OAEP_SHA_256— 带有最佳非对称RSA加密填充 (OAEP) 和 SHA -256 哈希函数的加密算法。

  • RSAES_OAEP_SHA_1— 带有-SHA 1 哈希函数的最佳非对称加密填充 (OAEP) 的加密算法。RSA

  • RSAES_PKCS1_V1_5(已弃用;自 2023 年 10 月 10 日起, Amazon KMS 不支持 RSAES _ PKCS1 _V1_5 包装算法)— 填充格式的RSA加密算法在 #1 版本 1.5 中定义。PKCS

  • SM2PKE(仅限中国区域)— GM/T 0003.4-2012 OSCCA 中定义的基于椭圆曲线的加密算法。

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

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

  1. 如果您刚刚完成了创建没有密钥材料的KMS密钥的步骤,并且您正处于 “下载包装密钥和导入令牌” 页面,请跳至步骤 9

  2. 登录 Amazon Web Services Management Console 并在 https://console.aws.amazon.com/km s 处打开 Amazon Key Management Service (Amazon KMS) 控制台。

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

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

    提示

    您只能将密钥材料导入到具有外部来源的KMS密钥中(导入密钥材料)。这表示KMS密钥是在没有密钥材料的情况下创建的。要向表中添加 Origin (源) 列,请在页面右上角,选择设置图标 ( Gear or cog icon representing settings or configuration options. )。打开 Origin (源),然后选择 Confirm (确认)

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

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

    您只能将 O rigin of Ex KMS tern al(导入密钥材料)导入密钥材料。有关使用导入的KMS密钥材料创建密钥的信息,请参阅导入密钥的 Amazon KMS 密钥材料

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

    只有点值为 Extern al(导入KMS密钥材料)的密钥才会显示密钥材质选项卡。

  8. 在 “选择封装密钥规范” 中,选择KMS密钥的配置。创建此密钥后,您无法更改密钥规范。

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

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

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

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

    此文件夹包含以下文件:

    • 将公钥封装在名为的文件中WrappingPublicKey.bin

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

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

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

正在下载封装公钥和导入令牌 (Amazon KMS API)

要下载公钥和导入令牌,请使用GetParametersForImportAPI。指定将与导入的KMS密钥材料关联的密钥。此KMS密钥的 O rigin 值必须为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 编码的公钥(表示为 public key (base64 encoded) 在示例输出中),将其粘贴到新文件中,然后保存该文件。向文件提供一个描述性名称,例如 PublicKey.b64

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

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

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

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

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