的版本 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

如需所有變更的詳細描述,請參閱的儲存庫中的變更記錄檔 .md。aws-encryption-sdk-c GitHub

主要版本 詳細資訊 SDK 主要版本生命週期階段
1. 1.0 初始版本。 終止 Support 階段
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#/.

如需所有變更的詳細描述,請參閱的儲存庫中的變更記錄檔 .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 和非對稱 R AWS KMS SA 金鑰圈的支援。 一般可用性 (GA)

命令 CLI 介面

如需所有變更的詳細描述,請參閱的的版本AWS加密 CLI和儲存庫中的變更記錄檔 .rstaws-encryption-sdk-cli GitHub

主要版本 詳細資訊 SDK 主要版本生命週期階段
1. 1.0 初始版本。 終止 Support 階段
1.7 AWS Encryption SDK 可協助舊版使用者升級至 2.0 版的更新。 x 及更新版本。如需詳細資訊,請參閱版本 1.7。 x.
2.x 2.0 更新到 AWS Encryption SDK. 如需詳細資訊,請參閱 2.0 版。 x. 終止 Support 階段
2.1

移除--discovery參數,並將其取代為--wrapping-keys參數的discovery屬性。

AWS 加密 CLI 的 2.1.0 版相當於其他編程語言中的 2.0 版本。

2.2 改進了消息解密過程。
3.x 3.0 添加對 AWS KMS 多區域鍵的支持。 終止 Support 階段
4.x 4.0 加 AWS 密 CLI 不再支持 Python 2 或 Python 3.4。從主要版本 4 開始。 AWS 加密 CLI 的 x,只支持 Python 3.5 或更高版本。 一般可用性 (GA)
4.1 加 AWS 密 CLI 不再支持 Python 3.5。自 4.1 版本開始。 AWS 加密 CLI 的 x,只支持 Python 3.6 或更高版本。
4.2 加 AWS 密 CLI 不再支持 Python 3.6。從 4.2 版本開始。 AWS 加密 CLI 的 x,只支持 Python 3.7 或更高版本。

Java

如需所有變更的詳細描述,請參閱的存放庫中的變更記錄檔 .rstaws-encryption-sdk-java GitHub

主要版本 詳細資訊 SDK 主要版本生命週期階段
1. 1.0 初始版本。 終止 Support 階段
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 版 適用於 JAVA 的 AWS Encryption SDK 將於 2024 年進入維護模式。

2.2 改進了消息解密過程。
2.3 添加對 AWS KMS 多區域鍵的支持。
2.4 添加對 AWS SDK for Java 2.x.
3.x 3.0

適用於 JAVA 的 AWS Encryption SDK 與材料提供者資料庫整合。

添加對對稱和非對稱 RSA AWS KMS 密鑰環, AWS KMS 分層密鑰環,Raw AES 密鑰環,Raw RSA 密鑰環,多密鑰環以及所需的加密上下文 CMM 的支持。

一般可用性 (GA)

JavaScript

如需所有變更的詳細描述,請參閱的儲存庫中的變更記錄檔 .md。aws-encryption-sdk-javascript GitHub

主要版本 詳細資訊 SDK 主要版本生命週期階段
1. 1.0 初始版本。 終止 Support 階段
1.7 AWS Encryption SDK 可協助舊版使用者升級至 2.0 版的更新。 x 及更新版本。如需詳細資訊,請參閱版本 1.7。 x.
2.x 2.0 更新到 AWS Encryption SDK. 如需詳細資訊,請參閱 2.0 版。 x. 終止 Support 階段
2.2 改進了消息解密過程。
2.3 添加對 AWS KMS 多區域鍵的支持。
3.x 3.0 移除節點 10 的 CI 涵蓋範圍。升級相依性不再支援節點 8 和節點 10。

Maintenance (維護)

第 3.x 版的 Support 適用於 JavaScript 的 AWS Encryption SDK 將於 2024 年 1 月 17 日結束。

4.x 4.0 需要的第 3 版 適用於 JavaScript 的 AWS Encryption SDK才kms-client能使用 AWS KMS 鑰匙圈。 一般可用性 (GA)

Python

如需所有變更的詳細描述,請參閱的存放庫中的變更記錄檔 .rstaws-encryption-sdk-python GitHub

主要版本 詳細資訊 SDK 主要版本生命週期階段
1. 1.0 初始版本。 終止 Support 階段
1.3 添加對加密材料管理器和數據密鑰緩存的支持。轉移到確定性 IV 代。
1.7 AWS Encryption SDK 可協助舊版使用者升級至 2.0 版的更新。 x 及更新版本。如需詳細資訊,請參閱版本 1.7。 x.
2.x 2.0 更新到 AWS Encryption SDK. 如需詳細資訊,請參閱 2.0 版。 x. 終止 Support 階段
2.2 改進了消息解密過程。
2.3 添加對 AWS KMS 多區域鍵的支持。
3.x 3.0 適用於 Python 的 AWS Encryption SDK 不再支持 Python 2 或 Python 3.4。從主要版本 3 開始。 的 x 適用於 Python 的 AWS Encryption SDK,只支援 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

