的版本 AWS Encryption SDK - AWS Encryption SDK

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

的版本 AWS Encryption SDK

AWS Encryption SDK 語言實作使用語意版本控制,讓您更輕鬆地識別每個版本中變更的幅度。主要版本編號的變更,例如 1.x.x 到 2.x.x,表示可能需要程式碼變更和規劃部署的重大變更。中斷新版本的變更可能不會影響每個使用案例,請檢閱版本備註,查看您是否受到影響。次要版本的變更,例如 x.1.xx.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

如需所有變更的詳細說明,請參閱 儲存aws-encryption-sdk-c庫中的 CHANGELOG.md GitHub。

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

如需所有變更的詳細說明,請參閱 儲存aws-encryption-sdk-net庫中的 CHANGELOG.md GitHub。

主要版本 詳細資訊 SDK 主要版本生命週期階段
3.x 3.0 初始版本。

一般可用性 (GA)

AWS Encryption SDK 適用於 的 3.x 版。NET 將於 2024 年 5 月 13 日進入維護模式。

4.x 4.0 新增 AWS KMS 對階層式 keyring、所需加密內容 CMM和非對稱 RSA AWS KMS keyring 的支援。 一般可用性 (GA)

命令列界面 (CLI)

如需所有變更的詳細說明,請參閱 上的 儲存aws-encryption-sdk-cli庫中的 的版本AWS加密 CLICHANGELOG.rst GitHub。

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

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

AWS 加密的 2.1.0 版CLI相當於其他程式設計語言的 2.0 版。

2.2 訊息解密程序的改善。
3.x 3.0 新增對 AWS KMS 多區域金鑰的支援。 End-of-Support 階段
4.x 4.0 AWS 加密CLI不再支援 Python 2 或 Python 3.4。從 AWS 加密 的主要 4.x 版開始CLI,僅支援 Python 3.5 或更新版本。 一般可用性 (GA)
4.1 AWS 加密CLI不再支援 Python 3.5。自 AWS 加密 的 4.1.x 版起CLI,僅支援 Python 3.6 或更新版本。
4.2 AWS 加密CLI不再支援 Python 3.6。從 AWS 加密 的 4.2.x 版開始CLI,僅支援 Python 3.7 或更新版本。

Java

如需所有變更的詳細說明,請參閱 儲存aws-encryption-sdk-java庫中的 CHANGELOG.rst GitHub。

主要版本 詳細資訊 SDK 主要版本生命週期階段
1.x 1.0 初始版本。 End-of-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 與材質提供者程式庫 () 整合MPL。

新增對對稱和非對稱 RSA AWS KMS keyring、 AWS KMS ECDHkeyring、 AWS KMS 階層 keyring、原始 AES keyring、原始 RSA keyring、原始 keyring、原始 ECDH keyring、Multi-keyring 和所需加密內容的支援CMM。

一般可用性 (GA)

JavaScript

如需所有變更的詳細說明,請參閱 儲存aws-encryption-sdk-javascript庫中的 CHANGELOG.md GitHub。

主要版本 詳細資訊 SDK 主要版本生命週期階段
1.x 1.0 初始版本。 End-of-Support 階段
1.7 更新 AWS Encryption SDK ,以協助舊版的使用者升級至 2.0.x 版及更新版本。如需詳細資訊,請參閱 1.7.x 版。
2.x 2.0 更新 AWS Encryption SDK。如需詳細資訊,請參閱 2.0.x 版。 End-of-Support 階段
2.2 訊息解密程序的改善。
2.3 新增對 AWS KMS 多區域金鑰的支援。
3.x 3.0 移除節點 10 的 CI 涵蓋範圍。升級相依性以不再支援 Node 8 和 Node 10。

Maintenance (維護)

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

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

Python

如需所有變更的詳細說明,請參閱 儲存aws-encryption-sdk-python庫中的 CHANGELOG.rst GitHub。

主要版本 詳細資訊 SDK 主要版本生命週期階段
1.x 1.0 初始版本。 End-of-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 版。 End-of-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)
3.x 4.0

將 適用於 Python 的 AWS Encryption SDK 與材質提供者程式庫 () 整合MPL。

