

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

# クライアント側の暗号化
<a name="client-side-encryption"></a>

[AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html) には、KMS キーを使用してエンベロープ暗号化を実行するための API オペレーションが含まれています。推奨事項と使用方法の詳細については、[関連ドキュメント](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/)を参照してください。クライアントアプリケーションは、 AWS Encryption SDK を使用してエンベロープ暗号化を実行できます AWS KMS。

```
// Instantiate the SDK
final AwsCrypto crypto = new AwsCrypto();
// Set up the KmsMasterKeyProvider backed by the default credentials
final KmsMasterKeyProvider prov = new KmsMasterKeyProvider(keyId); 
// Do the encryption
final byte[] ciphertext = crypto.encryptData(prov, message);
```

クライアントアプリケーションは、次の手順で実行できます。

1. 新しいデータキーのリクエストが KMS キーの下で行われます。暗号化されたデータキーと、データキーのプレーンテキストバージョンが返されます。

1. 内では AWS Encryption SDK、プレーンテキストのデータキーを使用してメッセージを暗号化します。次に、プレーンテキストのデータキーがメモリから削除されます。

1. 暗号化されたデータキーと暗号化されたメッセージは、結合されて単一の暗号テキストのバイト配列になります。

![AWS Encryption SDK エンベロープ暗号化。](http://docs.aws.amazon.com/ja_jp/kms/latest/cryptographic-details/images/sdk-envelope-encryption.png)


エンベロープ暗号化されたメッセージは、復号化機能を使用して復号化され、最初に暗号化されたメッセージが取得できます。

```
final AwsCrypto crypto = new AwsCrypto();
final KmsMasterKeyProvider prov = new KmsMasterKeyProvider(keyId);
// Decrypt the data
final CryptoResult<byte[], KmsMasterKey> res = crypto.decryptData(prov, ciphertext);
// We need to check the KMS key to ensure that the 
// assumed key was used
if (!res.getMasterKeyIds().get(0).equals(keyId)) {
     throw new IllegalStateException("Wrong key id!");
}
byte[] plaintext = res.getResult();
```

1. は、エンベロープで暗号化されたメッセージを AWS Encryption SDK 解析して暗号化されたデータキーを取得し、 にデータキーの復号 AWS KMS 化をリクエストします。

1. は、プレーンテキストのデータキー AWS Encryption SDK を受け取ります AWS KMS。

1. 次に、データキーを使用してメッセージを復号化し、元のプレーンテキストを返します。

![AWS Encryption SDK エンベロープ復号。](http://docs.aws.amazon.com/ja_jp/kms/latest/cryptographic-details/images/sdk-envelope-decryption.png)