AWS Encryption SDK 早於 1.7 的版本。 x 提供重要的安全功能,包括使用 Galo/ 計數器模式(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 引入了新的建構函式, 適用於 JAVA 的 AWS Encryption SDK 並 適用於 Python 的 AWS Encryption SDK 在嚴格探索模式下明確建立 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 KMS keys 在其他 AWS 帳戶 和區域中。

AWS KMS 主密鑰的構造函數沒有更改。加密和解密時, AWS KMS 主金鑰只會使用您指定 AWS KMS key 的金鑰。

AWS KMS 金鑰圈更新 (選擇性)

版本 1.7。 x 在 適用於 C 的 AWS Encryption SDK 和 適用於 JavaScript 的 AWS Encryption SDK 實作中新增了一個篩選器,將AWS KMS 探索金鑰環限制在特 AWS 帳戶定範圍內。這個新帳戶篩選器是選擇性的,但這是我們建議使用的最佳作法。如需詳細資訊,請參閱 正在更新AWS KMS鑰匙圈

AWS KMS 鑰匙圈的構造函數沒有更改。標準金 AWS KMS 鑰環在嚴謹模式下的行為與主要金鑰提供者相同。 AWS KMS 探索金鑰圈是在探索模式下明確建立的。

傳遞密鑰 ID 進行解 AWS KMS 密

從 1.7 版本開始。 x,解密加密的資料金鑰時, AWS Encryption SDK 永遠會 AWS KMS key 在呼叫「 AWS KMS 解密」作業時指定 a。 AWS Encryption SDK 會從每個加密資料金鑰的 AWS KMS key 中繼資料取得的金鑰 ID 值。此功能不需要更改任何代碼。

若要解密以對稱加密 KMS 金鑰加密的加密文字,不需要指定的金鑰識別碼,但這是最佳作AWS KMS 法。 AWS KMS key就像在金鑰提供者中指定包裝金鑰一樣,此做法可確保 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 版require-encrypt-require-decrypt時自動變更為。 x. 相反地,您可以分階段遷移承諾產品原則

具有關鍵承諾的算法套件

版本 1.7。 x 包含兩個支援關鍵承諾的新演算法套件。其中一個包括簽署;另一個則不包括簽署。像之前支持的算法套件一樣,這兩個新的算法套件都包括使用 AES-GCM 進行加密,256 位加密密鑰和基於 HMAC extract-and-expand 的密鑰派生函數(HKDF)。

但是,用於加密的預設演算法套件不會變更。這些演算法套件已新增至 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. 適用於 Python 的 AWS Encryption SDK 適用於 JavaScript 的 AWS Encryption SDK、和 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 將不會解密任何舊版 (包括 1.7 版) 加密的 AWS Encryption SDK密文。 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. 適用於 Python 的 AWS Encryption SDK 適用於 JavaScript 的 AWS Encryption SDK、和 AWS 加密 CLI 的 x 正處於end-of-support階段

如需有關以偏好程式設計語言支援和維護此 AWS Encryption SDK 版本的資訊,請參閱其GitHub儲存庫中的SUPPORT_POLICY.rst檔案。

數位簽章

為了改善解密時對數位簽章的處理, AWS Encryption SDK 包括下列功能:

  • 非串流模式 — 僅在處理所有輸入之後傳回純文字,包括驗證數位簽章 (如果存在)。此功能可防止您在驗證數位簽章之前使用純文字。每當您解密使用數位簽章 (預設演算法套件) 加密的資料時,請使用此功能。例如,由於 AWS 加密 CLI 一律以串流模式處理資料,因此在使用- -buffer數位簽章解密加密文字時,請使用參數。

  • 僅限未簽名的解密模式 — 此功能僅解密未簽署的密文。如果解密在密文中遇到數位簽章,作業就會失敗。使用此功能可避免在驗證簽章之前,無意中處理已簽署郵件的純文字。

限制加密的資料金鑰

您可以限制加密訊息中加密資料金鑰的數量。此功能可協助您在加密時偵測設定錯誤的主要金鑰提供者或金鑰環,或在解密時識別惡意加密文字。

當您解密來自不受信任來源的郵件時,您應該限制加密的資料金鑰。它可以防止對您的金鑰基礎結構進行不必要、昂貴且可能詳盡的呼叫。

版本 2.3. x

添加對 AWS KMS 多區域鍵的支持。如需詳細資訊,請參閱 使用多地區 AWS KMS keys

注意

加 AWS 密 CLI 支援從 3.0 版開始的多區域金鑰。 x.

版本 2. x. 適用於 Python 的 AWS Encryption SDK 適用於 JavaScript 的 AWS Encryption SDK、和 AWS 加密 CLI 的 x 正處於end-of-support階段

如需有關以偏好程式設計語言支援和維護此 AWS Encryption SDK 版本的資訊,請參閱其GitHub儲存庫中的SUPPORT_POLICY.rst檔案。