本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建 KMS 密钥
您可以 AWS KMS keys 在 AWS Management Console、或中使用CreateKey操作或AWS::KMS::Key AWS CloudFormation 资源进行创建。在此过程中,您要设置 KMS 密钥的密钥政策,但您可以随时更改该政策。您还可以选择以下值来定义您创建的 KMS 密钥的类型。创建 KMS 密钥后,这些属性无法更改。
- KMS 密钥类型
-
密钥类型是一个决定创建什么类型的加密密钥的属性。 AWS KMS 提供了三种保护数据的关键类型:
-
高级加密标准(AES)对称密钥
在 AES 的伽罗瓦计数器模式(GCM)模式下使用的 256 位密钥,用于对大小小于 4KB 的数据进行经过身份验证的加密/解密。这是最常见的密钥类型,用于保护应用程序中使用的其他数据加密密钥 AWS 服务 ,从而代表您加密您的数据。
-
RSA、椭圆曲线或(仅限 SM2 中国区域)非对称密钥
这些密钥提供各种大小,并支持多种算法。根据算法选择,其可能用于加密和解密、签名和验证或派生共享密钥操作。
-
用于执行 HMAC 散列消息认证码操作的对称密钥
这些密钥是用于签名和验证操作的 256 位密钥。
无法以明文形式从服务中导出 KMS 密钥。它们由服务使用的硬件安全模块 (HSMs) 生成,并且只能在其中使用。这是 AWS KMS 用于确保密钥不被泄露的基本安全属性。
-
- 密钥用法
-
密钥用法属性决定密钥支持的加密操作。KMS 密钥的密钥用法可以是
ENCRYPT_DECRYPT
、SIGN_VERIFY
、GENERATE_VERIFY_MAC
或KEY_AGREEMENT
。每个 KMS 密钥都只能有一个密钥用法。将 KMS 密钥用于多种操作类型,会使两种操作的产物更容易受到攻击。 - 密钥规范
-
密钥规范 是一种属性,用于表示密钥的加密配置。密钥规范的含义因密钥类型而异。
对于 KMS 密钥,密钥规范将确定 KMS 密钥是对称密钥还是非对称密钥。它还可确定其密钥材料类型,及其支持的算法。
默认密钥规范 SYMMETRIC_DEFAULT 表示一组 256 位的对称加密密钥。有关所有支持的密钥规范的详细说明,请参阅 密钥规范引用。
- 密钥材料源
-
密钥材料源是标识 KMS 密钥中密钥材料的来源的 KMS 密钥属性。您在创建 KMS 密钥时选择密钥材料源,并且无法更改。密钥材料的来源会影响 KMS 密钥的安全性、耐久性、可用性、延迟和吞吐量特性。
每个 KMS 密钥的元数据中都包含对其密钥材料的引用。对称加密 KMS 密钥的密钥材料源可能会有所不同。您可以使用 AWS KMS 生成的密钥材料、在自定义密钥存储中生成的密钥材料,或者导入自己的密钥材料。
默认情况下,每个 KMS 密钥都具有唯一的密钥材料。但是,您可以使用相同的密钥材料创建一组多区域密钥。
KMS 密钥可以具有以下密钥材料来源值之一:
AWS_KMS
、EXTERNAL
(导入的密钥材料)、AWS_CLOUDHSM
(密钥存储中的 KMS AWS CloudHSM 密钥)或EXTERNAL_KEY_STORE
(外部密钥存储中的 KMS 密钥)。
主题
创建 KMS 密钥的权限
要在控制台中或使用创建 KMS 密钥 APIs,您必须在 IAM 策略中拥有以下权限。在可能的情况下,使用条件键来限制权限。例如,您可以在 IAM 策略中使用 kms: KeySpec 条件密钥来允许委托人仅创建对称加密密钥。
有关创建密钥的委托人的 IAM policy 的示例,请参阅 允许用户创建 KMS 密钥。
注意
请谨慎授予委托人管理标签和别名的权限。更改标签或别名可以允许或拒绝对客户托管密钥的权限。有关详细信息,请参阅ABAC for AWS KMS。
-
km CreateKey s: 为必填项。
-
km CreateAlias s: 需要在控制台中创建 KMS 密钥,其中每个新的 KMS 密钥都需要一个别名。
-
km TagResource s: 需要在创建 KMS 密钥时添加标签。
-
CreateServiceLinkedRolei@@ am: 是创建多区域主密钥所必需的。有关详细信息,请参阅控制对多区域密钥的访问。
创建 KMS 密钥不需要 kms: PutKeyPolicy 权限。kms:CreateKey
权限包括设置初始密钥策略的权限。但是,您必须在创建 KMS 密钥时将此权限添加到密钥策略中,以确保您可以控制对 KMS 密钥的访问。另一种方法是使用BypassLockoutSafetyCheck参数,但不建议这样做。
KMS 密钥属于创建密钥的 AWS 账户。创建 KMS 密钥的 IAM 用户不会被视为密钥的拥有者,且他们不会自动获得使用或管理自己所创建 KMS 密钥的权限。与任何其他主体一样,密钥创建者需要通过密钥策略、IAM policy 或授权获得权限。但是,拥有 kms:CreateKey
权限的主体可以设置初始密钥策略,并授予自己使用或管理密钥的权限。
选择要创建的 KMS 密钥的类型
创建的 KMS 密钥类型在很大程度上取决于计划使用 KMS 密钥的方式,以及安全要求和授权要求。KMS 密钥的密钥类型和密钥用法决定了该密钥可以执行的加密操作。每个 KMS 密钥只有一个密钥用法。将 KMS 密钥用于多种操作类型,会使所有操作的产物更容易受到攻击。
要允许委托人仅针对特定的密钥使用创建 KMS 密钥,请使用 k ms: KeyUsage 条件密钥。还可以使用 kms:KeyUsage
条件键,允许委托人根据 KMS 密钥的密钥用法对其调用 API 操作。例如,可以允许仅当 KMS 密钥的密钥用法为 SIGN_VERIFY 时禁用 KMS 密钥的权限。
请根据使用案例,遵照以下指南确定所需的 KMS 密钥类型。
- 加密和解密数据
-
对于需要加密和解密数据的大多数使用案例,使用对称 KMS 密钥。 AWS KMS 使用的对称加密算法快速、高效,并可确保数据的机密性和真实性。它支持具有附加身份验证数据 (AAD) 的身份验证加密,这些数据定义为加密上下文。这种类型的 KMS 密钥要求加密数据的发送者和接收者都具有有效的通话 AWS 凭证 AWS KMS。
如果您的用例要求无法呼叫的用户在外部 AWS 进行加密 AWS KMS,那么非对称 KMS 密钥是一个不错的选择。您可以分发非对称 KMS 密钥的公有密钥,以允许这些用户对数据进行加密。需要解密该数据的应用程序,可以在 AWS KMS内部使用非对称 KMS 密钥的私有密钥。
- 签署消息并验证签名
-
要签署消息并验证签名,必须使用非对称 KMS 密钥。您可以将 KMS 密钥与代表 RSA 密钥对、椭圆曲线 (ECC) 密钥对或密钥对(仅限中国区域)的 SM2 密钥规范一起使用。选择哪种密钥规范由想要使用的签名算法决定。推荐使用 ECC 密钥对支持的 ECDSA 签名算法,而不是 RSA 签名算法。但是,您可能需要使用特定的密钥规范和签名算法来支持在外部验证签名的用户 AWS。
- 使用非对称密钥对加密
-
要使用非对称密钥对加密数据,必须使用具有 RSA 密钥规范或密钥规范的非对称 KMS 密SM2 钥(仅限中国区域)。要使用 KMS 密钥对的公有密钥为 AWS KMS 中的数据进行加密,请使用 Encrypt 操作。您也可以下载公钥并与需要在外部加密数据的各方共享 AWS KMS。
下载非对称 KMS 密钥的公有密钥后,可以在 AWS KMS外部使用该密钥。但它不再受保护 KMS 密钥的安全控制措施的约束 AWS KMS。例如,您不能使用 AWS KMS 密钥策略或授权来控制公钥的使用。您也无法控制密钥是否仅用于使用支持的加密算法进行加密和解密。 AWS KMS 有关更多详细信息,请参阅下载公有密钥的特殊注意事项。
要解密使用外部公钥加密的数据,请调用 Dec rypt 操作。 AWS KMS如果使用
SIGN_VERIFY
的密钥用法通过 KMS 密钥中的公有密钥对数据进行加密,则Decrypt
操作会失败。如果使用 AWS KMS 不支持您选择的密钥规范的算法对其进行加密,它也会失败。有关密钥规范和支持算法的更多信息,请参阅 密钥规范引用。为避免这些错误,任何在外部使用公钥的人 AWS KMS 都必须存储密钥配置。 AWS KMS 控制台和GetPublicKey响应提供了共享公钥时必须包含的信息。
- 派生共享密钥
-
要派生共享密钥,请使用带有 NIST 推荐的椭圆曲线的 KMS 密钥或(仅限SM2中国地区)密钥材料。 AWS KMS 使用椭圆曲线密码学辅助因子 Diffie-Hellman Priman Primitive (ECDH) 通过从两个对等体的椭圆曲线公私钥对中得出共享
密钥来建立密钥协议。您可以使用 DeriveSharedSecret操作返回的原始共享密钥来派生对称密钥,该密钥可以加密和解密在双方之间发送的数据,或者生成和验证。 HMACs AWS KMS 建议您在使用原始共享密钥派生对称密钥时遵循 NIST 关于 密钥派生的建议。 - 生成并验证 HMAC 代码
-
要生成和验证散列消息认证码,请使用 HMAC 密钥。在中创建 HMAC 密钥时 AWS KMS, AWS KMS 会创建和保护您的密钥材料,并确保对密钥使用正确的 MAC 算法。HMAC 代码也可以用作伪随机数,在某些情况下用于对称签名和令牌化。
HMAC KMS 密钥是对称密钥。在 AWS KMS 控制台中创建 HMAC KMS 密钥时,选择
Symmetric
密钥类型。 - 与 AWS 服务一起使用
-
要创建 KMS 密钥以与集成的AWS 服务一起使用 AWS KMS,请查阅该服务的文档。 AWS 加密数据的服务需要对称加密 KMS 密钥。
除上述注意事项外,KMS 密钥加密操作的密钥规范不同,其价格和请求限额也不同。有关 AWS KMS
定价的信息,请参阅 AWS Key Management Service 定价