翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Encryption SDK for JavaScript 例
以下の例では、 AWS Encryption SDK for JavaScript を使用してデータの暗号化と復号を行う方法を示します。
の使用例については、 のaws-encryption-sdk-javascriptclient-browser
モジュールや client-node
モジュールのインストール時にはインストールされません。
詳しいサンプルコードについては、ノードの場合は kms_simple.ts
AWS KMS キーリングによるデータの暗号化
次の例は、 AWS Encryption SDK for JavaScript を使用して短い文字列またはバイト配列を暗号化および復号する方法を示しています。
この例では、 を使用してデータAWS KMS キー AWS KMS key を生成および暗号化するキーリングの一種であるキーリング を使用しています。の作成については AWS KMS key、「 AWS Key Management Service デベロッパーガイド」の「キーの作成」を参照してください。 AWS KMS キーリング AWS KMS keys 内の を識別する方法については、「」を参照してください。 キーリング AWS KMS keys での AWS KMS 識別
- ステップ 1: コミットメントポリシーを設定します。
-
のバージョン 1.7.x 以降では AWS Encryption SDK for JavaScript、 AWS Encryption SDK クライアントをインスタンス化する新しい
buildClient
関数を呼び出すときに、コミットメントポリシーを設定できます。buildClient
関数は、コミットメントポリシーを表す列挙値を取ります。更新されたencrypt
関数とdecrypt
関数が返されて、暗号化および復号化時にコミットメントポリシーが適用されます。次の例では、
buildClient
関数を使用してデフォルトのコミットメントポリシー 、 を指定しますREQUIRE_ENCRYPT_REQUIRE_DECRYPT
。を使用してbuildClient
、暗号化されたメッセージ内の暗号化されたデータキーの数を制限することもできます。詳細については、「暗号化されたデータキーの制限」を参照してください。 - ステップ 2: キーリングを作成します。
-
暗号化用の AWS KMS キーリングを作成します。
AWS KMS キーリングで暗号化する場合は、ジェネレータキー 、つまりプレーンテキストデータキーを生成して暗号化する AWS KMS key ために使用される を指定する必要があります。また、同じプレーンテキストのデータキーを暗号化する追加のキーを必要な数だけ指定することもできます。キーリングは、プレーンテキストデータキーと、ジェネレーターキーを含むキーリング AWS KMS key 内の各データキーの暗号化されたコピーを 1 つ返します。データを復号するには、この暗号化されたデータキーのいずれかを復号する必要があります。
で AWS KMS keys 暗号化キーリングの を指定するには AWS Encryption SDK for JavaScript、サポートされている任意の AWS KMS キー識別子 を使用できます。この例では、エイリアス で識別されるジェネレータキーとARN、キー で識別される追加のキー 1 ARNつを使用します。
注記
キー AWS KMS リングを復号化に再利用する場合は、キーリング AWS KMS keys で を識別ARNsするためにキーを使用する必要があります。
このコードを実行する前に、サンプル AWS KMS key 識別子を有効な識別子に置き換えます。キーリングの AWS KMS keysを使用するために必要なアクセス許可を持っている必要があります。
- ステップ 3: 暗号化コンテキストを設定します。
-
暗号化コンテキストは、任意の、シークレットではない追加認証データです。暗号化時に暗号化コンテキストを指定すると、 AWS Encryption SDK は暗号化コンテキストを暗号文に暗号化バインドし、データの復号には同じ暗号化コンテキストが必要です。暗号化コンテキストの使用はオプションですが、ベストプラクティスとして推奨します。
暗号化コンテキストのペアを含むシンプルなオブジェクトを作成します。各ペアのキーと値は、文字列である必要があります。
- ステップ 4: データを暗号化します。
-
プレーンテキストのデータを暗号化するには、
encrypt
関数を呼び出します。 AWS KMS キーリング、プレーンテキストデータ、暗号化コンテキストを渡します。encrypt
関数は、暗号化されたデータ、暗号化されたデータキー、重要なメタデータ (暗号化コンテキストや署名など) を含む暗号化されたメッセージ (result
) を返します。この暗号化されたメッセージを復号するには、サポートされているプログラミング言語 AWS Encryption SDK の を使用します。
AWS KMS キーリングを使用したデータの復号化
を使用して暗号化されたメッセージを AWS Encryption SDK for JavaScript 復号し、元のデータを復元できます。
この例では、「AWS KMS キーリングによるデータの暗号化」の例で暗号化したデータを復号します。
- ステップ 1: コミットメントポリシーを設定します。
-
のバージョン 1.7.x 以降では AWS Encryption SDK for JavaScript、 AWS Encryption SDK クライアントをインスタンス化する新しい
buildClient
関数を呼び出すときに、コミットメントポリシーを設定できます。buildClient
関数は、コミットメントポリシーを表す列挙値を取ります。更新されたencrypt
関数とdecrypt
関数が返されて、暗号化および復号化時にコミットメントポリシーが適用されます。次の例では、
buildClient
関数を使用してデフォルトのコミットメントポリシー 、 を指定しますREQUIRE_ENCRYPT_REQUIRE_DECRYPT
。を使用してbuildClient
、暗号化されたメッセージ内の暗号化されたデータキーの数を制限することもできます。詳細については、「暗号化されたデータキーの制限」を参照してください。 - ステップ 2: キーリングを作成します。
-
データを復号するには、
encrypt
関数が返す暗号化されたメッセージ (result
) を渡します。暗号化されたメッセージには、暗号化されたデータ、暗号化されたデータキー、重要なメタデータ (暗号化コンテキストや署名など) が含まれています。AWS KMS キーリングは、復号時にも指定する必要があります。データの暗号化に使用したものと同じキーリングを使用することも、別のキーリングを使用することもできます。成功するには、 AWS KMS key 復号キーリングの少なくとも 1 つが、暗号化されたメッセージ内の暗号化されたデータキーの 1 つを復号できる必要があります。データキーは生成されないため、復号キーリングでジェネレーターキーを指定する必要はありません。指定しても、ジェネレーターキーと追加のキーは同じように扱われます。
で復号キーリング AWS KMS key に を指定するには AWS Encryption SDK for JavaScript、キー ARNを使用する必要があります。それ以外の場合、 AWS KMS key は認識されません。 AWS KMS キーリング AWS KMS keys 内の を識別する方法については、「」を参照してください。 キーリング AWS KMS keys での AWS KMS 識別
注記
暗号化と復号に同じキーリングを使用する場合は、キーリング AWS KMS keys で を識別ARNsするためにキーを使用します。
この例では、暗号化キーリング AWS KMS keys に の 1 つだけを含むキーリングを作成します。このコードを実行する前に、サンプルキーを有効なキーARNに置き換えます。 AWS KMS keyに対する
kms:Decrypt
アクセス許可が必要です。 - ステップ 3: データを復号します。
-
次に、
decrypt
関数を呼び出します。先ほど作成した復号化キーリング (keyring
) およびencrypt
関数が返す暗号化されたメッセージ (result
) を渡します。 AWS Encryption SDK は、キーリングを使用して、暗号化されたデータキーの 1 つを復号化します。次に、そのプレーンテキストのデータキーを使用してデータを復号します。呼び出しが成功すると、
plaintext
フィールドにはプレーンテキストの (復号された) データが含まれます。messageHeader
フィールドには、データの復号に使用した暗号化コンテキストなどの復号プロセスに関するメタデータが含まれます。 - ステップ 4: 暗号化コンテキストを確認します。
-
データの復号に使用した暗号化コンテキストは、
decrypt
関数から返されるメッセージヘッダー (messageHeader
) に含まれます。アプリケーションでプレーンテキストのデータを返す前に、暗号化時に指定した暗号化コンテキストが復号時に使用した暗号化コンテキストに含まれていることを確認します。一致しない場合は、データが改ざんされたか、復号する暗号化テキストを間違ったことを示している可能性があります。暗号化コンテキストを確認する際は、完全に一致している必要ありません。署名で暗号化アルゴリズムを使用する場合、暗号化マテリアルマネージャー (CMM) は、メッセージを暗号化する前にパブリック署名キーを暗号化コンテキストに追加します。ただし、送信したすべての暗号化コンテキストのペアが返された暗号化コンテキストに含まれている必要があります。
まず、メッセージヘッダーから暗号化コンテキストを取得します。次に、元の暗号化コンテキスト (
context
) のキーと値の各ペアが、返された暗号化コンテキスト (encryptionContext
) のキーと値のペアと一致することを確認します。暗号化コンテキストを確認して問題がなければ、プレーンテキストのデータを返すことができます。