

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# どのフィールドが暗号化および署名されますか?
<a name="DDB-encrypted-and-signed"></a>


****  

|  | 
| --- |
| クライアント側の暗号化ライブラリの名前が AWS Database Encryption SDK に変更されました。このデベロッパーガイドでは、引き続き [DynamoDB Encryption Client](legacy-dynamodb-encryption-client.md) に関する情報を提供します。 | 

 AWS Database Encryption SDK for DynamoDB は、特に Amazon DynamoDB アプリケーション用に設計されたクライアント側の暗号化ライブラリです。Amazon DynamoDB は、項目のコレクションである[テーブル](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.TablesItemsAttributes)にデータを格納します。各*項目*は、*属性*の集合です。各属性には名前と値があります。 AWS Database Encryption SDK for DynamoDB は、属性の値を暗号化します。次に、属性に対する署名を計算します。暗号化される属性値、および署名に含めるか指定できます。

暗号化は、属性値の機密保持を保護します。署名は、署名されたすべての属性とその相互の関係を保全し、認証を提供します。これにより、属性の追加や削除、暗号化された値の別の値への置換など、項目全体への不正な変更を検出することができます。

暗号化された項目では、テーブル名、すべての属性名、暗号化していない属性値、プライマリキー (パーティションキーとソートキー) 属性の名前と値、属性タイプなど、一部のデータはプレーンテキストで残ります。これらのフィールドに機密データを保存しないでください。

 AWS Database Encryption SDK for DynamoDB の仕組みの詳細については、「」を参照してください[AWS Database Encryption SDK の仕組み](how-it-works.md)。

**注記**  
 AWS Database Encryption SDK for DynamoDB トピックの*属性アクション*に関するすべての言及は、[暗号化アクション](concepts.md#crypt-actions)を指します。

**Topics**
+ [暗号化の属性値](#encrypt-attribute-values)
+ [項目の署名](#sign-the-item)

## 暗号化の属性値
<a name="encrypt-attribute-values"></a>

 AWS Database Encryption SDK for DynamoDB は、指定した属性の値 (属性名またはタイプではありません) を暗号化します。どの属性値が暗号化されているかを確認するには、[属性アクション](concepts.md#crypt-actions)を使用します。

たとえば、この項目には `example` および `test` 属性が含まれます。

```
'example': 'data',
'test': 'test-value',
...
```

`example` 属性を暗号化し、`test` 属性を暗号化しない場合、結果は次のようになります。暗号化された `example` 属性値は、文字列ではなくバイナリデータです。

```
'example': Binary(b"'b\x933\x9a+s\xf1\xd6a\xc5\xd5\x1aZ\xed\xd6\xce\xe9X\xf0T\xcb\x9fY\x9f\xf3\xc9C\x83\r\xbb\\"),
'test': 'test-value'
...
```

各項目のプライマリキー属性 (パーティションキーおよびソートキー) を使用して DynamoDB はテーブル内の項目を検索するため、それらの属性はプレーンテキストのままである必要があります。署名は必要ですが、暗号化の必要はありません。

 AWS Database Encryption SDK for DynamoDB は、プライマリキー属性を識別し、その値が署名されているが暗号化されていないことを確認します。また、プライマリキーを特定してそれを暗号化しようとすると、クライアントは例外をスローします。

クライアントは、項目に追加する新しい属性 (`aws_dbe_head`) に[マテリアルの説明](concepts.md#material-description)を格納します。マテリアルの説明は、項目がどのように暗号化および署名されたかを説明するものです。クライアントは、この情報を使用して項目の検証と復号を行います。マテリアルの説明を格納するフィールドは暗号化されません。

## 項目の署名
<a name="sign-the-item"></a>

指定された属性値を暗号化した後、 AWS Database Encryption SDK for DynamoDB は、マテリアルの説明、[暗号化コンテキスト](concepts.md#encryption-context)、および[属性アクション](concepts.md#crypt-actions)`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`で `ENCRYPT_AND_SIGN`、`SIGN_ONLY`、または とマークされた各フィールドの正規化にわたって、ハッシュベースのメッセージ認証コード (HMACs) と[デジタル署名](concepts.md#digital-sigs)を計算します。ECDSA 署名はデフォルトで有効になっていますが、必須ではありません。クライアントは、項目に追加する新しい属性 (`aws_dbe_foot`) に HMAC と署名を格納します。