本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS 資料庫加密 SDK 中支援的演算法套件
我們的用戶端加密程式庫已重新命名為 AWS 資料庫加密 SDK。本開發人員指南仍提供 DynamoDB 加密用戶端的相關資訊。 |
演算法套件是加密演算法與相關數值的集合。密碼編譯系統使用演算法實作來產生加密文字訊息。
資 AWS 料庫加密 SDK 使用演算法套件來加密和簽署資料庫中的欄位。資 AWS 料庫加密 SDK 支援兩個演算法套件。所有支援的套件都使用進階加密標準 (AES) 做為主要演算法,並將它與其他演算法和值結合。
預設演算法套件
資 AWS 料庫加密 SDK 演算法套件在 Galo/ 計數器模式 (GCM) 中使用進階加密標準 (AES) 演算法來加密原始資料。資 AWS 料庫加密 SDK 支援 256 位元加密金鑰。驗證標籤的長度一律是 16 個位元組。
默認情況下, AWS 數據庫加密 SDK 使用帶有 AES-GCM 的算法套件,具有基於 HMAC 的密 extract-and-expand 鑰派生功能(HKDF
數據 AWS 庫加密 SDK 使用算法套件,該算法套件通過向基於 HMAC extract-and-expand 的密鑰派生功能(HKDF)提供 256 位數據加密密鑰來導出 AES-GCM 數據密鑰。它也會衍生資料金鑰的 MAC 金鑰。資料 AWS 庫加密 SDK 使用此資料金鑰衍生唯一的資料加密金鑰,以加密每個欄位。然後,資料 AWS 庫加密 SDK 會使用 MAC 金鑰來計算資料金鑰的每個加密副本的雜湊型訊息驗證碼 (HMAC),並將橢圓曲線數位簽章演算法 (ECDSA) 新增至記錄。此演算法套件也會衍生一個關鍵承諾 — HMAC,可將資料金鑰與記錄相關聯。主要承諾值是根據材料描述和承諾密鑰計算的 HMAC,該密鑰是通過 HKDF 使用類似於導出數據加密密鑰的程序獲得的。然後,關鍵承諾值會儲存在材料描述中。
加密演算法 | 資料加密金鑰長度 (以位元為單位) | 对称签名算法 | 非对称签名算法 | 主要承諾 |
---|---|---|---|---|
AES-G 厘米 | 256 | 哈馬克-沙 -384 | ECDSA 超過 384 | 香港文憑基金與 SHA-512 |
該算法套件序列化材料描述和標記的所有字段 ENCRYPT_AND_SIGN
SIGN_ONLY
,並SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
在加密操作中,然後使用 HMAC 與加密哈希函數算法(SHA-512)簽名規範化。然後它計算一個 ECDSA 數字簽名。HMAC 和 ECDSA 簽章會儲存在 AWS 資料庫加密 SDK 新增至記錄的新欄位 (aws_dbe_foot
) 中。當授權原則允許一組使用者加密資料,而另一組使用者解密資料時,數位簽章特別有用。
關鍵承諾確保每個密文解密只能解密為一個純文本。他們通過驗證用作加密算法輸入的數據密鑰來實現這一點。加密時,這些演算法套件會衍生金鑰承諾 HMAC。在解密之前,他們會驗證資料金鑰產生相同的金鑰承諾 HMAC。如果沒有,解密呼叫就會失敗。
不含數位簽章的 AES-GCM
雖然預設演算法套件可能適用於大多數應用程式,但您可以選擇替代演算法套件。例如,某些信任模型會由沒有數位簽章的演算法套件來滿足。僅當加密資料的使用者和解密資料的使用者受到同等信任時,才使用此套件。
所有 AWS 資料庫加密 SDK 演算法套件都支援 HMAC-SHA-384 對稱簽章。唯一的區別是,沒有數位簽章的 AES-GCM 演算法套件缺少 ECDSA 簽章,可提供額外的真實性和不可否認性層。
例如,如果您的金鑰圈、、和中有多個包裝金鑰 wrappingKeyA
wrappingKeyB
wrappingKeyC
,而您使用解密記錄wrappingKeyA
,則 HMAC-SHA-384 對稱簽章會驗證記錄是否已由具有存取權的使用者加密。wrappingKeyA
如果您使用預設演算法,HMAC 會提供相同的驗證wrappingKeyA
,並且另外使用 ECDSA 簽章來確保記錄是由具有的加密權限的使用者加密。wrappingKeyA
若要選取不含數位簽章的 AES-GCM 演算法套件,請在加密組態中指定。