本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
參考資料
我們的用戶端加密程式庫已重新命名為 AWS 資料庫加密 SDK。此開發人員指南仍會提供 DynamoDB Encryption Client 的相關資訊。 |
下列主題提供 AWS Database Encryption 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 數位簽章已停用 - 記錄 ID
-
隨機產生的 256 位元值,可識別記錄。記錄 ID:
-
唯一識別加密的記錄。
-
將材料描述繫結至加密的記錄。
-
- 加密圖例
-
已加密已驗證欄位的序列化描述。Encrypt 圖例用於判斷解密方法應該嘗試解密的欄位。
位元組值 意義 0x65
ENCRYPT_AND_SIGN
0x73
SIGN_ONLY
Encrypt 圖例會依下列方式序列化:
-
依代表其正規路徑的位元組序列進行文字描述。
-
對於每個欄位,請依序附加上述指定的其中一個位元組值,以指出該欄位是否應加密。
-
- 加密內容長度
-
加密內容的長度。它會以 2 位元組數值表示,並解譯為 16 位元的無符號整數。長度上限為 65,535 個位元組。
- 加密內容
-
一組名稱/值對,其中包含任意、非秘密的額外已驗證資料。
啟用 ECDSA 數位簽章時,加密內容會包含金鑰值對
{"aws-crypto-footer-ecdsa-key": Qtxt}
。Qtxt
代表Q
根據 SEC 1 2.0 版壓縮的橢圓曲線點,然後是 base64 編碼。 - 加密的資料金鑰計數
-
加密資料金鑰的數量。它是 1 位元組值,解譯為 8 位元未簽署整數,指定加密資料金鑰的數量。每個記錄中的加密資料金鑰數量上限為 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 keyring 時,此值包含 的 Amazon Resource Name (ARN) AWS KMS key。
- 加密的資料金鑰長度
-
加密資料金鑰的長度。它會以 2 元組數值表示,並解譯為 16 位元的無符號整數,指出包含加密資料金鑰的位元組數量。
- 加密的資料金鑰
-
加密資料金鑰。這是金鑰提供者加密的資料金鑰。
- 記錄承諾
-
不同的 256 位元雜湊型訊息驗證碼 (HMAC) 雜湊,使用遞交金鑰計算所有上述材料描述位元組。
AWS KMS 階層式 keyring 技術詳細資訊
AWS KMS 階層式 keyring 使用不適當的資料金鑰來加密每個欄位,並使用衍生自作用中分支金鑰的唯一包裝金鑰來加密每個資料金鑰。它使用計數器模式中的金鑰衍生
-
16 位元組隨機鹽
-
作用中分支金鑰
-
金鑰提供者識別碼 "aws-kms-hierarchy" 的 UTF-8 編碼
值
階層式 keyring 使用衍生的包裝金鑰,使用 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 編碼金鑰值對