AWS Database Encryption SDK の仕組み - AWS データベース暗号化 SDK

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

AWS Database Encryption SDK の仕組み

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

AWS Database Encryption SDK は、データベースに保存するデータを保護するために特別に設計されたクライアント側の暗号化ライブラリを提供します。ライブラリには、拡張が可能でまた変更なしで使用できる安全な実装が含まれています。カスタムコンポーネントの定義と使用の詳細については、データベース実装の GitHub リポジトリを参照してください。

このセクションのワークフローでは、 AWS Database Encryption SDK がデータベース内のデータを暗号化、署名、復号化、検証する方法について説明します。これらのワークフローは、抽象的な要素とデフォルト機能を使用した基本的なプロセスを表します。 AWS Database Encryption SDK がデータベース実装とどのように連携するかの詳細については、「データベースの暗号化された内容」トピックを参照してください。

AWS Database Encryption SDK は、エンベロープ暗号化を使用してデータを保護します。各レコードは一意のデータキーで暗号化されます。データキーは、暗号化アクションで ENCRYPT_AND_SIGN とマークされた各フィールドの一意のデータ暗号化キーを導出するために使用されます。その後、データキーのコピーが、指定したラッピングキーによって暗号化されます。暗号化されたレコードを復号するために、 AWS Database Encryption SDK は、指定したラッピングキーを使用して、少なくとも 1 つの暗号化されたデータキーを復号します。その後、暗号文を復号し、プレーンテキストのエントリを返すことができます。

AWS Database Encryption SDK で使用される用語の詳細については、「」を参照してくださいAWS Database Encryption SDK の概念

暗号化および署名

AWS Database Encryption SDK は、データベース内のレコードを暗号化、署名、検証、復号するレコードエンクリプタです。レコードに関する情報と、暗号化して署名するフィールドに関する指示が取り込まれます。指定したラッピングキーから設定された暗号マテリアルマネージャーから、暗号マテリアルとその使用方法に関する指示を取得します。

次のチュートリアルでは、 AWS Database Encryption SDK がデータエントリを暗号化して署名する方法について説明します。

  1. 暗号化マテリアルマネージャーは、 AWS Database Encryption SDK に、1 つのプレーンテキストデータキー 、指定されたラッピングキー データキーによって暗号化されたデータキーのコピー 、MAC キー という一意のデータ暗号化キーを提供します。 ラッピングキー

    注記

    複数のラッピングキーでデータキーを暗号化できます。各ラッピングキーは、データキーの個別のコピーを暗号化します。 AWS Database Encryption SDK は、暗号化されたすべてのデータキーをマテリアルの説明 に保存します。 AWS Database Encryption SDK は、マテリアルの説明を格納するレコードに新しいフィールド (aws_dbe_head) を追加します。

    MAC キーは、データキーの暗号化された各コピーについて導出されます。MAC キーは、マテリアルの説明には格納されません。代わりに、復号メソッドは、ラッピングキーを使用して MAC キーを再度導出します。

  2. 暗号化メソッドは、指定した暗号化アクションENCRYPT_AND_SIGN とマークされた各フィールドを暗号化します。

  3. 暗号化メソッドは、データキーから commitKey を導出し、それを使用してキーコミットメントの値を生成して、その後にデータキーを破棄します。

  4. 暗号化メソッドは、マテリアルの説明をレコードに追加します。マテリアルの説明には、暗号化されたデータキーと、暗号化されたレコードに関する他の情報が含まれます。マテリアルの説明に含まれる情報の詳細なリストについては、「マテリアルの説明の形式」を参照してください。

  5. 暗号化メソッドは、ステップ 1 で返された MAC キーを使用して、マテリアルの説明、暗号化コンテキスト 、および暗号化アクションSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXTENCRYPT_AND_SIGN、、SIGN_ONLYまたは とマークされた各フィールドの正規化に関するハッシュベースのメッセージ認証コード (HMAC) 値を計算します。HMAC の値は、暗号化メソッドがレコードに追加する新しいフィールド (aws_dbe_foot) に格納されます。

  6. 暗号化メソッドは、マテリアルの説明、暗号化コンテキスト、および ENCRYPT_AND_SIGN、、または とマークされた各フィールドの正規化に基づいて ECDSA 署名を計算SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXTSIGN_ONLY、ECDSA 署名を aws_dbe_footフィールドに保存します。

    注記

    ECDSA 署名はデフォルトで有効になっていますが、必須ではありません。

  7. 暗号化メソッドは、暗号化および署名されたレコードをデータベースに格納します。

復号および検証

  1. 暗号マテリアルマネージャー (CMM) は、プレーンテキストのデータキーおよび関連付けられた MAC キーを含む、マテリアルの説明に格納されている復号マテリアルを復号メソッドに提供します。

    1. CMM は、指定されたキーリング内のラッピングキーを使用して暗号化されたデータキーを復号し、プレーンテキストのデータキーを返します。

  2. 復号メソッドは、マテリアルの説明内のキーコミットメントの値を比較および検証します。

  3. 復号メソッドは、署名フィールド内の署名を検証します。

    定義した許可された認証されていないフィールドのリストからENCRYPT_AND_SIGN、、SIGN_ONLY、または とマークされているフィールドを識別SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXTします。 Allowed unsigned attributes復号メソッドは、ステップ 1 で返された MAC キーを使用して、ENCRYPT_AND_SIGN、、SIGN_ONLYまたは とマークされたフィールドの HMAC 値を再計算して比較しますSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT。その後、暗号化コンテキストに格納されているパブリックキーを使用して ECDSA 署名を検証します。

  4. 復号メソッドは、プレーンテキストデータキーを使用して、ENCRYPT_AND_SIGN とマークされた各値を復号します。その後、 AWS Database Encryption SDK はプレーンテキストのデータキーを破棄します。

  5. 復号方法は、プレーンテキストレコードを返します。