一般可用性 (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.x AWS Encryption SDK 之前的 版本提供重要的安全功能,包括使用 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 版將新的建構函式引入 適用於 Python 的 AWS Encryption SDK , 適用於 JAVA 的 AWS Encryption SDK 並在嚴格探索模式中明確建立 AWS KMS 主金鑰提供者。此版本會將類似的變更新增至 AWS Encryption SDK 命令列界面 (CLI)。如需詳細資訊,請參閱 更新 AWS KMS 主金鑰提供者

  • 嚴格模式下, AWS KMS 主金鑰提供者需要包裝金鑰的清單,它們僅使用您指定的包裝金鑰來加密和解密。這是 AWS Encryption SDK 最佳實務,可確保您使用打算使用的包裝金鑰。

  • 探索模式中, AWS KMS 主金鑰提供者不會使用任何包裝金鑰。您不能使用它們進行加密。解密時,他們可以使用任何包裝金鑰來解密加密的資料金鑰。不過,您可以將用於解密的包裝金鑰限制為特別是那些金鑰 AWS 帳戶。帳戶篩選是選用的,但我們建議最佳實務

在 1.7.x 版中已棄用建立舊版 AWS KMS 主金鑰提供者的建構函式,並在 2.0.x 版中移除。這些建構器會執行個體化使用您指定包裝金鑰加密的主金鑰提供者。不過,它們會使用加密資料金鑰的包裝金鑰來解密加密的資料金鑰,而不考慮指定的包裝金鑰。使用者可能會無意中使用他們不打算使用的包裝金鑰解密訊息,包括在其他 AWS KMS keys AWS 帳戶 和 區域中。

AWS KMS 主金鑰的建構器沒有變更。加密和解密時, AWS KMS 主金鑰只會使用 AWS KMS key 您指定的 。

AWS KMS keyring 更新 (選用)

1.7.x 版將新的篩選條件新增至 適用於 C 的 AWS Encryption SDK 和 適用於 JavaScript 的 AWS Encryption SDK 實作,將AWS KMS 探索 keyring 限制為特定 AWS 帳戶。這個新帳戶篩選條件是選用的,但我們建議最佳實務。如需詳細資訊,請參閱 正在更新AWS KMS鑰匙圈

AWS KMS keyring 的建構器沒有變更。標準 AWS KMS keyring 在嚴格模式下的行為類似於主金鑰提供者。 AWS KMS 探索 keyring 是在探索模式下明確建立的。

傳遞金鑰 ID AWS KMS 以解密

從 1.7.x 版開始,在解密加密的資料金鑰時, AWS Encryption SDK 一律會在對 AWS KMS 解密操作的呼叫 AWS KMS key 中指定 。 AWS KMS key 會從每個加密資料金鑰中的中繼資料 AWS Encryption SDK 取得 的金鑰 ID 值。此功能不需要任何程式碼變更。

AWS KMS key 不需要指定 的金鑰 ID,即可解密在對稱加密KMS金鑰下加密的加密文字,但這是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 版中只有一個有效的承諾政策值,但當您使用此版本中APIs引入的新 時,我們會要求您明確設定此值。當您升級至 2.1.xrequire-encrypt-require-decrypt時,設定 值會明確防止您的承諾政策自動變更為 。反之,您可以分階段遷移您的承諾政策

具有金鑰承諾的演算法套件

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.x 版 適用於 Python 的 AWS Encryption SDK 適用於 JavaScript 的 AWS Encryption SDK,且 AWS 加密CLI處於end-of-support階段

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

AWS KMS 主金鑰提供者

在 1.7.x 版中取代的原始 AWS KMS 主金鑰提供者建構函式會在 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.x 版 適用於 Python 的 AWS Encryption SDK 適用於 JavaScript 的 AWS Encryption SDK,且 AWS 加密CLI處於end-of-support階段

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

數位簽章

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

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

  • 未簽署的解密模式 — 此功能只會解密未簽署的加密文字。如果解密在加密文字中遇到數位簽章,操作會失敗。使用此功能以避免在驗證簽章之前意外處理已簽署訊息的純文字。

限制加密的資料金鑰

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

當您從不受信任的來源解密訊息時,您應該限制加密的資料金鑰。它可避免對金鑰基礎設施進行不必要的、昂貴和可能詳盡的呼叫。

2.3.x

新增對 AWS KMS 多區域金鑰的支援。如需詳細資訊,請參閱 使用多區域 AWS KMS keys

注意

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

的 2.x.x 版 適用於 Python 的 AWS Encryption SDK 適用於 JavaScript 的 AWS Encryption SDK,且 AWS 加密CLI處於end-of-support階段

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