密钥环兼容性 - AWS Encryption SDK

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

密钥环兼容性

尽管不同的语言实现 AWS Encryption SDK 有一些架构差异,但它们完全兼容,但受语言限制的约束。您可以使用一种语言实施加密数据,用其他语言实施进行解密。不过,您必须使用相同或相应的包装密钥加密和解密数据密钥。有关语言限制的信息,请参阅有关每种语言实现的主题,例如 AWS Encryption SDK for JavaScript 主题AWS Encryption SDK for JavaScript的兼容性中的主题。

对加密密钥环的不同要求

在除之外的 AWS Encryption SDK 语言实现中 AWS Encryption SDK for C,所有封装在加密密钥环(或多密钥环)或主密钥提供程序中的密钥都必须能够加密数据密钥。如有任何包装密钥无法加密,此加密方法将失败。因此,调用方必须拥有密钥环中所有密钥的所需权限。如果您单独或在多重密钥环中使用 Discovery 密钥环加密数据,加密操作将失败。

唯一的例外是 AWS Encryption SDK for C,加密操作会忽略标准发现密钥环,但是如果您单独或在多密钥环中指定多区域发现密钥环,则会失败。

兼容的密钥环和主密钥提供程序

下表显示了哪些主密钥和主密钥提供程序与它们提供的密钥环兼容。 AWS Encryption SDK 有关语言实施的主题中解释了由于语言约束而导致的任何轻微不兼容情况。

密钥环: 主密钥提供程序:
AWS KMS 钥匙圈

KMSMasterKey(Java)

KMSMasterKeyProvider(Java)

KMSMasterKey(Python)

KMSMasterKeyProvider(Python)

注意

AWS Encryption SDK for Python 和 AWS Encryption SDK for Java 不包括等同于AWS KMS 区域发现密钥环的主密钥或主密钥提供程序。

AWS KMS 分层钥匙圈

由以下编程语言和版本支持:

  • 版本 3。 的 x AWS Encryption SDK for Java

  • 版本 4。 for AWS Encryption SDK 的 x。 NET

  • 版本 4。 的 x AWS Encryption SDK for Python,当与可选的加密材料提供者库 (MPL) 依赖项一起使用时。

AWS KMS ECDH 密钥环

由以下编程语言和版本支持:

  • 版本 3。 的 x AWS Encryption SDK for Java

  • 版本 4。 for AWS Encryption SDK 的 x。 NET

  • 版本 4。 的 x AWS Encryption SDK for Python,当与可选的加密材料提供者库 (MPL) 依赖项一起使用时。

未加工的AES钥匙圈

与对称加密密钥一起使用时:

JceMasterKey(Java)

RawMasterKey(Python)

未加工的RSA钥匙圈

与非对称加密密钥一起使用时:

JceMasterKey(Java)

RawMasterKey(Python)

注意

Raw RSA 密钥环不支持非对称KMS密钥。如果要使用非对称RSAKMS密钥,请使用版本 4。 for AWS Encryption SDK 的 x。 NET支持使用对称加密 (SYMMETRIC_DEFAULT) 或非对称的密 AWS KMS 钥环。RSA AWS KMS keys

未加工的ECDH钥匙圈

由以下编程语言和版本支持:

  • 版本 3。 的 x AWS Encryption SDK for Java

  • 版本 4。 for AWS Encryption SDK 的 x。 NET

  • 版本 4。 的 x AWS Encryption SDK for Python,当与可选的加密材料提供者库 (MPL) 依赖项一起使用时。