本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
的版本AWS Encryption SDK
AWS Encryption SDK語言實作使用語意版本控制
盡可能使用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 中發行。不過,AWSEncryption CLI 1.8.x 版取代了 1.7.x 版,而 AWSEncryption CLI 2.1.x 版取代了 2.0.x。如需詳細資訊,請參閱 GitHub 上 aws-encryption-sdk-cli
下表概述AWS Encryption SDK每種程式設計語言支援的 版本之間的主要差異。
C
如需所有變更的詳細說明,請參閱 GitHub 上 aws-encryption-sdk-c
| 主要版本 | 詳細資訊 | SDK 主要版本生命週期階段 | |
|---|---|---|---|
| 1.x | 1.0 | Initial release. | End-of-Support階段 |
| 1.7 | Updates to theAWS Encryption SDKthat 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 theAWS Encryption SDK. For more information, see 2.0.x 版. | 一般可用性 (GA) |
| 2.2 | Improvements to the message decryption process. | ||
| 2.3 | Adds support forAWS KMSmulti-Region keys. | ||
C# / .NET
如需所有變更的詳細說明,請參閱 GitHub 上儲存aws-encryption-sdk-net
| 主要版本 | 詳細資訊 | SDK 主要版本生命週期階段 | |
|---|---|---|---|
| 3.x | 3.1.0 | Initial release. | |
| 4.x | 4.0 | Adds support for theAWS KMSHierarchical keyring, the required encryption context CMM, and asymmetric RSAAWS KMSkeyrings. | 一般可用性 (GA) |
命令列界面 (CLI)
如需所有變更的詳細說明,請參閱 GitHub 上 aws-encryption-sdk-cli
| 主要版本 | 詳細資訊 | SDK 主要版本生命週期階段 | |
|---|---|---|---|
| 1.x | 1.0 | Initial release. | End-of-Support階段 |
| 1.7 | Updates to theAWS Encryption SDKthat 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 theAWS Encryption SDK. For more information, see 2.0.x 版. | End-of-Support階段 |
| 2.1 |
移除 AWS加密 CLI 的 2.1.0 版等同於其他程式設計語言的 2.0 版。 |
||
| 2.2 | Improvements to the message decryption process. | ||
| 3.x | 3.0 | Adds support forAWS KMSmulti-Region keys. | End-of-Support階段 |
| 4.x | 4.0 | TheAWSEncryption CLI no longer supports Python 2 or Python 3.4. As of major version 4.x of theAWSEncryption CLI, only Python 3.5 or later is supported. | 一般可用性 (GA) |
| 4.1 | TheAWSEncryption CLI no longer supports Python 3.5. As of version 4.1.x of theAWSEncryption CLI, only Python 3.6 or later is supported. | ||
| 4.2 | TheAWSEncryption CLI no longer supports Python 3.6. As of version 4.2.x of theAWSEncryption CLI, only Python 3.7 or later is supported. | ||
Java
如需所有變更的詳細說明,請參閱 GitHub 上 aws-encryption-sdk-java
| 主要版本 | 詳細資訊 | SDK 主要版本生命週期階段 | |
|---|---|---|---|
| 1.x | 1.0 | Initial release. | End-of-Support階段 |
| 1.3 | Adds support for cryptographic materials manager and data key caching. Moved to deterministic IV generation. | ||
| 1.6.1 |
棄用 |
||
| 1.7 | Updates to theAWS Encryption SDKthat 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 theAWS Encryption SDK. For more information, see 2.0.x 版. |
一般可用性 (GA) 2.x 版適用於 JAVA 的 AWS Encryption SDK將在 2024 年進入維護模式。 |
| 2.2 | Improvements to the message decryption process. | ||
| 2.3 | Adds support forAWS KMSmulti-Region keys. | ||
| 2.4 | Adds support forAWS SDK for Java 2.x. | ||
| 3.x | 3.0 |
將 適用於 JAVA 的 AWS Encryption SDK與物料提供者程式庫 新增對對稱和非對稱 RSA AWS KMSkeyring、AWS KMSECDH keyring、AWS KMS階層 keyring、原始 AES keyring、原始 RSA keyring、原始 ECDH keyring、多重 keyring 和所需加密內容 CMM 的支援。 |
一般可用性 (GA) |
Go
如需所有變更的詳細說明,請參閱 GitHub 上 aws-encryption-sdk
| 主要版本 | 詳細資訊 | SDK 主要版本生命週期階段 | |
|---|---|---|---|
| 0.1.x | 0.1.0 | Initial release. | 一般可用性 (GA) |
JavaScript
如需所有變更的詳細說明,請參閱 GitHub 上 aws-encryption-sdk-javascript
| 主要版本 | 詳細資訊 | SDK 主要版本生命週期階段 | |
|---|---|---|---|
| 1.x | 1.0 | Initial release. | End-of-Support階段 |
| 1.7 | Updates to theAWS Encryption SDKthat 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 theAWS Encryption SDK. For more information, see 2.0.x 版. | End-of-Support階段 |
| 2.2 | Improvements to the message decryption process. | ||
| 2.3 | Adds support forAWS KMSmulti-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 版的支援適用於 JavaScript 的 AWS Encryption SDK將於 2024 年 1 月 17 日結束。 |
| 4.x | 4.0 | Requires version 3 of the適用於 JavaScript 的 AWS Encryption SDK's kms-client
to use theAWS KMSkeyring. |
一般可用性 (GA) |
Python
如需所有變更的詳細說明,請參閱 GitHub 上 aws-encryption-sdk-python
| 主要版本 | 詳細資訊 | SDK 主要版本生命週期階段 | |
|---|---|---|---|
| 1.x | 1.0 | Initial release. | End-of-Support階段 |
| 1.3 | Adds support for cryptographic materials manager and data key caching. Moved to deterministic IV generation. | ||
| 1.7 | Updates to theAWS Encryption SDKthat 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 theAWS Encryption SDK. For more information, see 2.0.x 版. | End-of-Support階段 |
| 2.2 | Improvements to the message decryption process. | ||
| 2.3 | Adds support forAWS KMSmulti-Region keys. | ||
| 3.x | 3.0 | The適用於 Python 的 AWS Encryption SDKno longer supports Python 2 or Python 3.4. As of major version 3.x of the適用於 Python 的 AWS Encryption SDK, only Python 3.5 or later is supported. | 一般可用性 (GA) |
| 4.x | 4.0 |
將 適用於 Python 的 AWS Encryption SDK與物料提供者程式庫 |
一般可用性 (GA) |
Rust
如需所有變更的詳細說明,請參閱 GitHub 上 aws-encryption-sdk
| 主要版本 | 詳細資訊 | SDK 主要版本生命週期階段 | |
|---|---|---|---|
| 1.x | 1.0 | Initial release. | 一般可用性 (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/計數器模式 (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 帳戶。帳戶篩選是選用的,但我們建議的最佳實務是。
建立舊版AWS KMS主金鑰提供者的建構函式已在 1.7.x 版中棄用,並在 2.0.x 版中移除。這些建構函數會執行個體化使用您指定包裝金鑰進行加密的主金鑰提供者。不過,它們會使用加密資料的包裝金鑰來解密加密的資料金鑰,而不考慮指定的包裝金鑰。使用者可能會無意中使用他們不打算使用的包裝金鑰解密訊息,包括在其他 AWS KMS keysAWS 帳戶和 區域中。
AWS KMS主金鑰的建構函數沒有變更。加密和解密時,AWS KMS主金鑰只會使用AWS KMS key您指定的 。
-
- AWS KMSkeyring 更新 (選用)
-
1.7.x 版將新的篩選條件新增至 適用於 C 的 AWS Encryption SDK和適用於 JavaScript 的 AWS Encryption SDK 實作,將AWS KMS探索 keyring 限制為特定AWS 帳戶。這個新帳戶篩選條件是選用的,但我們建議採用最佳實務。如需詳細資訊,請參閱更新 AWS KMS keyring。
AWS KMSkeyring 的建構函數沒有變更。在嚴格模式下,標準 AWS KMSkeyring 的行為類似於主金鑰提供者。AWS KMS探索 keyring 是在探索模式下明確建立的。
- 傳遞金鑰 ID AWS KMS以解密
-
從 1.7.x 版開始,在解密加密的資料金鑰時, AWS Encryption SDK一律會在對 AWS KMSDecrypt 操作的呼叫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.x 版
require-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 版的 適用於 JavaScript 的 AWS Encryption SDK適用於 Python 的 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 版的 適用於 JavaScript 的 AWS Encryption SDK適用於 Python 的 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。
注意
AWSEncryption CLI 支援從 3.0.x 版開始的多區域金鑰。
2.x.x 版的 適用於 JavaScript 的 AWS Encryption SDK適用於 Python 的 AWS Encryption SDK和 AWS加密 CLI 處於end-of-support階段。
如需有關以您偏好的程式設計語言支援和維護此AWS Encryption SDK版本的資訊,請參閱其 GitHub 儲存庫中的 SUPPORT_POLICY.rst 檔案。