本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
參考資料
我們的客戶端加密庫被重命名為數 AWS 據庫加密SDK。本開發人員指南仍提供 DynamoDB 加密用戶端的相關資訊。 |
下列主題提供 AWS 資料庫加密的技術詳細資料SDK。
材料描述格式
材料描述作為加密記錄的標頭。當您使用「資料 AWS 庫加密」加密和簽署欄位時SDK,加密程式會在組合加密資料時記錄材料描述,並將材料描述儲存在加密程式新增至記錄的新欄位 (aws_dbe_head
) 中。材料描述是可攜式格式化的資料結構,其中包含加密的資料金鑰,以及如何加密和簽署記錄的相關資訊。下表描述形成材料描述的值。位元組依顯示順序附加。
Value | 長度 (位元組) |
---|---|
Version | 1 |
Signatures Enabled | 1 |
Record ID | 32 |
Encrypt Legend | 變數 |
Encryption Context Length | 2 |
Encryption Context | 變數 |
Encrypted Data Key Count | 1 |
Encrypted Data Keys | 變數 |
Record Commitment | 1 |
- 版本
-
此
aws_dbe_head
欄位格式的版本。 - 已啟用簽章
-
編碼是否為此記錄啟用ECDSA數位簽章。
位元組值 意義 0x01
ECDSA啟用數位簽章 (預設) 0x00
ECDSA數位簽章已停用 - 記錄識別碼
-
隨機產生的 256 位元值,可識別記錄。記錄識別碼:
-
唯一識別加密記錄。
-
將材料描述繫結至加密記錄。
-
- 加密圖例
-
已加密驗證欄位的序列化描述。加密圖例用於確定解密方法應嘗試解密哪些字段。
位元組值 意義 0x65
ENCRYPT_AND_SIGN
0x73
SIGN_ONLY
加密圖例序列化如下:
-
按字母順序表示其規範路徑的字節序列。
-
對於每個欄位,依序附加上述指定的其中一個位元組值,以指示該欄位是否應加密。
-
- 加密內容長度
-
加密內容的長度。它會以 2 位元組數值表示,並解譯為 16 位元的無符號整數。最大長度為 65,535 個字節。
- 加密上下文
-
一組名稱-值對,其中包含任意,非秘密的附加驗證數據。
啟用ECDSA數位簽章時,加密內容會包含鍵值配對
{"aws-crypto-footer-ecdsa-key": Qtxt}
。Qtxt
表示根據 SEC1 版本 2.0Q
壓縮,然後以 base64 編碼壓縮的橢圓曲線點。 - 加密資料金鑰計數
-
加密資料金鑰的數量。它是解譯為 8 位元組不帶正負號的整數的 1 位元組值,用於指定加密資料金鑰的數目。每筆記錄中的加密資料金鑰數目上限為 255。
- 加密的資料金鑰
-
加密資料金鑰的序列。序列長度取決於加密資料金鑰的數量與每個加密資料金鑰的長度。序列會包含至少一個加密資料金鑰。
下表將說明每個加密資料金鑰的組成欄位。位元組依顯示順序附加。
加密資料金鑰結構欄位 長度 (位元組) Key Provider ID Length 2 Key Provider ID 變數. 等於前 2 個位元組中指定的值 (金鑰提供者 ID 長度)。 Key Provider Information Length 2 Key Provider Information 變數. 等於前 2 個位元組中指定的值 (金鑰提供者資訊長度)。 Encrypted Data Key Length 2 Encrypted Data Key 變數. 等於前 2 個位元組中指定的值 (加密資料金鑰長度)。 - 金鑰提供者 ID 長度
-
金鑰提供者識別碼的長度。它會以 2 元組數值表示,並解譯為 16 位元的無符號整數,指出包含金鑰提供者 ID 的位元組數量。
- 金鑰提供者 ID
-
金鑰提供者識別碼。它會用來指出加密資料金鑰的提供者,以而且可供擴充。
- 金鑰提供者資訊長度
-
金鑰提供者資訊的長度。它會以 2 元組數值表示,並解譯為 16 位元的無符號整數,指出包含金鑰提供者資訊的位元組數量。
- 金鑰提供者資訊
-
金鑰提供者資訊。它會取決於金鑰提供者。
當您使用 AWS KMS 金鑰圈時,此值會包含. ARN AWS KMS key
- 加密資料金鑰長度
-
加密資料金鑰的長度。它會以 2 元組數值表示,並解譯為 16 位元的無符號整數,指出包含加密資料金鑰的位元組數量。
- 加密資料金鑰
-
加密資料金鑰。它是由金鑰提供者加密的資料金鑰。
- 記錄承諾
-
一個不同的 256 位元雜湊型訊息驗證碼 (HMAC) 雜湊,使用提交金鑰計算在所有先前的材料描述位元組上。
AWS KMS 分層鑰匙圈技術細節
AWS KMS 分層密鑰環使用 unqiue 數據密鑰來加密每個字段,並使用從活動分支密鑰派生的唯一包裝密鑰對每個數據密鑰進行加密。它在計數器模式下使用密鑰派生
-
一個 16 字節的隨機鹽
-
作用中的分支索引鍵
-
金鑰提供者識別碼 "aws-kms-hierarchy」的 UTF -8 編碼
值
階層式金鑰圈會使用衍生的包裝金鑰來加密純文字資料金鑰的副本,使用 AES-GCM -256 與 16 位元組驗證標籤和下列輸入。
-
派生的包裝密鑰被用作 AES-GCM 密鑰
-
數據鍵用作 AES-GCM 消息
-
12 字節的隨機初始化向量(IV)用作 AES-GCM IV
-
包含下列序列化值的其他已驗證資料 (AAD)。
Value 長度 (位元組) 解釋為 "aws-kms-hierarchy" 17 UTF-8 个编码的 分支密鑰標識符 變數 UTF-8 个编码的 分支密鑰版本 16 UTF-8 个编码的 加密內容 變數 UTF-8 個編碼的鍵值對