本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
的版本 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 中發行。不過, AWS 加密CLI版本 1.8.x 取代 1.7.x 版, AWS 加密 CLI 2.1.x 取代 2.0.x。如需詳細資訊,請參閱 儲存aws-encryption-sdk-cli
下表提供 AWS Encryption SDK 每個程式設計語言支援版本 之間主要差異的概觀。
C
如需所有變更的詳細說明,請參閱 儲存aws-encryption-sdk-c
主要版本 | 詳細資訊 | 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
命令列界面 (CLI)
如需所有變更的詳細說明,請參閱 上的 儲存aws-encryption-sdk-cli
主要版本 | 詳細資訊 | 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 |
移除 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
主要版本 | 詳細資訊 | SDK 主要版本生命週期階段 | |
---|---|---|---|
1.x | 1.0 | 初始版本。 | End-of-Support 階段 |
1.3 | 新增對密碼編譯資料管理員和資料金鑰快取的支援。移至確定性 IV 產生。 | ||
1.6.1 |
將 |
||
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 keyring、 AWS KMS ECDHkeyring、 AWS KMS 階層 keyring、原始 AES keyring、原始 RSA keyring、原始 keyring、原始 ECDH keyring、Multi-keyring 和所需加密內容的支援CMM。 |
一般可用性 (GA) |
JavaScript
如需所有變更的詳細說明,請參閱 儲存aws-encryption-sdk-javascript
主要版本 | 詳細資訊 | 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
主要版本 | 詳細資訊 | 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 與材質提供者程式庫 |
一般可用性 (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.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 版 適用於 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
檔案。