メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

クライアント側の暗号化を使用したデータの保護

クライアント側の暗号化では、Amazon S3 に送信する前にデータが暗号化されます。データ暗号化キーを使用する場合、次の 2 種類の方法があります。

  • AWS KMS で管理されたカスタマーマスターキーを使用します。

  • クライアント側のマスターキーを使用します。

オプション 1: AWS KMS で管理されたカスタマーマスターキー (CMK) の使用

クライアント側のデータ暗号化に、AWS KMS で管理されたカスタマーマスターキーを使用する場合、Amazon S3 暗号化クライアント(たとえば、AWS SDK for Java の AmazonS3EncryptionClient)への暗号化キーの提供について考慮する必要はありません。代わりに、AWS KMS カスタマーマスターキー ID (CMK ID) だけを提供すれば、残りの作業はクライアントが行います。しくみは、次のようになっています。

  • オブジェクトをアップロードするとき – クライアントは CMK ID を使用して、まず、オブジェクトデータの暗号化に使用できるキーのリクエストを AWS KMS に送信します。これに応じて、AWS KMS はランダムに生成されたデータ暗号化キーを返します。実際には、AWS KMS は次の 2 つのバージョンのデータ暗号化キーを返します。

    • クライアントがオブジェクトデータの暗号化に使用するプレーンテキストバージョン。

    • クライアントが Amazon S3 にオブジェクトメタデータとしてアップロードする、同じデータ暗号化キーの暗号 BLOB。

    注記

    クライアントは、アップロードするオブジェクトごとに一意のデータ暗号化キーを取得します。

    実例については、「例: クライアント側の暗号化(オプション 1: AWS KMS で管理されたカスタマーマスターキーの使用(AWS SDK for Java))」を参照してください。

  • オブジェクトをダウンロードするとき – クライアントは、まず、暗号化されたオブジェクトと、オブジェクトメタデータとして格納されているデータ暗号化キーの暗号 BLOB バージョンを Amazon S3 からダウンロードします。次に、オブジェクトデータを復号できるように、AWS KMS に暗号 BLOB を送信して、同じキーのプレーンテキストバージョンを取得します。

AWS KMS の詳細については、「AWS Key Management Service とは何ですか?」 (AWS Key Management Service Developer Guide) を参照してください。

オプション 2: クライアント側のマスターキーの使用

このセクションでは、クライアント側のデータ暗号化プロセスでクライアント側のマスターキーを提供する方法を示します。

重要

クライアント側のマスターキーと暗号化されていないデータは AWS には送信されません。このため、暗号化キーは安全に管理することが重要です。キーを紛失すると、データを復号できなくなります。

しくみは、次のようになっています。

  • オブジェクトをアップロードするとき – Amazon S3 の暗号化クライアント(たとえば、AWS SDK for Java を使用している場合は AmazonS3EncryptionClient)にクライアント側のマスターキーを提供します。クライアントは、ランダムに生成するデータ暗号化キーを暗号化するためだけに、このマスターキーを使用します。このプロセスの動作は次のようになります。

    1. Amazon S3 暗号化クライアントは、1 回限りの使用の対称キー (つまり、データ暗号化キーまたはデータキー) をローカルに生成します。このデータキーを使用して、1 つの S3 オブジェクトのデータを暗号化します(クライアントは、オブジェクトごとに個別のデータキーを生成します)。

    2. クライアントは、提供されたマスターキーを使用して、データ暗号化キーを暗号化します。

      クライアントは、暗号化されたデータキーとその素材の説明を、オブジェクトメタデータの一部としてアップロードします。素材の説明は、クライアントが後で復号にどのクライアント側のマスターキーを使用すればよいかを判断する際に役立ちます(オブジェクトをダウンロードすると、クライアントが復号します)。

    3. その後、クライアントは暗号化されたデータを Amazon S3 にアップロードし、デフォルトでは暗号化されたデータキーもオブジェクトメタデータ(x-amz-meta-x-amz-key)として Amazon S3 に保存します。

  • オブジェクトをダウンロードするとき – クライアントは、まず、Amazon S3 から暗号化されたオブジェクトとメタデータをダウンロードします。クライアントは、メタデータ内の素材の説明を使用して、まず、暗号化されたデータキーの復号にどのマスターキーを使用するかを判断します。そのマスターキーを使用して、データキーを復号し、それを使用してオブジェクトを復号します。

提供するクライアント側のマスターキーは、対称キーにすることも、パブリック/プライベートのキーペアにすることもできます。例については、「例: クライアント側の暗号化(オプション 2: クライアント側のマスターキーの使用(AWS SDK for Java))」を参照してください。

詳細については、「AWS SDK for Java および Amazon S3 によるクライアント側のデータ暗号化」の記事を参照してください。

以下の AWS SDK はクライアント側の暗号化をサポートしています。