的版本 AWS Encryption SDK - AWS Encryption SDK

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

的版本 AWS Encryption SDK

AWS Encryption SDK 语言实现使用语义版本控制,以便您更轻松地识别每个版本中变化的幅度。主要版本编号的更改,例如 1.x.x 更改为 2.x.x,表示一项重大更改,可能需要更改代码和计划部署。新版本中的重大更改可能不会影响每个用例,请查看发行说明以了解您是否受到影响。次要版本的更改,例如 x.1.x 更改为 x.2.x,始终向后兼容,但可能包含已弃用的元素。

只要有可能,请使用所选编程语言 AWS Encryption SDK 中的最新版本的。每个版本的维护和支持策略因编程语言实现而异。有关首选编程语言支持的版本的详细信息,请参阅其GitHub存储库中的SUPPORT_POLICY.rst文件。

当升级包含需要特殊配置以避免加密或解密错误的新功能时,我们会提供中间版本和详细的使用说明。例如,版本 1.7.x 和 1.8.x 被设计为过渡版本,可帮助您从 1.7.x 之前的版本升级到版本 2.0.x 及更高版本。有关更多信息,请参阅 迁移 AWS Encryption SDK

注意

版本号中的 x 表示主要版本和次要版本的任何补丁。例如,版本 1.7.x 表示所有以 1.7 开头的版本,包括 1.7.1 和 1.7.9。

新的安全功能最初是在 AWS 加密 CLI 版本 1.7 中发布的。 x 和 2.0。 x。但是, AWS 加密 CLI 版本为 1.8。 x 取代了 1.7 版。 x 和 AWS 加密 CLI 2.1。 x 取代 2.0。 x。有关详细信息,请参阅aws-encryption-sdk-cli存储库中的相关安全公告 GitHub。

下表概述了每种编程语言支持的版本之间的主要区别。 AWS Encryption SDK

C

有关所有更改的详细说明,请参阅存储库中的 changelog.md。aws-encryption-sdk-c GitHub

主要版本 详细信息 SDK 主要版本生命周期阶段
1.x 1.0 首次发布。 支持终止阶段
1.7 的 AWS Encryption SDK 更新可帮助早期版本的用户升级到 2.0 版。 x 及更高版本。有关更多信息,请参阅版本 1.7。 x
2.x 2.0 的更新 AWS Encryption SDK. 有关更多信息,请参阅 2.0 版。 x 正式发布(GA)
2.2 消息解密过程的改进。
2.3 增加了对 AWS KMS 多区域密钥的支持。

C# /.NET

有关所有更改的详细说明,请参阅存储库中的 changelog.md。aws-encryption-sdk-net GitHub

主要版本 详细信息 SDK 主要版本生命周期阶段
3.x 3.0 首次发布。

正式发布(GA)

AWS Encryption SDK 适用于.NET 的 3.x 版本将于 2024 年 5 月 13 日进入维护模式。

4.x 4.0 增加了对 AWS KMS 分层密钥环、所需的加密上下文 CMM 和非对称 RSA 密钥环的支持。 AWS KMS 正式发布(GA)

命令行界面 (CLI)

有关所有更改的详细说明,请参阅AWS Encryption CLI 的版本以及存储库中的 changelog.rst。aws-encryption-sdk-cli GitHub

主要版本 详细信息 SDK 主要版本生命周期阶段
1.x 1.0 首次发布。 支持终止阶段
1.7 的 AWS Encryption SDK 更新可帮助早期版本的用户升级到 2.0 版。 x 及更高版本。有关更多信息,请参阅版本 1.7。 x
2.x 2.0 的更新 AWS Encryption SDK. 有关更多信息,请参阅 2.0 版。 x 支持终止阶段
2.1

移除--discovery参数并将其替换为--wrapping-keys参数的discovery属性。

AWS 加密 CLI 的 2.1.0 版本等同于其他编程语言中的 2.0 版。

