什麼是 AWS Encryption SDK? - AWS Encryption SDK

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

什麼是 AWS Encryption SDK?

AWS Encryption SDK是用戶端加密程式庫,旨在讓每個人輕鬆地使用產業標準和最佳實務來加密和解密資料。這樣一來,您就能夠專注於應用程式的核心功能,而不用擔心如何讓資料獲得最好的加密與解密操作。在 Apache 2.0 授權下,您可免費取得 AWS Encryption SDK。

AWS Encryption SDK能提供類似下列問題的解答:

  • 我應該使用哪種加密演算法?

  • 這種演算法應該如何使用?或是我該使用哪種模式?

  • 我應該如何產生加密金鑰?

  • 我應該如何保護加密金鑰?還有這份金鑰該存放在哪裡?

  • 我可以如何製作可攜式的加密資料?

  • 我應該如何確保預定收件人可以讀取我的加密資料?

  • 我應該如何確保已加密資料在寫入和讀取的這段期間不會遭到竄改?

  • 如何使用AWS KMS返回的數據鍵?

使用時AWS Encryption SDK,您可以定義主要金鑰提供者 (Java 和 Python) 或金鑰環 (C、C#/.NET 和 JavaScript),以決定您使用哪些包裝金鑰來保護您的資料。然後,您再使用 AWS Encryption SDK提供的直覺式方法,進行資料的加密和解密。AWS Encryption SDK會處理其餘的工作。

如果沒有 AWS Encryption SDK,您花在建置解決方案的氣力可能遠超過建置應用程式核心功能所花的心力。AWS Encryption SDK提供了下列優勢,為這些問題提供了解答。

符合加密最佳實務的預設實作

預設情況下,AWS Encryption SDK會為其加密的每個資料物件產生唯一的資料金鑰。這個做法符合使用唯一資料金鑰進行每次加密操作的加密最佳實務要求。

AWS Encryption SDK會使用安全、身分驗證的對稱金鑰演算法,加密處理您的資料。如需詳細資訊,請參閱AWS Encryption SDK中的支援演算法套件

使用包裝密鑰保護數據鍵的框架

通過在一個或多個包裝密鑰下加密數據來AWS Encryption SDK保護數據密鑰。藉由提供架構來使用多個包裝金鑰來加密資料金鑰,AWS Encryption SDK有助於讓您的加密資料可攜式。

例如,將內部部署 HSM AWS KMS key 中的資料AWS KMS和金鑰下的資料加密。您可以使用任何一個包裝密鑰來解密數據,以防其中一個密鑰不可用或調用者沒有使用這兩個密鑰的權限。

儲存已加密資料金鑰和已加密資料的格式化訊息

AWS Encryption SDK會在採用已定義資料格式的已加密訊息中,存放已加密的資料和已加密的資料金鑰。這表示您不需要追蹤或保護處理資料加密的資料金鑰,因為 AWS Encryption SDK全都幫您完成了。

某些語言實現AWS Encryption SDK需要 AWS SDK,但AWS Encryption SDK不需要一個AWS 帳戶,它不依賴於任何AWS服務。AWS 帳戶只有當您選擇使用來保護您的資料時,AWS KMS keys才需要一個。

在開源存儲庫中開發

AWS Encryption SDK是在開放原始碼儲存庫中開發的 GitHub。您可以使用這些儲存庫來檢視程式碼、讀取和送出問題,以及尋找特定於您語言實作的資訊。

與加密程式庫和服務的相容性

支援AWS Encryption SDK數種程式設計語言。所有語言實作都是可互通的。您可以使用一種語言實作加密,並使用另一種語言進行解密。互通性可能受到語言限制。如果是這樣,這些限制會在語言實作的主題中加以說明。此外,加密和解密時,您必須使用相容的 Keyring,或主金鑰和主金鑰提供者。如需詳細資訊,請參閱 Keyring 相容性

但是,AWS Encryption SDK 無法與其他程式庫交互操作。由於每個程式庫都會以不同的格式傳回加密資料,因此您無法使用一個程式庫加密,並使用另一個程式庫解密。

加密 DynamoDB 戶端和 Amazon S3 用戶端加密

AWS Encryption SDK無法解密由 DynamoDB 加密用戶端或 Amazon S3 用戶端加密加密的資料。這些庫無法解密AWS Encryption SDK返回的加密消息。 

AWS Key Management Service (AWS KMS)

AWS Encryption SDK可以使用AWS KMS keys資料金鑰來保護您的資料,包括多區域 KMS 金鑰。例如,您可AWS Encryption SDK以設定為加密您AWS KMS keys的AWS 帳戶. 不過,您必須使用 AWS Encryption SDK 來解密該資料。

AWS Encryption SDK無法解密加密或ReEncrypt作業傳回的AWS KMS加密文字。同樣地,AWS KMS解密作業無法解密AWS Encryption SDK傳回的加密訊息

僅AWS Encryption SDK支援對稱加密 KMS 金鑰。您無法使用非對稱 KMS 金鑰進行加密或登入AWS Encryption SDK。AWS Encryption SDK 會針對簽署訊息的演算法套件產生自己的 ECDSA 簽署金鑰。

如需決定要使用哪個程式庫或服務的說明,請參閱如何在加密服務和工具中選擇加AWS密工具或服務

Support 與維護

AWS Encryption SDK使用 AWS SDK 和 Tools 使用的相同維護政策,包括其版本控制和生命週期階段。最佳作法是,建議您AWS Encryption SDK針對您的程式設計語言使用的最新可用版本,並在發行新版本時進行升級。當某個版AWS Encryption SDK本需要重大變更時,例如從 1.7 之前的版本升級。 x 轉換為 2.0 版本。 x 和更高版本,我們提供詳細的說明來幫助您。

的每個程式設計語言實作都AWS Encryption SDK是在單獨的開放原始碼 GitHub 儲存庫中開發。每個版本的生命週期和支持階段可能因存儲庫而異。例如,給定版本的AWS Encryption SDK可能處於一種程式設計語言中的一般可用性 (完全支援) 階段,但在不同程式設計語言中的 end-of-support階段。我們建議您盡可能使用完整支援的版本,並避免使用不再受支援的版本。

若要尋找您程式設計語言AWS Encryption SDK版本的生命週期階段,請參閱每個AWS Encryption SDK儲存庫中的SUPPORT_POLICY.rst檔案。

如需詳細資訊,請參閱 AWSSDK 的版本 AWS Encryption SDK 和工具參考指南中的和 AWS SDK 和工具維護原則。

進一步了解

如需更多有關 AWS Encryption SDK和用戶端加密的資訊,請嘗試下面參考來源。

如需運用不同程式設計語言實作的 AWS Encryption SDK的詳細資訊。

傳送意見回饋

我們誠摯歡迎您提供意見回饋。如果您有問題或意見、問題或報告,請使用以下資源。

  • 如果您在 AWS Encryption SDK 中發現可能的安全性漏洞,請通知 AWS 安全人員。請勿建立公開 GitHub 問題。

  • 若要提供有關的意見反應AWS Encryption SDK,請在 GitHub 儲存庫中針對您使用的程式設計語言提出問題。

  • 若要針對此文件提供意見反應,請使用此頁面上的意見反應連結。您也可以針對本文件的開放原始碼儲存庫提出問題或貢獻 GitHub。aws-encryption-sdk-docs