AWS 資料庫加密中支援的演算法套件 SDK - AWS 資料庫加密 SDK

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

AWS 資料庫加密中支援的演算法套件 SDK

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

演算法套件是加密演算法與相關數值的集合。密碼編譯系統使用演算法實作來產生密文。

資 AWS 料庫加密SDK使用演算法套件來加密和簽署資料庫中的欄位。所有支援的演算法套件都使用進階加密標準 (AES) 演算法搭配 Galois/Counter Mode (GCM),稱為 AES-GCM,來加密原始資料。 AWS 資料庫加密SDK支援 256 位元加密金鑰。驗證標籤的長度一律是 16 個位元組。

AWS 數據庫加密SDK算法套件
演算法 加密演算法 資料金鑰長度 (以位元為單位) 金鑰衍生演算法 对称签名算法 非对称签名算法 主要承諾
預設 AES-GCM 256 HKDF同 SHA HMAC-SHA -384 ECDSA使用 P-384 和 SHA HKDF同 SHA
AES-GCM 沒有ECDSA數字簽名 AES-GCM 256 HKDF同 SHA HMAC-SHA -384 HKDF同 SHA
加密演算法

使用的加密演算法的名稱和模式。 AWS 數據庫加密中的算法套件SDK使用高級加密標準(AES)算法和 Galois/計數器模式(GCM)。

資料金鑰長度

資料金鑰的長度 (以位元為單位)。資料 AWS 庫加密SDK支援 256 位元資料金鑰。數據鍵被用作HMAC基於 extract-and-expand 密鑰派生函數(HKDF)的輸入。的輸出會HKDF做為加密演算法中的資料加密金鑰使用。

金鑰衍生演算法

HMAC基於密 extract-and-expand 鑰派生函數(HKDF)用於導出數據加密密鑰。資 AWS 料庫加密SDK使用 RFC5869 中HKDF定義的。

  • 使用的哈希函數是 SHA -512

  • 對於擷取步驟:

    • 不使用 salt。根據RFC,將鹽設置為零的字符串。

    • 輸入鍵合材料是鑰圈中的數據鍵。

  • 對於擴展步驟:

    • 輸入虛擬亂數金鑰是來自擷取步驟的輸出。

    • 密鑰標籤是字符串的 UTF -8 編碼字節,以大端DERIVEKEY字節順序排列。

    • 輸入信息是算法 ID 和密鑰標籤的串聯(按該順序)。

    • 輸出鍵合材料的長度為資料鍵長度。此輸出將當做加密演算法中的資料加密金鑰。

对称签名算法

用於產生對稱簽章的雜湊型訊息驗證碼 (HMAC) 演算法。所有支援的演算法套件都包含HMAC驗證

「 AWS 資料庫加密」SDK 序列化材料描述和標記為ENCRYPT_AND_SIGNSIGN_ONLY、或SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT的所有欄位。然後,它使HMAC用加密雜湊函數演算法 (SHA-384) 來簽署規範化。

對稱HMAC簽章會儲存在 AWS 資料庫加密新SDK增至記錄的新欄位 (aws_dbe_foot) 中。

非对称签名算法

用來產生非對稱數位簽章的簽章演算法。

「 AWS 資料庫加密」SDK 序列化材料描述和標記為ENCRYPT_AND_SIGNSIGN_ONLY、或SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT的所有欄位。然後,它使用具有以下細節的橢圓曲線數字簽名算法(ECDSA)來對規範化進行簽名:

非對稱ECDSA簽章會與對稱HMAC簽章一起儲存在aws_dbe_foot欄位中。

ECDSA依預設會包含數位簽章,但不是必要的。

主要承諾

HMAC基於 extract-and-expand 密鑰派生函數(HKDF)用於派生提交密鑰。

  • 使用的哈希函數是 SHA -512

  • 對於擷取步驟:

    • 不使用 salt。根據RFC,將鹽設置為零的字符串。

    • 輸入鍵合材料是鑰圈中的數據鍵。

  • 對於擴展步驟:

    • 輸入虛擬亂數金鑰是來自擷取步驟的輸出。

    • 輸入信息是以大端字節順序排列的字COMMITKEY符串的 UTF -8 編碼字節。

    • 輸出鍵合材料的長度為 256 位元。此輸出被用作提交密鑰。

提交密鑰計算記錄承諾,這是一個明確的 256 位基於 Hash 的消息身份驗證代碼(HMAC)哈希值,在材料描述上。如需將金鑰承諾加入演算法套件的技術說明,請參閱密碼學 ePrint 封存AEADs中的金鑰提交

根據預設, AWS 資料庫加密SDK使用演算法套件,其中包含 AES-GCM、HMAC基礎 extract-and-expand 金鑰衍生函數 (HKDF)、HMAC驗證、ECDSA數位簽章、金鑰承諾和 256 位元加密金鑰。

默認算法套件包括HMAC驗證(對稱簽名)和ECDSA數字簽名(非對稱簽名)。這些簽章會儲存在 AWS 資料庫加密新SDK增至記錄的新欄位 (aws_dbe_foot) 中。ECDSA當授權原則允許一組使用者加密資料,而另一組使用者解密資料時,數位簽章特別有用。

預設演算法套件也會衍生金鑰履約承諾 — 將資料金鑰與記錄相關聯的HMAC雜湊。關鍵承諾值是根據材料描述和提交金鑰HMAC計算得出的。然後,關鍵承諾值會儲存在材料描述中。關鍵承諾確保每個密文解密只能解密為一個純文本。他們通過驗證用作加密算法輸入的數據密鑰來實現這一點。加密時,演算法套件會衍生金鑰承諾。HMAC在解密之前,他們會驗證資料金鑰產生相同的金鑰承諾HMAC。如果沒有,解密呼叫就會失敗。

AES-GCM 沒有ECDSA數字簽名

雖然預設演算法套件可能適用於大多數應用程式,但您可以選擇替代演算法套件。例如,某些信任模型會由沒有ECDSA數位簽章的演算法套件來滿足。僅當加密資料的使用者和解密資料的使用者受到同等信任時,才使用此套件。

所有 AWS 資料庫加密SDK演算法套件都包含HMAC驗證 (對稱簽章)。唯一的區別是,AES-沒有ECDSA數字簽名的GCM算法套件缺乏提供真實性和不可否認性的附加層不對稱簽名。

例如,如果您的金鑰圈、、和中有多個包裝金鑰 wrappingKeyA wrappingKeyBwrappingKeyC,而您使用解密記錄wrappingKeyA,則HMAC對稱簽章會驗證記錄是否已由具有存取權的使用者加密。wrappingKeyA如果您使用預設演算法套件,則會HMACs提供的相同驗證wrappingKeyA,並另外使用ECDSA數位簽章,以確保記錄是由具有的加密權限的使用者加密wrappingKeyA

若要選取AES不含數位簽章的GCM演算法套件,請在您的加密設定中包含下列程式碼片段。

Java

下面的代碼片段指定了AES沒有ECDSA數字簽名的GCM算法套件。如需詳細資訊,請參閱SDK適用於 DynamoDB 的 AWS 資料庫加密中的加密組態

.algorithmSuiteId( DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384)
C# / .NET

下面的代碼片段指定了AES沒有ECDSA數字簽名的GCM算法套件。如需詳細資訊,請參閱SDK適用於 DynamoDB 的 AWS 資料庫加密中的加密組態

AlgorithmSuiteId = DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384