2.2 消息解密过程的改进。
3.x 3.0 增加了对 AWS KMS 多区域密钥的支持。 支持终止阶段
4.x 4.0 AWS 加密 CLI 不再支持 Python 2 或 Python 3.4。从主版本4开始。 x 在 AWS 加密 CLI 中,仅支持 Python 3.5 或更高版本。 正式发布(GA)
4.1 AWS 加密 CLI 不再支持 Python 3.5。从 4.1 版本开始。 x 在 AWS 加密 CLI 中,仅支持 Python 3.6 或更高版本。
4.2 AWS 加密 CLI 不再支持 Python 3.6。从版本 4.2 开始。 x 在 AWS 加密 CLI 中,仅支持 Python 3.7 或更高版本。

Java

有关所有更改的详细说明,请参阅存储库中的 changelog.rst。aws-encryption-sdk-java GitHub

主要版本 详细信息 SDK 主要版本生命周期阶段
1.x 1.0 首次发布。 支持终止阶段
1.3 增加了对加密材料管理器和数据密钥缓存的支持。移至确定性 IV 代。
1.6.1

弃用AwsCrypto.encryptString()和并将其替换为AwsCrypto.decryptString()和。AwsCrypto.encryptData() AwsCrypto.decryptData()

1.7 的 AWS Encryption SDK 更新可帮助早期版本的用户升级到 2.0 版。 x 及更高版本。有关更多信息,请参阅版本 1.7。 x
2.x 2.0 的更新 AWS Encryption SDK. 有关更多信息,请参阅 2.0 版。 x

正式发布(GA)

的 2.x 版本 AWS Encryption SDK for Java 将于 2024 年进入维护模式。

2.2 消息解密过程的改进。
2.3 增加了对 AWS KMS 多区域密钥的支持。
2.4 添加了对的支持 AWS SDK for Java 2.x。
3.x 3.0

AWS Encryption SDK for Java 与材料提供者库集成。

增加了对对称和非对称 RSA AWS KMS 密钥环、 AWS KMS 分层密钥环、原始 AES 密钥环、原始 RSA 密钥环、多密钥环和所需的加密上下文 CMM 的支持。

正式发布(GA)

JavaScript

有关所有更改的详细说明,请参阅存储库中的 changelog.md。aws-encryption-sdk-javascript GitHub

主要版本 详细信息 SDK 主要版本生命周期阶段
1.x 1.0 首次发布。 支持终止阶段
1.7 的 AWS Encryption SDK 更新可帮助早期版本的用户升级到 2.0 版。 x 及更高版本。有关更多信息,请参阅版本 1.7。 x
2.x 2.0 的更新 AWS Encryption SDK. 有关更多信息,请参阅 2.0 版。 x 支持终止阶段
2.2 消息解密过程的改进。
2.3 增加了对 AWS KMS 多区域密钥的支持。
3.x 3.0 移除节点 10 的 CI 覆盖范围。升级依赖关系以不再支持节点 8 和节点 10。

Maintenance

对版本 3.x 的支持 AWS Encryption SDK for JavaScript 将于 2024 年 1 月 17 日结束。

4.x 4.0 需要版本 3 kms-client 才能使用 AWS KMS 密钥环。 AWS Encryption SDK for JavaScript 正式发布(GA)

Python

有关所有更改的详细说明,请参阅存储库中的 changelog.rst。aws-encryption-sdk-python GitHub

主要版本 详细信息 SDK 主要版本生命周期阶段
1.x 1.0 首次发布。 支持终止阶段
1.3 增加了对加密材料管理器和数据密钥缓存的支持。移至确定性 IV 代。
1.7 的 AWS Encryption SDK 更新可帮助早期版本的用户升级到 2.0 版。 x 及更高版本。有关更多信息,请参阅版本 1.7。 x
2.x 2.0 的更新 AWS Encryption SDK. 有关更多信息,请参阅 2.0 版。 x 支持终止阶段
2.2 消息解密过程的改进。
2.3 增加了对 AWS KMS 多区域密钥的支持。
3.x 3.0 AWS Encryption SDK for Python 不再支持 Python 2 或 Python 3.4。从主版本3开始。 其中 x AWS Encryption SDK for Python,仅支持 Python 3.5 或更高版本。 正式发布(GA)

