データキーペアを生成する - AWS Key Management Service

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

データキーペアを生成する

非対称 KMS キーは、データキーペアを表します。データキーペアは、数学的に関連するパブリックキーとプライベートキーで構成される非対称データキーです。これらは、クライアント側での暗号化と復号、または AWS KMS の外部での署名と検証、もしくは 2 つのピア間での共有シークレットの確立に使用するように設計されています。

OpenSSL などのツールが生成するデータキーペアとは異なり、AWS KMS は、ユーザーが指定する AWS KMS 内の対称暗号化 KMS キーの各データキーペアにあるプライベートキーを保護します。ただし、AWS KMS はデータキーペアの保存、管理、追跡、またはデータキーペアの暗号化オペレーションを実行しません。AWS KMS の外部でデータキーペアを使用して管理する必要があります。

データキーペアを作成する

データキーペアを作成するには、 GenerateDataKeyPair または GenerateDataKeyPairWithoutPlaintext オペレーションを呼び出します。プライベートキーの暗号化に使用する対称暗号化 KMS キーを指定します。

GenerateDataKeyPair は、プレーンテキストパブリックキー、プレーンテキストプライベートキー、暗号化されたプライベートキーを返します。このオペレーションは、デジタル署名を生成する場合など、プレーンテキストプライベートキーをすぐに必要とする場合に使用します。

GenerateDataKeyPairWithoutPlaintext は、プレーンテキストのパブリックキーと暗号化されたプライベートキーを返しますが、プレーンテキストプライベートキーは返しません。このオペレーションは、パブリックキーで暗号化する場合など、プレーンテキストプライベートキーがすぐに必要ない場合に使用します。後で、データを復号化するために平文の秘密鍵が必要な場合は、Dec rypt オペレーションを呼び出すことができます。

以下の図では、GenerateDataKeyPair オペレーションを示しています。GenerateDataKeyPairWithoutPlaintext オペレーションは、プレーンテキストプライベートキーを省略します。

データキーペアの生成

データキーペアを使用した暗号化オペレーションの仕組み

以下のトピックでは、GenerateDataKeyPair または GenerateDataKeyPairWithoutPlaintext オペレーションによって生成されたデータキーペアで実行できる暗号化オペレーションとその仕組みについて説明します。

データキーペアでデータを暗号化する

データキーペアを使用して暗号化する場合、ペアのパブリックキーを使用してデータを暗号化し、同じペアのプライベートキーを使用してデータを復号します。通常、データキーペアは、プライベートキーを保持している当事者のみが復号できるデータを、多くの当事者が暗号化する必要がある場合に使用されます。

次の図に示すように、パブリックキーを持つ当事者は、そのキーを使用してデータを暗号化します。

AWS KMS 外でデータキーペアのパブリックキーを使用してユーザーデータを暗号化する

データキーペアでデータを復号する

データを復号するには、データキーペアでプライベートキーを使用します。オペレーションを成功させるには、パブリックキーとプライベートキーが同じデータキーペアのものである必要があり、また、同じ暗号化アルゴリズムを使用する必要があります。

暗号化された秘密鍵を復号化するには、復号オペレーションに渡します。プレーンテキストプライベートキーを使用してデータを復号します。その後、できるだけ早くプレーンテキストのプライベートキーをメモリから削除します。

次の図は、データキーペアのプライベートキーを使用して暗号テキストを復号する方法を示しています。

AWS KMS 外でデータキーペアのプライベートキーを使用してユーザーデータを復号化します。

データキーペアでメッセージに署名する

メッセージの暗号化署名を生成するには、データキーペアのプライベートキーを使用します。パブリックキーを持つすべてのユーザーは、メッセージが自分のプライベートキーで署名されたこと、および署名されてから変更されていないことを確認するために使用できます。

プライベートキーが暗号化されている場合は、暗号化されたプライベートキーを Decrypt オペレーションに渡します。AWS KMS は KMS キーを使用してデータキーを復号し、プレーンテキストのプライベートキーを返します。署名を生成するには、プレーンテキストプライベートキーを使用します。その後、できるだけ早くプレーンテキストのプライベートキーをメモリから削除します。

メッセージに署名するには、OpenSSL で dgst コマンドなどの暗号化ハッシュ関数を使用してメッセージダイジェストを作成します。次に、プレーンテキストプライベートキーを署名アルゴリズムに渡します。結果は、メッセージの内容を表す署名です。(最初にダイジェストを作成しなくても、短いメッセージで署名できる場合があります。メッセージの最大サイズは、使用する署名ツールによって異なります)。

次の図は、データキーペアのプライベートキーを使用してメッセージに署名する方法を示しています。

AWS KMS 外でデータキーペアのプライベートキーを使用して暗号化署名を生成します。

データキーペアを使用した署名の検証

データキーペアにパブリックキーを持っているユーザーは、誰でもそれを使用して、プライベートキーで生成した署名を検証できます。検証では、承認されたユーザーが指定したプライベートキーと署名アルゴリズムを使用してメッセージに署名し、メッセージが署名後に変更されていないことを確認します。

署名を検証する当事者は、同じタイプのダイジェストを生成し、同じアルゴリズムを使用して、メッセージの署名に使用されるプライベートキーに対応するパブリックキーを使用する必要があります。

次の図は、データキーペアのパブリックキーを使用してメッセージ署名を検証する方法を示しています。

AWS KMS 外でデータキーペアのパブリックキーを使用して暗号化署名を検証します。

データキーペアを用いて共有シークレットを取得する

キーアグリーメントにより、それぞれ楕円曲線のパブリック/プライベートキーペアを持つ 2 つのピアが、安全でないチャネル上で共有シークレットを確立することができます。共有シークレットを取得するには、2 つのピアが、安全でない通信チャネル (インターネットなど) を介してパブリックキーを交換する必要があります。次に、各パーティがそれぞれのプライベートキーと自ピアのパブリックキーを使用することで、キーアグリーメントアルゴリズムを使用して同じ共有シークレットを計算します。この共有シークレット値を使用して、2 つのピア間で送信されるデータを暗号化および復号、または HMAC を生成および検証できる対称キーを取得できます。

注記

AWS KMS は、受信したパブリックキーを使用して共有シークレットを取得する前に、そのパブリックキーが想定されたパーティから送信されたものであるかを確認することを強くお勧めします。