AWS 資料庫加密 SDK 的運作方式 - AWS 資料庫加密 SDK

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

AWS 資料庫加密 SDK 的運作方式

我們的用戶端加密程式庫已重新命名為 AWS 資料庫加密 SDK。本開發人員指南仍提供 DynamoDB 加密用戶端的相關資訊。

資料 AWS 庫加密 SDK 提供用戶端加密程式庫,這些程式庫專門設計用來保護您儲存在資料庫中的資料。程式庫包括您可以擴展或以原狀使用的安全實作。如需有關定義和使用自訂元件的詳細資訊,請參閱資料庫實作的 GitHub 存放庫。

本節中的工作流程說明資料 AWS 庫加密 SDK 如何加密、簽署、解密和驗證資料庫中的資料。這些工作流程描述了使用抽象元素和默認功能的基本過程。如需有關資 AWS 料庫加密 SDK 如何與資料庫實作搭配運作的詳細資訊,請參閱資料庫的加密內容主題。

資料 AWS 庫加密 SDK 使用信封加密來保護您的資料。每個記錄都在唯一的數據密鑰下進行加密。資料金鑰可用來衍生加密動作ENCRYPT_AND_SIGN中標記的每個欄位的唯一資料加密金鑰。然後,資料金鑰的副本會由您指定的包裝金鑰加密。若要解密加密的記錄,資料 AWS 庫加密 SDK 會使用您指定的包裝金鑰來解密至少一個加密的資料金鑰。然後它可以解密密文並返回一個明文條目。

如需有關資 AWS 料庫加密 SDK 中使用的術語的詳細資訊,請參閱AWS 資料庫加密SDK概念

加密和簽署

在其核心, AWS 數據庫加密 SDK 是一個記錄加密器,用於加密,簽名,驗證和解密數據庫中的記錄。它會取得您的記錄相關資訊,以及要加密和簽署哪些欄位的指示。它從您指定的包裝密鑰配置的加密材料管理器中獲取加密材料以及有關如何使用它們的說明。

以下逐步解說說明資料 AWS 庫加密 SDK 如何加密和簽署您的資料項目。

  1. 加密材料管理員為資料 AWS 庫加密 SDK 提供唯一的資料加密金鑰:一個純文字資料金鑰、以指定包裝金鑰加密的資料金鑰副本,以及一個 MAC 金鑰

    注意

    您可以在多個包裝密鑰下加密數據密鑰。每個包裝密鑰都會加密數據密鑰的單獨副本。數據 AWS 庫加密 SDK 將所有加密的數據密鑰存儲在材料描述中。資料 AWS 庫加密 SDK 會將新欄位 (aws_dbe_head) 新增至儲存材料描述的記錄。

    系統會針對資料金鑰的每個加密複本衍生一個 MAC 金鑰。MAC 鍵不會存儲在材料描述中。而是,解密方法使用包裝密鑰再次導出 MAC 密鑰。

  2. 加密方法會加密您指定的加密動作ENCRYPT_AND_SIGN中標記為的每個欄位。

  3. 加密方法會commitKey從資料金鑰衍生出來,並使用它來產生金鑰承諾值,然後捨棄資料金鑰。

  4. 加密方法會將材料描述新增至記錄。材料描述包含加密的數據密鑰和有關加密記錄的其他信息。若要取得材料描述中所包含資訊的完整清單,請參閱〈材料描述格式〉。

  5. 加密方法會使用步驟 1 中傳回的 MAC 金鑰,根據材料描述、加密內容以及每個標記ENCRYPT_AND_SIGN的欄位或SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT加密動作的規範化來計算「雜湊型訊息驗證碼」(HMAC) 值。SIGN_ONLYHMAC 值會儲存在加密方法新增至記錄的新欄位 (aws_dbe_foot) 中。

  6. 加密方法會根據材料描述、加密內容的規範化以及標記ENCRYPT_AND_SIGN、或SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT的每個欄位計算 ECD SA 簽章,並將 ECDSA 簽章儲存在欄位中。SIGN_ONLY aws_dbe_foot

    注意

    ECDSA 簽章預設為啟用,但並非必要。

  7. 加密方法將加密和簽名記錄存儲在數據庫中

解密和驗證

  1. 密碼材料管理器(CMM)提供了解密方法,其中包括明文數據密鑰和關聯的 MAC 密鑰存儲在材料描述中的解密材料。

    1. CMM 會使用指定金鑰環中的包裝金鑰來解密加密的資料金鑰,並傳回純文字資料金鑰。

  2. 解密方法比較和驗證材料描述中的關鍵承諾值。

  3. 解密方法會驗證簽名欄位中的簽名。

    它標識哪些字段被標記 ENCRYPT_AND_SIGNSIGN_ONLY,或SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT從您定義的允許未驗證字段的列表。解密方法會使用步驟 1 中傳回的 MAC 金鑰,重新計算並比較標記為ENCRYPT_AND_SIGNSIGN_ONLY、或的欄位的 HMAC 值。SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT然後,它會使用儲存在加密內容中的公開金鑰來驗證 ECDSA 簽章。

  4. 解密方法會使用純文字資料金鑰來解密每個標記的值。ENCRYPT_AND_SIGN然後, AWS 資料庫加密 SDK 會捨棄純文字資料金鑰。

  5. 解密方法返回明文記錄。