版本详细信息

以下列表描述了支持的 AWS Encryption SDK版本之间的主要区别。

低于 1.7.x 的版本

注意

全部 1. x。 的 x 个版本 AWS Encryption SDK 处于该end-of-support阶段。只要可行,请尽快升级到 AWS Encryption SDK 适用于您的编程语言的最新可用版本。从 1.7 之前的 AWS Encryption SDK 版本升级。 x,必须先升级到 1.7。 x。有关更多信息,请参阅 迁移 AWS Encryption SDK

1.7 AWS Encryption SDK 之前的版本。 x 提供重要的安全功能,包括在 Galois/Counter 模式 (AES-GCM) 下使用高级加密标准算法进行加密、基于 HMAC 的 extract-and-expand 密钥派生功能 (HKDF)、签名和 256 位加密密钥。但是,这些版本不支持我们推荐的最佳实践,包括密钥承诺

版本 1.7.x

注意

全部 1. x。 的 x 个版本 AWS Encryption SDK 处于该end-of-support阶段

版本 1.7。 x 旨在帮助早期版本的用户升级 AWS Encryption SDK 到 2.0 版。 x 及更高版本。如果您不熟悉 AWS Encryption SDK,可以跳过此版本,从您的编程语言的最新可用版本开始。

版本 1.7.x 完全向后兼容;未引入任何重大更改或更改 AWS Encryption SDK的行为。该版本还向前兼容;允许您更新代码,以便与版本 2.0.x 兼容。其中包含新功能,但并未完全启用。此外,该版本需要配置值,以防止您在准备就绪之前立即采用所有新功能。

版本 1.7.x 包含以下更改:

AWS KMS 主密钥提供程序更新(必需)

版本 1.7。 x 向 AWS Encryption SDK for Java 和引入了新的构造函数 AWS Encryption SDK for Python ,这些构造函数在严格模式或发现模式下显式创建 AWS KMS 主密钥提供程序。此版本对 AWS Encryption SDK 命令行界面 (CLI) 添加了类似的更改。有关更多信息,请参阅 更新 AWS KMS 主密钥提供程序

  • 严格模式下, AWS KMS 主密钥提供程序需要包装密钥列表,这些提供程序仅使用您指定的包装密钥进行加密和解密。这是一种 AWS Encryption SDK 最佳实践,可确保您使用的是要使用的包装密钥。

  • 发现模式下, AWS KMS 主密钥提供程序不使用任何包装密钥。您不能使用这些提供程序进行加密。在解密时,这些提供程序可以使用任何包装密钥解密加密的数据密钥。但是,您可以将用于解密的包装密钥限制为特定的 AWS 账户。账户筛选是可选的,但这是我们推荐的最佳实践

在 1.7 版本中,创建早期版本 AWS KMS 的主密钥提供程序的构造函数已被弃用。 x 并在版本 2.0 中移除。 x。这些构造函数实例化主密钥提供程序,这些提供程序使用您指定的包装密钥进行加密。但是,这些提供程序使用加密数据密钥的包装密钥来解密已加密的数据密钥,而不考虑指定的包装密钥。用户可能会无意中使用他们不打算使用的包装密钥解密邮件,包括在其他 AWS KMS keys 地区 AWS 账户 和区域。

AWS KMS 主密钥的构造函数没有变化。加密和解密时, AWS KMS 主密钥仅使用您指定的密钥。 AWS KMS key

AWS KMS 密钥环更新(可选)

