本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS KMS ECDH 密钥环
重要
AWS KMS ECDH钥匙圈仅在版本 4 中可用。 for AWS Encryption SDK 的 x。 NET和版本 3。 的 x 个 AWS Encryption SDK for Java。 AWS KMS ECDH密钥环是在材质提供者库的 1.5.0 版本中引入的。
密 AWS KMS ECDH钥环使用非对称密钥协议AWS KMS keys来派生双方共享的对称包装密钥。首先,密钥环使用 Elliptic Curve Diffie-Hellman (ECDH) 密钥协议算法从发送者密钥对中的私钥和接收者的公钥中派生出共享密KMS钥。然后,密钥环使用共享密钥来派生用于保护您的数据加密密钥的共享包装密钥。 AWS Encryption SDK 使用 (KDF_CTR_HMAC_SHA384
) 派生共享封装密钥的密钥派生函数符合密钥派生NIST建议
密钥派生函数返回 64 字节的密钥材料。为确保双方使用正确的密钥材料,使用前 32 个字节作为承诺密钥, AWS Encryption SDK 使用最后 32 字节作为共享封装密钥。解密时,如果密钥环无法复制存储在邮件标题密文中的相同承诺密钥和共享包装密钥,则操作将失败。例如,如果您使用配置有 Alice 私钥和 Bob 公钥的密钥环对数据进行加密,则使用 Bob 的私钥和 Alice 的公钥配置的密钥环将复制相同的承诺密钥和共享包装密钥,并能够解密数据。如果 Bob 的公钥不是来自KMS密钥对,那么 Bob 可以创建一个 Ra w 密ECDH钥环来解密数据。
AWS KMS ECDH密钥环使用-对称密钥加密数据。AES GCM然后使用 AES-使用派生的共享包装密钥对数据密钥进行信封加密GCM。每个 AWS KMS ECDH密钥环只能有一个共享的包装密钥,但您可以在多密 AWS KMS ECDH钥环中单独或与其他密钥环一起包含多个密钥环。
AWS KMS ECDH 密钥环所需权限
AWS Encryption SDK 不需要 AWS 帐户,也不依赖于任何 AWS 服务。但是,要使用 AWS KMS ECDH密钥环,您需要一个 AWS 帐户,并在密钥环 AWS KMS keys 中拥有以下最低权限。权限因您使用的密钥协议架构而异。
-
要使用密
KmsPrivateKeyToStaticPublicKey
钥协议架构加密和解密数据,您需要在发送者的非对称KMS密钥对DeriveSharedSecret上使用 kms: GetPublicKey 和 km s:。如果您在实例化密钥环时直接提供发送者DER编码的公钥,则只需要对发送者的非对称密钥对 kms: DeriveSharedSecret 权限。KMS -
要使用密
KmsPublicKeyDiscovery
钥协议架构解密数据,您需要对指定的非对称密钥KMS对具有 kms: DeriveSharedSecret 和 kms: GetPublicKey 权限。
创建 AWS KMS ECDH 密钥环
要创建用于加密和解密数据的密 AWS KMS ECDH钥环,必须使用密钥协议架构。KmsPrivateKeyToStaticPublicKey
要使用 AWS KMS ECDH密钥协议架构初始化KmsPrivateKeyToStaticPublicKey
密钥环,请提供以下值:
-
发件人 AWS KMS key 身份证
必须标识一个非对称NIST推荐的椭圆曲线 () ECC KMS key pair,其值为。
KeyUsage
KEY_AGREEMENT
发送者的私钥用于派生共享密钥。 -
(可选)发件人的公钥
必须是经DER编码的 X.509 公钥,也称为
SubjectPublicKeyInfo
(SPKI),如 5280 中所定义。RFC该 AWS KMS GetPublicKey操作以所需的DER编码格式返回非对称KMS密钥对的公钥。
要减少密钥环 AWS KMS 拨打的次数,您可以直接提供发件人的公钥。如果没有为发件人的公钥提供任何值,则密钥环会调用 AWS KMS 以检索发送者的公钥。
-
收件人的公钥
您必须提供收件人DER编码的 X.509 公钥,也称为
SubjectPublicKeyInfo
(SPKI),如 5280 中所定义。RFC该 AWS KMS GetPublicKey操作以所需的DER编码格式返回非对称KMS密钥对的公钥。
-
曲线规格
标识指定密钥对中的椭圆曲线规范。发件人和收件人的密钥对必须具有相同的曲线规格。
有效值:
ECC_NIST_P256
、ECC_NIS_P384
、ECC_NIST_P512
-
(可选)授权令牌列表
如果您通过授权控制对KMS密钥 AWS KMS ECDH环中密钥的访问权限,则在初始化密钥环时必须提供所有必要的授权令牌。
创建 AWS KMS ECDH发现密钥环
解密时,最佳做法是指定 AWS Encryption SDK
可以使用的密钥。要遵循此最佳实践,请使用带有 AWS KMS ECDH密钥协议架构的KmsPrivateKeyToStaticPublicKey
密钥环。但是,您也可以创建 AWS KMS ECDH发现密钥环,即密钥环,该密 AWS KMS ECDH钥环可以解密任何消息,其中指定密钥对的公钥与存储在消息KMS密文中的收件人的公钥相匹配。
重要
使用密KmsPublicKeyDiscovery
钥协议架构解密消息时,无论谁拥有所有公钥,都将接受所有公钥。
要使用 AWS KMS ECDH密钥协议架构初始化KmsPublicKeyDiscovery
密钥环,请提供以下值:
-
收件人的 AWS KMS key 身份证
必须标识一个非对称NIST推荐的椭圆曲线 () ECC KMS key pair,其值为。
KeyUsage
KEY_AGREEMENT
-
曲线规格
标识接收者 ke KMS y pair 中的椭圆曲线规范。
有效值:
ECC_NIST_P256
、ECC_NIS_P384
、ECC_NIST_P512
-
(可选)授权令牌列表
如果您通过授权控制对KMS密钥 AWS KMS ECDH环中密钥的访问权限,则在初始化密钥环时必须提供所有必要的授权令牌。