

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

# 參考資料
<a name="reference"></a>


****  

|  | 
| --- |
| 我們的用戶端加密程式庫已重新命名為 AWS 資料庫加密 SDK。此開發人員指南仍提供有關 [DynamoDB 加密用戶端](legacy-dynamodb-encryption-client.md)的資訊。 | 

下列主題提供 AWS 資料庫加密 SDK 的技術詳細資訊。

## 材料描述格式
<a name="material-description-format"></a>

[材料描述](concepts.md#material-description)做為加密記錄的 標頭。當您使用 AWS 資料庫加密 SDK 加密和簽署欄位時，加密程式會在組合密碼編譯資料時記錄資料描述，並將資料描述存放在加密程式新增至記錄的新欄位中 (`aws_dbe_head`)。材料描述是一種可攜式格式化資料結構，其中包含加密的資料金鑰，以及記錄加密和簽署方式的相關資訊。下表說明組成物料描述的值。位元組依顯示順序附加。


| Value | 以位元組為單位的長度 | 
| --- | --- | 
| [Version](#format-version) | 1 | 
| [Signatures Enabled](#format-signatures) | 1 | 
| [Record ID](#format-recordID) | 32 | 
| [Encrypt Legend](#format-encrypt-legend) | 變數 | 
| [Encryption Context Length](#format-encrypt-context-length) | 2 | 
| [Encryption Context](#format-encrypt-context) | 變數 | 
| [Encrypted Data Key Count](#format-data-key-count) | 1 | 
| [Encrypted Data Keys](#format-data-keys) | 變數 | 
| [Record Commitment](#format-commitment) | 1 | 

**版本**  
`aws_dbe_head` 此欄位格式的版本。

**已啟用簽章**  
編碼此記錄是否已啟用 ECDSA 數位簽章。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/database-encryption-sdk/latest/devguide/reference.html)

**記錄 ID**  
隨機產生的 256 位元值，可識別記錄。記錄 ID：  
+ 唯一識別加密的記錄。
+ 將材料描述繫結至加密的記錄。

**加密圖例**  
已加密已驗證欄位的序列化描述。Encrypt 圖例用於判斷解密方法應嘗試解密的欄位。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/database-encryption-sdk/latest/devguide/reference.html)
Encrypt 圖例會序列化，如下所示：  

1. 以文字表示其正式路徑的位元組序列。

1. 對於每個欄位，依序附加上述指定的其中一個位元組值，以指出該欄位是否應加密。

**加密內容長度**  
加密內容的長度。它會以 2 位元組數值表示，並解譯為 16 位元的無符號整數。長度上限為 65，535 個位元組。

**加密內容**  
一組名稱/值對，其中包含任意、非秘密的額外已驗證資料。  
啟用 [ECDSA 數位簽章](concepts.md#digital-sigs)時，加密內容會包含金鑰值對 `{"aws-crypto-footer-ecdsa-key": Qtxt}`。 `Qtxt`代表`Q`根據 [SEC 1 2.0 版](https://www.secg.org/sec1-v2.pdf)壓縮的橢圓曲線點，然後是 base64 編碼。

**加密的資料金鑰計數**  
加密資料金鑰的數量。它是 1 位元組的值，解譯為 8 位元的無符號整數，指定加密資料金鑰的數量。每個記錄中的加密資料金鑰數目上限為 255。

**加密的資料金鑰**  
加密資料金鑰的序列。序列長度取決於加密資料金鑰的數量與每個加密資料金鑰的長度。序列會包含至少一個加密資料金鑰。  
下表將說明每個加密資料金鑰的組成欄位。位元組依顯示順序附加。    
**加密資料金鑰結構**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/database-encryption-sdk/latest/devguide/reference.html)  
**金鑰提供者 ID 長度**  
金鑰提供者識別碼的長度。它會以 2 元組數值表示，並解譯為 16 位元的無符號整數，指出包含金鑰提供者 ID 的位元組數量。  
**金鑰提供者 ID**  
金鑰提供者識別碼。它會用來指出加密資料金鑰的提供者，以而且可供擴充。  
**金鑰提供者資訊長度**  
金鑰提供者資訊的長度。它會以 2 元組數值表示，並解譯為 16 位元的無符號整數，指出包含金鑰提供者資訊的位元組數量。  
**金鑰提供者資訊**  
金鑰提供者資訊。它會取決於金鑰提供者。  
當您使用 AWS KMS keyring 時，此值包含 的 Amazon Resource Name (ARN) AWS KMS key。  
**加密的資料金鑰長度**  
加密資料金鑰的長度。它會以 2 元組數值表示，並解譯為 16 位元的無符號整數，指出包含加密資料金鑰的位元組數量。  
**加密的資料金鑰**  
加密資料金鑰。這是金鑰提供者加密的資料金鑰。

**記錄承諾**  
不同的 256 位元雜湊型訊息驗證碼 (HMAC) 雜湊，使用遞交金鑰計算所有上述材料描述位元組。

## AWS KMS 階層式 keyring 技術詳細資訊
<a name="hierarchical-keyring-details"></a>

[AWS KMS 階層式 keyring](use-hierarchical-keyring.md) 使用不必要資料金鑰來加密每個欄位，並使用衍生自作用中分支金鑰的唯一包裝金鑰來加密每個資料金鑰。它使用計數器模式中的[金鑰衍生](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-108r1.pdf)搭配 HMAC SHA-256 的虛擬隨機函數，來衍生具有下列輸入的 32 位元組包裝金鑰。
+ 16 位元組隨機 salt
+ 作用中分支金鑰
+ 金鑰提供者識別符 "aws-kms-hierarchy" [的 UTF-8 編碼](https://en.wikipedia.org/wiki/UTF-8)值

階層式 keyring 使用衍生的包裝金鑰，使用 AES-GCM-256 搭配 16 位元組身分驗證標籤和下列輸入來加密純文字資料金鑰的副本。
+ 衍生的包裝金鑰會用作 AES-GCM 密碼金鑰
+ 資料金鑰會用作 AES-GCM 訊息
+ 12 位元組隨機初始化向量 (IV) 用作 AES-GCM IV
+ 包含下列序列化值的其他已驗證資料 (AAD)。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/database-encryption-sdk/latest/devguide/reference.html)