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 Encryption CLI 版本 1.7.x 和 2.0.x 中发布的。但是,AWS Encryption CLI 版本 1.8.x 取代版本 1.7.x,AWS Encryption 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 Initial release. 支持终止阶段
1.7 Updates to the AWS Encryption SDK that help users of earlier versions upgrade to versions 2.0.x and later. For more information, see 版本 1.7。 x.
2.x 2.0 Updates to the AWS Encryption SDK. For more information, see 版本 2.0。 x. 公开发行 (GA)
2.2 Improvements to the message decryption process.
2.3 Adds support for AWS KMS multi-Region keys.

C# /.NET

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

主要版本 详细信息 SDK 主要版本生命周期阶段
3.x 3.0 Initial release.

正式发布(GA)

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

4.x 4.0 Adds support for the AWS KMS Hierarchical keyring, the required encryption context CMM, and asymmetric RSA AWS KMS keyrings. 公开发行 (GA)

命令行界面 (CLI)

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

主要版本 详细信息 SDK 主要版本生命周期阶段
1.x 1.0 Initial release. 支持终止阶段
1.7 Updates to the AWS Encryption SDK that help users of earlier versions upgrade to versions 2.0.x and later. For more information, see 版本 1.7。 x.
2.x 2.0 Updates to the AWS Encryption SDK. For more information, see 版本 2.0。 x. 支持终止阶段
2.1

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

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

2.2 Improvements to the message decryption process.
3.x 3.0 Adds support for AWS KMS multi-Region keys. 支持终止阶段
4.x 4.0 The AWS Encryption CLI no longer supports Python 2 or Python 3.4. As of major version 4.x of the AWS Encryption CLI, only Python 3.5 or later is supported. 公开发行 (GA)
4.1 The AWS Encryption CLI no longer supports Python 3.5. As of version 4.1.x of the AWS Encryption CLI, only Python 3.6 or later is supported.
4.2 The AWS Encryption CLI no longer supports Python 3.6. As of version 4.2.x of the AWS Encryption CLI, only Python 3.7 or later is supported.

Java

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

主要版本 详细信息 SDK 主要版本生命周期阶段
1.x 1.0 Initial release. 支持终止阶段
1.3 Adds support for cryptographic materials manager and data key caching. Moved to deterministic IV generation.
1.6.1

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

1.7 Updates to the AWS Encryption SDK that help users of earlier versions upgrade to versions 2.0.x and later. For more information, see 版本 1.7。 x.
2.x 2.0 Updates to the AWS Encryption SDK. For more information, see 版本 2.0。 x.

正式发布(GA)

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

2.2 Improvements to the message decryption process.
2.3 Adds support for AWS KMS multi-Region keys.
2.4 Adds support for 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 Initial release. 支持终止阶段
1.7 Updates to the AWS Encryption SDK that help users of earlier versions upgrade to versions 2.0.x and later. For more information, see 版本 1.7。 x.
2.x 2.0 Updates to the AWS Encryption SDK. For more information, see 版本 2.0。 x. 支持终止阶段
2.2 Improvements to the message decryption process.
2.3 Adds support for AWS KMS multi-Region keys.
3.x 3.0 Removes CI coverage for Node 10. Upgrades dependencies to no longer support Node 8 and Node 10.

Maintenance

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

4.x 4.0 Requires version 3 of the AWS Encryption SDK for JavaScript's kms-客户端 to use the AWS KMS keyring. 公开发行 (GA)

Python

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

主要版本 详细信息 SDK 主要版本生命周期阶段
1.x 1.0 Initial release. 支持终止阶段
1.3 Adds support for cryptographic materials manager and data key caching. Moved to deterministic IV generation.
1.7 Updates to the AWS Encryption SDK that help users of earlier versions upgrade to versions 2.0.x and later. For more information, see 版本 1.7。 x.
2.x 2.0 Updates to the AWS Encryption SDK. For more information, see 版本 2.0。 x. 支持终止阶段
2.2 Improvements to the message decryption process.
2.3 Adds support for AWS KMS multi-Region keys.
3.x 3.0 The AWS Encryption SDK for Python no longer supports Python 2 or Python 3.4. As of major version 3.x of the AWS Encryption SDK for Python, only Python 3.5 or later is supported. 公开发行 (GA)

版本详细信息

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

低于 1.7.x 的版本

注意

全部 1. x。 的 x 个版本AWS Encryption SDK处于该end-of-support阶段。只要可行,请尽快升级到适用于您的编程语言的最新 AWS Encryption SDK 可用版本。从 1.7.x 之前的 AWS Encryption SDK 版本升级,必须先升级到 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 账户。账户筛选是可选的,但这是我们推荐的最佳实践

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

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

AWS KMS 密钥环更新(可选)

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

AWS KMS 密钥环的构造函数没有更改。在严格模式下,标准密 AWS KMS 钥环的行为类似于主密钥提供程序。AWS KMS Discovery 密钥环是在发现模式下明确创建的。

将密钥 ID 传递给 AWS KMS Decrypt

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

要解密使用对称加密 KMS 密钥所加密的加密文字,不需要指定 AWS KMS key 的密钥 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 PythonAWS Encryption SDK for JavaScript、和AWS加密 CLI 中的 x end-of-support 处于阶段

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

AWS KMS 主密钥提供程序

原始 AWS KMS 主密钥提供程序构造函数已在版本 1.7.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 PythonAWS 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 PythonAWS Encryption SDK for JavaScript、和AWS加密 CLI 中的 x end-of-support 处于阶段

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