本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS 資料庫加密 SDK 的運作方式
我們的用戶端加密程式庫已重新命名為 AWS 資料庫加密 SDK。此開發人員指南仍會提供 DynamoDB Encryption Client 的相關資訊。 |
AWS Database Encryption SDK 提供用戶端加密程式庫,專為保護您存放在資料庫中的資料而設計。程式庫包括您可以擴展或以原狀使用的安全實作。如需定義和使用自訂元件的詳細資訊,請參閱資料庫實作的 GitHub 儲存庫。
本節中的工作流程說明 AWS Database Encryption SDK 如何加密和簽署和解密,並驗證資料庫中的資料。這些工作流程使用抽象元素和預設功能來描述基本程序。如需有關 AWS 資料庫加密 SDK 如何搭配資料庫實作運作的詳細資訊,請參閱資料庫的「什麼已加密」主題。
AWS Database Encryption SDK 使用信封加密來保護您的資料。每個記錄都會以唯一的資料金鑰加密。資料金鑰用於衍生密碼編譯動作ENCRYPT_AND_SIGN
中標記的每個欄位的唯一資料加密金鑰。然後,您指定的包裝金鑰會加密資料金鑰的副本。若要解密加密的記錄, AWS 資料庫加密 SDK 會使用您指定的包裝金鑰來解密至少一個加密的資料金鑰。然後,它可以解密加密文字並傳回純文字項目。
如需 AWS 資料庫加密 SDK 中使用的術語的詳細資訊,請參閱 AWS 資料庫加密 SDK 概念。
加密和簽署
AWS 資料庫加密 SDK 的核心是記錄加密程式,可加密、簽署、驗證和解密資料庫中的記錄。它會取得有關記錄的資訊,以及要加密和簽署哪些欄位的指示。它會從您指定的包裝金鑰中設定的密碼編譯資料管理員取得加密資料,以及如何使用這些資料的指示。
下列逐步解說說明 AWS Database Encryption SDK 如何加密和簽署您的資料項目。
-
密碼編譯資料管理員為 AWS 資料庫加密 SDK 提供唯一的資料加密金鑰:一個純文字資料金鑰、由指定包裝金鑰加密的資料金鑰複本,以及 MAC 金鑰。
注意
您可以在多個包裝金鑰下加密資料金鑰。每個包裝金鑰都會加密資料金鑰的個別複本。 AWS Database Encryption SDK 會將所有加密的資料金鑰存放在材料描述中。 AWS Database Encryption SDK 會將新欄位 (
aws_dbe_head
) 新增至存放材料描述的記錄。系統會針對每個資料金鑰的加密複本衍生 MAC 金鑰。MAC 金鑰不會存放在材料描述中。反之,解密方法會使用包裝金鑰再次衍生 MAC 金鑰。
-
加密方法會加密您指定的密碼編譯動作
ENCRYPT_AND_SIGN
中標記為 的每個欄位。 -
加密方法
commitKey
從資料金鑰衍生 ,並使用它來產生金鑰承諾值,然後捨棄資料金鑰。 -
加密方法會將物料描述新增至記錄。材料描述包含加密的資料金鑰,以及有關加密記錄的其他資訊。如需材料描述中包含的資訊完整清單,請參閱材料描述格式。
-
加密方法使用步驟 1 中傳回的 MAC 金鑰,透過材料描述、加密內容和密碼編譯動作
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
中標記為ENCRYPT_AND_SIGN
、SIGN_ONLY
或 的每個欄位的正式化來計算雜湊型訊息驗證碼 (HMAC) 值。HMAC 值會儲存在加密方法新增至記錄的新欄位 (aws_dbe_foot
) 中。 -
加密方法計算 ECDSA 簽章,透過材料描述、加密內容和每個標記為
ENCRYPT_AND_SIGN
、SIGN_ONLY
或 欄位的正式化,SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
並將 ECDSA 簽章存放在aws_dbe_foot
欄位中。注意
ECDSA 簽章預設為啟用,但並非必要。
-
加密方法會將加密和簽章的記錄存放在您的資料庫中
解密和驗證
-
密碼編譯資料管理員 (CMM) 提供解密方法,其中包含儲存在資料描述中的解密資料,包括純文字資料金鑰和相關聯的 MAC 金鑰。
-
CMM 會使用指定 keyring 中的包裝金鑰解密加密的資料金鑰,並傳回純文字資料金鑰。
-
-
解密方法會比較並驗證材料描述中的鍵承諾值。
-
解密方法會驗證簽章欄位中的簽章。
它會
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
從您定義的允許未驗證欄位清單中識別哪些欄位標記為ENCRYPT_AND_SIGN
SIGN_ONLY
、 或 。解密方法使用步驟 1 中傳回的 MAC 金鑰來重新計算和比較標示為ENCRYPT_AND_SIGN
、SIGN_ONLY
或 之欄位的 HMAC 值SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
。然後,它會使用存放在加密內容中的公有金鑰來驗證 ECDSA 簽章。 -
解密方法使用純文字資料金鑰來解密每個標示為 的值
ENCRYPT_AND_SIGN
。然後 AWS ,資料庫加密 SDK 會捨棄純文字資料金鑰。 -
解密方法會傳回純文字記錄。