

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

# AWS Database Encryption SDK でサポートされているアルゴリズムスイート
<a name="supported-algorithms"></a>


****  

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

*アルゴリズムスイート*は、暗号化アルゴリズムと関連する値の集合です。暗号化システムはアルゴリズム実装を使用して暗号文を生成します。

 AWS Database Encryption SDK は、アルゴリズムスイートを使用してデータベース内のフィールドを暗号化して署名します。サポートされているすべてのアルゴリズムスイートは、AES-GCM と呼ばれる Galois/Counter Mode (GCM) を使用した Advanced Encryption Standard (AES) アルゴリズムを使用して raw データを暗号化します。 AWS Database Encryption SDK は 256 ビットの暗号化キーをサポートしています。認証タグの長さは常に 16 バイトです。


**AWS データベース暗号化 SDK アルゴリズムスイート**  

| アルゴリズム | 暗号化アルゴリズム | データキーの長さ (ビット) | キー導出アルゴリズム | 対称署名アルゴリズム | 対称署名アルゴリズム | キーコミットメント | 
| --- | --- | --- | --- | --- | --- | --- | 
| デフォルト | AES-GCM | 256 | SHA-512 を使用する HKDF | HMAC-SHA-384 | P-384 および SHA-384 を使用する ECDSA | SHA-512 を使用する HKDF | 
| ECDSA デジタル署名を使用しない AES-GCM | AES-GCM | 256 | SHA-512 を使用する HKDF | HMAC-SHA-384 | なし | SHA-512 を使用する HKDF | 

**暗号化アルゴリズム**  
使用する暗号化アルゴリズムの名前とモード。 AWS Database Encryption SDK のアルゴリズムスイートは、Galois/Counter Mode (GCM) で Advanced Encryption Standard (AES) アルゴリズムを使用します。  