版本 1.7。 x 在 AWS Encryption SDK for C 和 AWS Encryption SDK for JavaScript 实现中添加了一个新的过滤器,将AWS KMS 发现密钥环限制为特定 AWS 账户。这个新的账户筛选条件是可选的,但这是我们推荐的最佳实践。有关更多信息,请参阅 更新 AWS KMS 密钥环

AWS KMS 钥匙圈的构造函数没有变化。在严格模式下,标准密 AWS KMS 钥环的行为类似于主密钥提供程序。 AWS KMS 发现密钥环是在发现模式下显式创建的。

将密钥 ID 传递给 AWS KMS 解密

从 1.7 版本开始。 x,解密加密的数据密钥时, AWS Encryption SDK 始终 AWS KMS key 在调用 D AWS KMS ec rypt 操作时指定。 AWS KMS key 从每个加密数据密钥中的元数据中 AWS Encryption SDK 获取的密钥 ID 值。此功能不需要任何代码更改。

解密使用对 AWS KMS key 称加密 KMS 密钥加密的密文不需要指定密钥 ID,但这是最佳实践。AWS KMS与在密钥提供程序中指定包装密钥一样,这种做法可确保 AWS KMS 仅使用您打算使用的包装密钥进行解密。

使用密钥承诺解密加密文字

版本 1.7.x 可以解密使用或不使用密钥承诺加密的加密文字。但是,无法使用密钥承诺加密加密文字。此属性允许您在遇到任何此类加密文字之前,完全部署能够解密使用密钥承诺加密的加密文字的应用程序。由于此版本可解密未经密钥承诺而加密的消息,您无需重新加密任何加密文字。

要实现此行为,请使用版本 1.7。 x 包括新的承诺策略配置设置,该设置决定了是否 AWS Encryption SDK 可以使用密钥承诺进行加密或解密。在版本 1.7.x 中,ForbidEncryptAllowDecrypt 是承诺策略的唯一有效值,用于所有加密和解密操作。此值可防止 AWS Encryption SDK 使用包含密钥承诺的新算法套件进行加密。它允许使用和 AWS Encryption SDK 不使用密钥承诺来解密密文。

尽管版本 1.7.x 中只有一个有效的承诺策略值,但我们要求您在使用本版本中引入的新 API 时可以明确设置此值。明确设置该值可防止您的承诺策略在升级到版本 2.1.x 时自动更改为 require-encrypt-require-decrypt。相反,您可以分阶段迁移承诺策略

带有密钥承诺的算法套件

版本 1.7.x 包括两个支持密钥承诺的新算法套件。一个包括签名;另一个不包括。与之前支持的算法套件一样,这两个新的算法套件都包括使用AES-GCM进行加密、256位加密密钥和基于HMAC的密钥派生函数 (H extract-and-expand KDF)。

但是,用于加密的默认算法套件不会更改。这些算法套件已添加至版本 1.7.x,让您的应用程序做好准备,以便在版本 2.0.x 及更高版本中使用这些套件。

CMM 实现更改

版本 1.7.x 引入了对默认加密材料管理器(CMM)界面的更改,以支持密钥承诺。此更改仅在您编写了自定义 CMM 时才会影响到您。有关详细信息,请参阅您的编程语言的 API 文档或 GitHub 存储库。

版本 2.0.x

版本 2.0。 x 支持中提供的新安全功能 AWS Encryption SDK,包括指定的包装密钥和密钥承诺。为支持这些功能,版本 2.0.x 包括对 AWS Encryption SDK早期版本的重大更改。您可以通过部署版本 1.7.x 为这些更改做好准备。版本 2.0.x 包含版本 1.7.x 中引入的所有新功能,有以下补充和更改。

注意

版本 2。 x。 AWS Encryption SDK for Python AWS Encryption SDK for JavaScript、和 AWS 加密 CLI 中的 x 处于该end-of-support阶段

有关以您的首选编程语言支持和维护此 AWS Encryption SDK 版本的信息,请参阅其GitHub存储库中的SUPPORT_POLICY.rst文件。

