

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

# DynamoDB 加密用戶端的運作方式
<a name="DDBEC-legacy-how-it-works"></a>

**注意**  
我們的用戶端加密程式庫已[重新命名為 AWS 資料庫加密 SDK](DDBEC-rename.md)。下列主題提供有關適用於 Java 的 DynamoDB 加密用戶端 1.*x*-2.*x* 版和適用於 Python 的 DynamoDB 加密用戶端 1.*x*-3.*x* 版的資訊。如需詳細資訊，請參閱[AWS 資料庫加密 SDK for DynamoDB 版本支援](legacy-dynamodb-encryption-client.md#legacy-support)。

DynamoDB 加密用戶端專為保護您存放在 DynamoDB 中的資料而設計。程式庫包括您可以擴展或以原狀使用的安全實作。再者，大多數元素是由摘要元素表示，所以您可建立和使用相容的自訂元件。

**加密並簽署資料表項目**

DynamoDB Encryption Client 的核心是一個*項目加密程式*，可加密、簽署、驗證和解密資料表項目。它會接受資料表項目相關資訊，以及要加密並簽署項目的相關指示。其將從您選取及設定的[密碼編譯資料提供者](DDBEC-legacy-concepts.md#concept-material-provider)取得加密資料，以及該項資料使用方式的指示。

下圖顯示此程序的高階檢視。

![在 DynamoDB 加密用戶端中加密和簽署項目](http://docs.aws.amazon.com/zh_tw/database-encryption-sdk/latest/devguide/images/arch-encrypt.png)


若要加密和簽署資料表項目，DynamoDB 加密用戶端需要：
+ **資料表的相關資訊。 **它會從您提供的 [DynamoDB 加密內容](concepts.md#encryption-context)取得資料表的相關資訊。有些協助程式會從 DynamoDB 取得必要資訊，並為您建立 DynamoDB 加密內容。
**注意**  
*DynamoDB 加密用戶端*中的 DynamoDB 加密內容與 AWS Key Management Service (AWS KMS) 和 中的*加密內容*無關 AWS Encryption SDK。
+ **哪些屬性要加密並簽署。**其將從您提供的[屬性動作](DDBEC-legacy-concepts.md#legacy-attribute-actions)取得這項資訊。
+ **加密資料，包括加密金鑰和簽署金鑰。**其將從您選取及設定的[密碼編譯資料提供者](DDBEC-legacy-concepts.md#concept-material-provider) (CMP) 取得這些資料。
+ **加密並簽署項目的指示**。CMP 會將可供使用加密資料 (包括加密和簽署演算法) 的指示新增至[實際資料描述](DDBEC-legacy-concepts.md#legacy-material-description)。

[項目加密程式](DDBEC-legacy-concepts.md#item-encryptor)會使用上述所有元素來加密並簽署項目。項目加密程式也會將兩個屬性新增至此項目：包含加密和簽署指示 (實際資料描述) 的[資料描述屬性](DDBEC-legacy-concepts.md#legacy-material-description)，以及包含簽章的屬性。您可直接與項目加密程式互動，或使用為您與項目加密程式互動的協助程式功能來實作安全的預設行為。

結果是包含已加密並簽署之資料的 DynamoDB 項目。

**驗證並解密資料表項目**

如下圖所示，這些元件也會一起運作來驗證並解密項目。

![驗證和解密 DynamoDB 加密用戶端中的項目](http://docs.aws.amazon.com/zh_tw/database-encryption-sdk/latest/devguide/images/arch-decrypt.png)


為了驗證和解密項目，DynamoDB 加密用戶端需要相同的元件、具有相同組態的元件，或專為解密項目而設計的元件，如下所示：
+ [DynamoDB 加密內容](concepts.md#encryption-context)中**資料表的相關資訊**。
+ **要驗證和解密哪些屬性。**其將從[屬性動作](DDBEC-legacy-concepts.md#legacy-attribute-actions)取得這項資訊。
+ **解密資料，包括驗證和加密金鑰**，來自您選取和設定的[密碼編譯資料提供者](DDBEC-legacy-concepts.md#concept-material-provider) (CMP)。

  已加密的項目不包含用來進行加密的 CMP 相關記錄。您必須提供相同的 CMP、具有相同組態的 CMP，或設計用來解密項目的 CMP。
+ **如何加密並簽署項目的相關資訊**，包括加密和簽署演算法。用戶端會從項目中的[資料描述屬性](DDBEC-legacy-concepts.md#legacy-material-description)取得這些資訊。

[項目加密程式](DDBEC-legacy-concepts.md#item-encryptor)會使用上述所有元素來驗證並解密項目。此外，它不會移除資料描述和簽章屬性。結果是純文字 DynamoDB 項目。