**データキーの長さ**  
[データキー](concepts.md#data-key)の長さ (ビット単位)。 AWS Database Encryption SDK は 256 ビットのデータキーをサポートしています。データキーは、HMAC extract-and-expandキー取得関数 (HKDF) への入力として使用されます。HKDF の出力は、暗号化アルゴリズムのデータ暗号化キーとして使用されます。

**キー導出アルゴリズム**  
データ暗号化キーを取得するために使用される、HMAC ベースの抽出および展開キー取得関数 (HKDF)。 AWS Database Encryption SDK は、[RFC 5869 で定義された HKDF ](https://tools.ietf.org/html/rfc5869)を使用します。  
+ 使用されるハッシュ関数は SHA-512 です
+ 抽出ステップの場合
  + ソルトは使用されません。RFC の場合、ソルトはゼロの文字列に設定されます。
  + 入力キーマテリアルは、キー[リングのデータキー](concepts.md#keyring-concept)です。
+ 展開ステップの場合
  + 入力疑似ランダムキーは抽出ステップからの出力です。
  + キーラベルは、ビッグエンディアンバイト順序の `DERIVEKEY` 文字列を UTF-8 でエンコードしたバイトです。
  + 入力情報は、アルゴリズム ID とキー ラベルの連結です (この順序)。
  + 出力キーマテリアルの長さは**データキーの長さ**です。この出力は、暗号化アルゴリズムのデータ暗号化キーとして使用されます。

**対称署名アルゴリズム**  
対称署名の生成に使用されるハッシュベースのメッセージ認証コード (HMAC) アルゴリズム。サポートされているすべてのアルゴリズムスイートには、HMAC 検証が含まれています。  
 AWS Database Encryption SDK は、マテリアルの説明と、`ENCRYPT_AND_SIGN`、、`SIGN_ONLY`または とマークされたすべてのフィールドをシリアル化します`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`。次に、暗号化ハッシュ関数アルゴリズム (SHA-384) で HMAC を使用して正規化に署名します。  
対称 HMAC 署名は、 AWS Database Encryption SDK がレコードに追加する新しいフィールド (`aws_dbe_foot`) に保存されます。

**対称署名アルゴリズム**  
非対称デジタル署名を生成するために使用される署名アルゴリズム。  
 AWS Database Encryption SDK は、マテリアルの説明と、`ENCRYPT_AND_SIGN`、、`SIGN_ONLY`または とマークされたすべてのフィールドをシリアル化します`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`。次に、楕円曲線デジタル署名アルゴリズム (ECDSA) を以下の詳細とともに使用して正規化に署名します。  
+ 使用される楕円曲線は、デジタル署名標準 (DSS) (FIPS PUB 186-4) で定義されている P-384 です。 [http://doi.org/10.6028/NIST.FIPS.186-4](http://doi.org/10.6028/NIST.FIPS.186-4)
+ 使用されるハッシュ関数は SHA-384 です。
非対称 ECDSA 署名は、 `aws_dbe_foot`フィールドに対称 HMAC 署名とともに保存されます。  
ECDSA デジタル署名はデフォルトで含まれていますが、必須ではありません。

**キーコミットメント**  
コミットキーの取得に使用される HMAC extract-and-expandキー取得関数 (HKDF)。  
+ 使用されるハッシュ関数は SHA-512 です
+ 抽出ステップの場合
  + ソルトは使用されません。RFC の場合、ソルトはゼロの文字列に設定されます。
  + 入力キーマテリアルは、キー[リングのデータキー](concepts.md#keyring-concept)です。
+ 展開ステップの場合
  + 入力疑似ランダムキーは抽出ステップからの出力です。
  + 入力情報は、`COMMITKEY`文字列の UTF-8-encodedされたバイトをビッグエンディアンバイト順で表したものです。
  + 出力キーマテリアルの長さは 256 ビットです。この出力はコミットキーとして使用されます。
コミットキーは、[マテリアルの説明](reference.md#material-description-format)に対する[レコードコミットメント](reference.md#format-commitment)、つまり個別の 256 ビット Hash-Based Message Authentication Code (HMAC) ハッシュを計算します。アルゴリズムスイートへのキーコミットメントの追加に関する技術的な説明については、Cryptology ePrint Archiveの「[Key Committing AEADs](https://eprint.iacr.org/2020/1153)」を参照してください。

## デフォルトのアルゴリズムスイート
<a name="recommended-algorithms"></a>

デフォルトでは、 AWS Database Encryption SDK は、AES-GCM、HMAC extract-and-expandキー取得関数 (HKDF)、HMAC 検証、ECDSA デジタル署名、キーコミットメント、および 256 ビット暗号化キーを備えたアルゴリズムスイートを使用します。

デフォルトのアルゴリズムスイートには、HMAC 検証 (対称署名) と [ECDSA デジタル署名](concepts.md#digital-sigs) (非対称署名) が含まれます。これらの署名は、 AWS Database Encryption SDK がレコードに追加する新しいフィールド (`aws_dbe_foot`) に保存されます。ECDSA デジタル署名は、認可ポリシーで 1 つのユーザーのセットにデータの暗号化を許可し、別のユーザーのセットにデータの復号を許可する場合に特に便利です。

デフォルトのアルゴリズムスイートでは、[データキーをレコードに結び付ける HMAC ハッシュであるキーコミットメント](concepts.md#key-commitment)も取得されます。キーコミットメント値は、マテリアルの説明とコミットキーから計算された HMAC です。その後、キーコミットメントの値は、マテリアルの説明に格納されます。キーのコミットメントにより、各暗号文は 1 つのプレーンテキストのみに確実に復号されます。これは、暗号化アルゴリズムへの入力として使用されるデータキーを検証することによって行います。暗号化時に、アルゴリズムスイートはキーコミットメント HMAC を取得します。復号する前に、データキーが同じキーコミットメント HMAC を生成することを検証します。一致しない場合、復号呼び出しは失敗します。

## ECDSA デジタル署名を使用しない AES-GCM
<a name="other-algorithms"></a>

デフォルトのアルゴリズムスイートはほとんどのアプリケーションに適していますが、代替アルゴリズムスイートを選択できます。たとえば、一部の信頼モデルは、ECDSA デジタル署名のないアルゴリズムスイートによって満たされます。このスイートは、データを暗号化するユーザーとデータを復号するユーザーが等しく信頼されている場合にのみ使用します。

すべての AWS Database Encryption SDK アルゴリズムスイートには、HMAC 検証 (対称署名) が含まれています。唯一の違いは、ECDSA デジタル署名のない AES-GCM アルゴリズムスイートには、信頼性と否認のない追加のレイヤーを提供する非対称署名がないことです。

たとえば、キーリング 、、`wrappingKeyA``wrappingKeyB`および に複数のラッピングキーがあり`wrappingKeyC`、 を使用してレコードを復号する場合`wrappingKeyA`、HMAC 対称署名は、レコードが にアクセスできるユーザーによって暗号化されたことを確認します`wrappingKeyA`。デフォルトのアルゴリズムスイートを使用した場合、HMACs の同じ検証を提供し`wrappingKeyA`、さらに ECDSA デジタル署名を使用して、レコードが の暗号化アクセス許可を持つユーザーによって暗号化されたことを確認します`wrappingKeyA`。

デジタル署名のない AES-GCM アルゴリズムスイートを選択するには、暗号化設定に次のスニペットを含めます。

------
#### [ Java ]

次のスニペットは、ECDSA デジタル署名のない AES-GCM アルゴリズムスイートを指定します。詳細については、「[AWS Database Encryption SDK for DynamoDB の暗号化設定](ddb-java-using.md#ddb-config-encrypt)」を参照してください。

```
.algorithmSuiteId(
    DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384)
```

------
#### [ C\$1 / .NET ]

次のスニペットは、ECDSA デジタル署名のない AES-GCM アルゴリズムスイートを指定します。詳細については、「[AWS Database Encryption SDK for DynamoDB の暗号化設定](ddb-net-using.md#ddb-net-config-encrypt)」を参照してください。

```
AlgorithmSuiteId = DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384
```

------
#### [ Rust ]

次のスニペットは、ECDSA デジタル署名のない AES-GCM アルゴリズムスイートを指定します。詳細については、「[AWS Database Encryption SDK for DynamoDB の暗号化設定](ddb-rust-using.md#ddb-rust-config-encrypt)」を参照してください。

```
.algorithm_suite_id(
    DbeAlgorithmSuiteId::AlgAes256GcmHkdfSha512CommitKeyEcdsaP384SymsigHmacSha384,
)
```

------