AWS KMS 主密钥提供者

1.7 版本中不推荐使用的原始 AWS KMS 主密钥提供程序构造函数。 x 已在 2.0 版本中移除。 x。您必须在严格模式或发现模式下明确构造 AWS KMS 主密钥提供程序。

使用密钥承诺加密和解密加密文字

版本 2.0.x 可以使用或不使用密钥承诺来加密和解密加密文字。其行为由承诺策略的设置决定。默认情况下,始终使用密钥承诺进行加密,并且仅解密使用密钥承诺加密的加密文字。除非您更改承诺策略,否则 AWS Encryption SDK 不会解密由任何 AWS Encryption SDK早期版本(包括版本 1.7.x)加密的加密文字。

重要

默认情况下,版本 2.0.x 不会解密任何不使用密钥承诺加密的加密文字。如果您的应用程序可能遇到不使用密钥承诺加密的加密文字,请使用 AllowDecrypt 设置承诺策略值。

在版本 2.0.x 中,承诺策略设置有三个有效值:

  • ForbidEncryptAllowDecrypt – AWS Encryption SDK 无法使用密钥承诺进行加密。可以解密使用或不使用密钥承诺加密的加密文字。

  • RequireEncryptAllowDecrypt – AWS Encryption SDK 必须使用密钥承诺进行加密。可以解密使用或不使用密钥承诺加密的加密文字。

  • RequireEncryptRequireDecrypt(默认)- AWS Encryption SDK 必须使用密钥承诺进行加密。仅使用密钥承诺解密加密文字。

如果您要从的早期版本迁移 AWS Encryption SDK 到版本 2.0。 x,将承诺策略设置为一个值,该值可确保您可以解密应用程序可能遇到的所有现有密文。随着时间的推移,您可能会调整此设置。

版本 2.2.x

增加了对数字签名和限制加密数据密钥的支持。

注意

版本 2。 x。 AWS Encryption SDK for Python AWS Encryption SDK for JavaScript、和 AWS 加密 CLI 中的 x 处于该end-of-support阶段

有关以您的首选编程语言支持和维护此 AWS Encryption SDK 版本的信息,请参阅其GitHub存储库中的SUPPORT_POLICY.rst文件。

数字签名

为了改进解密时对数字签名的处理, AWS Encryption SDK 包括以下功能:

  • 非串流模式 – 仅在处理完所有输入后才返回明文,包括验证数字签名(如果存在)。此功能可防止您在验证数字签名之前使用明文。每当您解密使用数字签名(默认算法套件)加密的数据时,请使用此功能。例如,由于 AWS Encryption CLI 始终以流模式处理数据,因此在使用数字签名解密密文时使用该- -buffer参数。

  • 未签名的解密模式 – 此功能仅解密未签名的加密文字。如果解密遇到加密文字中的数字签名,则操作将失败。使用此功能可以避免在验证签名之前无意中处理已签名邮件中的明文。

限制加密数据密钥

您可以在加密消息中限制加密数据密钥的数量。此功能可以帮助您在加密时检测配置错误的主密钥提供程序或密钥环,或者在解密时识别恶意加密文字。

解密来自不可信来源的消息时,应限制加密数据密钥。这样可以防止对您的密钥基础设施进行不必要、昂贵、可能详尽的调用。

版本 2.3.x

增加了对 AWS KMS 多区域密钥的支持。有关更多信息,请参阅 使用多区域 AWS KMS keys

注意

AWS 加密 CLI 支持从 3.0 版开始的多区域密钥。 x

版本 2。 x。 AWS Encryption SDK for Python AWS Encryption SDK for JavaScript、和 AWS 加密 CLI 中的 x 处于该end-of-support阶段

有关以您的首选编程语言支持和维护此 AWS Encryption SDK 版本的信息,请参阅其GitHub存储库中的SUPPORT_POLICY.rst文件。