CMK 設定の選択方法 - AWS Key Management Service

CMK 設定の選択方法

作成する CMK のタイプは、CMK の使用計画、セキュリティ要件、および認証要件によって大きく依存します。CMK を作成するときは、CMK の暗号化設定(キー仕様やキーの使用方法を含む)は、CMK の作成時に設定され、変更できないことに注意してください。対称 CMK および非対称 CMK の作成については、「キーの作成」を参照してください。

AWS KMS は、[対称]と [非対称型] の 2 つの CMK キータイプをサポートします。各キータイプには、特定のキーの使用方法キー仕様オプションが関連付けられています。

以下のガイダンスを使用し、ユースケースに基づいて必要な CMK のタイプを決定します。

データの暗号化と復号

データの暗号化と復号を必要とするほとんどのユースケースには、対称 CMK を使用します。AWS KMS が使用する対称暗号化アルゴリズムは、高速かつ効率的で、データの機密性と信頼性を保証します。これは、暗号化コンテキストとして定義された追加の認証データ (AAD) による認証された暗号化をサポートします。このタイプの CMK では、暗号化されたデータの送信者と受信者の両方が AWS KMS を呼び出す有効な AWS 認証情報を持っている必要があります。

AWS KMS を呼び出しできないユーザーによって AWS 外部で暗号化が必要なユースケースの場合は、非対称 CMK が適しています。非対称 CMK のパブリック部分を配布して、これらのユーザーがデータを暗号化できるようにすることができます。また、そのデータを復号する必要があるアプリケーションは、AWS KMS 内で非対称 CMK のプライベート部分を使用できます。

メッセージの署名および署名の検証

メッセージに署名して署名を検証するには、非対称 CMK を使用する必要があります。RSA キーペアまたは楕円曲線 (ECC) キーペアを表すキー仕様で CMK を使用できます。選択するキー仕様は、使用する署名アルゴリズムによって決まります。場合によっては、署名を検証するユーザーが AWS の外側にあり、Verify オペレーションを呼び出せないことがあります。その場合は、これらのユーザーがローカルアプリケーションでサポートできる署名アルゴリズムに関連付けられたキー仕様を選択します

パブリックキー暗号化の実行

パブリックキー暗号化を実行するには、RSA キー仕様非対称 CMK を使用する必要があります。楕円曲線 (ECC) キー仕様は、パブリックキーの暗号化には使用できません。RSA CMK のパブリックキーを使用して AWS KMS でデータを暗号化するには、Encrypt オペレーションを使用します。パブリックキーをダウンロードして、AWS KMS 外部でデータを暗号化する必要がある当事者と共有することもできます。

非対称 CMK のパブリックキーをダウンロードする場合は、AWS KMS の外部で使用できます。ただし、AWS KMS の CMK を保護するセキュリティ管理の対象ではなくなりました。たとえば、KMS キーポリシーまたは許可を使用して、パブリックキーの使用を制御することはできません。また、AWS KMS がサポートする RSA 暗号化アルゴリズムを使用して、キーを暗号化および復号にのみ使用するかどうかを制御することもできません。詳細については、「パブリックキーのダウンロードに関する特別な考慮事項」を参照してください。

AWS KMS の外部のパブリックキーで暗号化されたデータを復号するには、Decrypt オペレーションを呼び出します。SIGN_VERIFYキーの使用方法の CMK からのパブリックキーでデータが暗号化された場合、Decrypt オペレーションは失敗します。また、KMS が RSA CMK をサポートしていないアルゴリズムを使用して暗号化されている場合も失敗します。

これらのエラーを回避するには、AWS KMS 外部でパブリックキーを使用するすべてのユーザーがキー設定を保存する必要があります。AWS KMS コンソールと GetPublicKey レスポンスは、パブリックキーを共有するときに含める必要がある情報を提供します。

統合された AWS のサービスでの使用

AWS KMS と統合された AWS のサービスで使用する CMK を作成するには、サービスのドキュメントを参照してください。ユーザーに代わってデータを暗号化するすべての AWS サービスには、対称 CMK が必要です。

これらの考慮事項に加えて、キー仕様が異なる CMK では、価格と クォータのリクエスト が異なります。AWS KMS の価格設定については、「AWS Key Management Service の料金」を参照してください。クォータのリクエスト の詳細については、「クォータのリクエスト」を参照してください。

キー使用法の選択

CMK の キー使用法によって、CMK が暗号化および復号に使用されるか、署名および検証に使用されるかが決まります。両方を選択することはできません。CMK を複数のタイプのオペレーションに使用すると、両方のオペレーションの製品が攻撃に対して脆弱になります。

次の表に示すように、対称 CMK は暗号化と復号にのみ使用できます。楕円曲線 (ECC) CMK は、署名と検証にのみ使用できます。キーの使用方法の決定は、実際に RSA CMK に対してのみ行われます。

CMK タイプの有効なキーの使用方法
CMK タイプ 暗号化と復号 署名と検証
対称 CMK
RSA キーペアを使用した非対称 CMK
ECC キーペアを使用した非対称 CMK

AWS KMS コンソールでは、まずキータイプ(対称または非対称)を選択し、次に非対称 CMK の場合はキーの使用方法を選択します。対称キータイプを選択した場合、キーの使用方法オプションは表示されません。対称 CMK では暗号化と復号のみがサポートされるためです。選択するキーの使用方法によって、表示されるキー仕様が決まります。

AWS KMS コンソールでキーの使用方法を選択するには:

  • 楕円曲線 (ECC) キーマテリアルを持つ CMK の場合は、[署名と検証] を選択します。

  • RSA キーマテリアルを使用する CMK の場合は、[暗号化と復号] または [署名と検証] を選択します。

アカウントのプリンシパルが CMK に使用できるキーの使用方法を決定するには、km:CustomerMasterKeyUsage 条件キーを使用します。

キー仕様の選択

非対称 CMK を作成するときは、そのキー仕様を選択します。すべてのカスタマーマスターキー (CMK) のプロパティであるキー仕様は、CMK の暗号化設定を表します。CMK を作成するときにキー仕様を選択することはできず、変更することもできません。間違ったキー仕様を選択した場合は、CMK を削除し、新しいキー仕様を作成します。

注記

AWS KMS API オペレーションでは、CMK のキー仕様は CustomerMasterKeySpec と呼ばれます。これにより、データキー (KeySpec) およびデータキーペア (KeyPairSpec) のキー仕様や、インポート用のキーマテリアル (WrappingKeySpec) のラップ時に使用されるキー仕様とは区別されます。各キー仕様のタイプには、異なる値があります。

キー仕様によって、CMK が対称か非対称か、CMK のキーマテリアルのタイプ、および AWS KMS が CMK でサポートする暗号化アルゴリズムまたは署名アルゴリズムが決まります。選択するキー仕様は、通常、ユースケースと規制要件によって決まります。

アカウントのプリンシパルが CMK に使用できるキー仕様を決定するには、kms:CustomerMasterKeySpec 条件キーを使用します。

AWS KMS は、CMK の次の主要な仕様をサポートしています。

  • 対称 CMK(デフォルト、暗号化と復号)

    • SYMMETRIC_DEFAULT

  • RSA キー仕様(暗号化と復号、または署名と検証)

    • RSA_2048

    • RSA_3072

    • RSA_4096

  • 楕円曲線のキー仕様

    • 非対称 NIST 推奨楕円曲線キーペア(署名と検証)

      • ECC_NIST_P256 (secp256r1)

      • ECC_NIST_P384 (secp384r1)

      • ECC_NIST_P521 (secp521r1)

    • その他の非対称楕円曲線キーペア(署名と検証)

      • ECC_SECG_P256K1 (secp256k1)、暗号化に一般的に使用されます。

トピック

以下のトピックでは、キー仕様に関する技術情報を提供します。

SYMMETRIC_DEFAULT キー仕様

デフォルトのキー仕様である SYMMETRIC_DEFAULT は、対称 CMK のキー仕様です。AWS KMS コンソールで [対称] キータイプを選択すると、SYMMETRIC_DEFAULTキー仕様が選択されます。CreateKey オペレーションで CustomerMasterKeySpec 値を指定しない場合、SYMMETRIC_DEFAULT が選択されます。別のキー仕様を使用する理由がない場合は、SYMMETRIC_DEFAULT を選択することをお勧めします。

対称 CMK の暗号化アルゴリズムは、SYMMETRIC_DEFAULT とも呼ばれます。現在、これは、安全な 暗号化の業界標準である 256 ビットキーを持つガロワカウンタモード (GCM) の高度暗号化標準 (AES) に基づく対称アルゴリズムを表しています。このアルゴリズムが生成する暗号文は、暗号化コンテキストなどの追加の認証データ (AAD) をサポートし、GCM は暗号文での追加の整合性チェックを提供します。技術的な詳細については、AWS Key Management Service Cryptographic Details ホワイトペーパーを参照してください。

AES-256-GCMで暗号化されたデータは、現在も将来も保護されています。暗号作成者は、このアルゴリズムには量子耐性があると考えています。理論上の将来、256 ビット AES-GCM キーで作成された暗号文に対する大規模な量子コンピューティング攻撃は、キーの効果的なセキュリティを 128 ビットに低下させます。ただし、このセキュリティレベルは、AWS KMS 暗号文に対するブルートフォース攻撃を実行不可能にするのに十分です。

AWS KMS で対称 CMK を使用して、データの暗号化、復号、再暗号化、データキーとデータキーペアの生成を行うことができます。AWS KMS と統合された AWS のサービスは、対称 CMK を使用して保管中のデータを暗号化します。対称 CMK に独自のキーマテリアルをインポートし、カスタムキーストアで対称 CMK を作成できます。対称 CMK と非対称 CMK で実行できるオペレーションを比較した表は、「Comparing Symmetric and Asymmetric CMKs」を参照してください。

RSA キー仕様

RSA キー仕様を使用する場合、AWS KMS は RSA キーペアを持つ非対称 CMK を作成します。プライベートキーが暗号化されないまま AWS KMS から出ていくことはありません。AWS KMS 内でパブリックキーを使用することも、AWS KMS の外部で使用するためにパブリックキーをダウンロードすることもできます。

警告

AWS KMS 外部でデータを暗号化する場合は、暗号化テキストを復号できることを確認してください。AWS KMS から削除された CMK のパブリックキー、署名と検証用に設定された CMK のパブリックキー、または CMK でサポートされていない暗号化アルゴリズムを使用する場合、データは回復できません。

AWS KMS では、非対称 CMK を RSA キーペアとともに暗号化と復号、または署名と検証に使用できますが、両方には使用できません。このプロパティは、キーの使用方法と呼ばれ、キー仕様とは別に決定されますが、キー仕様を選択する前に決定する必要があります。

AWS KMS は、暗号化と復号、署名と検証について、次の RSA キー仕様をサポートしています。

  • RSA_2048

  • RSA_3072

  • RSA_4096

RSA キー仕様は、RSA キーの長さ(ビット単位)によって異なります。選択する RSA キー仕様は、セキュリティ標準またはタスクの要件によって決定される場合があります。一般的に、タスクに実用的で手頃な価格の、最大のキーを使用します。RSA キー仕様が異なる CMK は価格設定も異なり、クォータのリクエスト も異なります。AWS KMS の価格設定については、「AWS Key Management Service の料金」を参照してください。クォータのリクエスト の詳細については、「クォータのリクエスト」を参照してください。

暗号化および復号の RSA キー仕様

RSA 非対称 CMK を暗号化および復号に使用する場合、パブリックキーで暗号化し、プライベートキーで復号します。RSA CMK の AWS KMS で Encrypt オペレーションを呼び出すとき、AWS KMS は RSA キーペアのパブリックキーと、指定した暗号化アルゴリズムを使用してデータを暗号化します。暗号テキストを復号するには、Decrypt オペレーションを呼び出し、同じ CMK と暗号化アルゴリズムを指定します。AWS KMS は、RSA キーペアのプライベートキーを使用してデータを復号します。

パブリックキーをダウンロードして、AWS KMS 外部のデータを暗号化するために使用することもできます。AWS KMS が RSA CMK でサポートされる暗号化アルゴリズムを必ず使用してください。暗号テキストを復号するには、同じ CMK と暗号化アルゴリズムを使用して Decrypt 関数を呼び出します。

AWS KMS は、RSA キー仕様を持つ CMK の 2 つの暗号化アルゴリズムをサポートします。PKCS #1 v2.2 で定義されるこれらのアルゴリズムは、内部的に使用するハッシュ関数によって異なります。AWS KMS では、RSAES_OAEP アルゴリズムは、ハッシュと マスク生成関数 (MGF1) の両方に常に同じハッシュ関数を使用します。 Encrypt および Decrypt オペレーションを呼び出すときは、暗号化アルゴリズムを指定する必要があります。リクエストごとに異なるアルゴリズムを選択できます。

RSA キー仕様にサポートされる暗号化アルゴリズム
暗号化アルゴリズム アルゴリズムの説明
RSAES_OAEP_SHA_1 PKCS #1 v2.2、セクション 7.1。ハッシュと MGF1 マスク生成機能の両方に空のラベルとともに SHA-1 を使用した OAEP パディングによるRSA暗号化。
RSAES_OAEP_SHA_256 PKCS #1、セクション 7.1.ハッシュと MGF1 マスク生成機能の両方に空のラベルとともに SHA-256 を使用した OAEP パディングによるRSA暗号化。

特定の暗号化アルゴリズムを使用するように CMK を設定することはできません。ただし、km: EncryptionAlgorithm ポリシー条件を使用して、プリンシパルが CMK で使用できる暗号化アルゴリズムを指定できます。

CMK の暗号化アルゴリズムを取得するには、AWS KMS コンソールで CMK の暗号化設定を表示するか、DescribeKey オペレーションを使用します。AWS KMS では、AWS KMS コンソールまたは GetPublicKey オペレーションを使用してパブリックキーをダウンロードするときに、キー仕様と暗号化アルゴリズムも提供されます。

各要求で暗号化できるプレーンテキストデータの長さに基づいて、RSA 鍵仕様を選択することもできます。次の表に、Encrypt オペレーションの 1 回の呼び出しで暗号化できるプレーンテキストの最大サイズ(バイト単位)を示します。値は、キー仕様と暗号化アルゴリズムによって異なります。比較するには、対称 CMK を使用して、一度に最大 4096 バイトを暗号化できます。

これらのアルゴリズムのプレーンテキストの最大長(バイト単位)を計算するには、次の式を使用します。(key_size_in_bits / 8) - (2 * hash_length_in_bits/8) - 2。たとえば、RSA_2048 と SHA-256 の場合、バイト単位のプレーンテキストの最大サイズは、(2048/8) - (2 * 256/8) -2 = 190 です。

暗号化オペレーションの最大プレーンテキストサイズ(バイト単位)
暗号化アルゴリズム
キー仕様 RSAES_OAEP_SHA_1 RSAES_OAEP_SHA_256
RSA_2048 214 190
RSA_3072 342 318
RSA_4096 470 446

署名および検証用の RSA キー仕様

署名と検証に RSA 非対称 CMK を使用する場合、プライベートキーを持つメッセージの署名を生成し、パブリックキーで署名を検証します。

非対称 CMK の AWS KMS で Sign オペレーションを呼び出すと、AWS KMS は RSA キーペアのプライベートキー、メッセージ、および指定した署名アルゴリズムを使用して、署名を生成します。署名を確認するには、Verify オペレーションを呼び出します。署名、および同じ CMK、メッセージ、署名アルゴリズムを指定します。AWS KMS は、RSA キーペアのパブリックキーを使用して署名を検証します。また、パブリックキーをダウンロードして、AWS KMS 外部で署名を検証するために使用することもできます。

AWS KMS は、RSA キー仕様の CMK に対して次の署名アルゴリズムをサポートします。Sign オペレーションと Verify オペレーションを呼び出すときは、署名アルゴリズムを指定する必要があります。リクエストごとに異なるアルゴリズムを選択できます。

RSA キー仕様でサポートされる署名アルゴリズム
署名アルゴリズム アルゴリズムの説明
RSASSA_PKCS1_V1_5_SHA_256 PKCS #1 v2.2、セクション 8.2、PKCS #1v1 .5 パディングおよび SHA-256 を使用した RSA 署名
RSASSA_PKCS1_V1_5_SHA_384 PKCS #1 v2.2、セクション 8.2、PKCS #1v1 .5 パディングおよび SHA-384 を使用した RSA 署名
RSASSA_PKCS1_V1_5_SHA_512 PKCS #1 v2.2、セクション 8.2、PKCS #1v1 .5 パディングおよび SHA-512 を使用した RSA 署名
RSASSA_PSS_SHA_256 PKCS #1 v2.2、セクション 8.1、メッセージダイジェストと MGF1 マスク生成機能の両方に SHA-256 とともに 256 ビットソルトを使用する PSS パディング付きの RSA 署名
RSASSA_PSS_SHA_384 PKCS #1 v2.2、セクション 8.1、メッセージダイジェストと MGF1 マスク生成機能の両方に SHA-384 とともに 384 ビットソルトを使用する PSS パディング付きの RSA 署名
RSASSA_PSS_SHA_512 PKCS #1 v2.2、セクション 8.1、メッセージダイジェストと MGF1 マスク生成機能の両方に SHA-512 とともに 512 ビットソルトを使用する PSS パディング付きの RSA 署名

特定の署名アルゴリズムを使用するように CMK を設定することはできません。ただし、km: SigningAlgorithm ポリシー条件を使用して、プリンシパルが CMK で使用できる署名アルゴリズムを指定できます。

CMK の署名アルゴリズムを取得するには、AWS KMS コンソールで CMK の暗号化設定を表示するか、DescribeKey オペレーションを使用します。AWS KMS では、AWS KMS コンソールまたは GetPublicKey オペレーションを使用してパブリックキーをダウンロードするときに、キー仕様と署名アルゴリズムも提供されます。

楕円曲線のキー仕様

楕円曲線 (ECC) キー仕様を使用すると、AWS KMS では署名と検証のために ECC キーペアを持つ非対称 CMK が作成されます。署名を生成するプライベートキーでは、AWS KMS が暗号化されないままになることはありません。AWS KMS 内で署名を検証するためにパブリックキーを使用することも、AWS KMS の外部で使用するためにパブリックキーをダウンロードすることもできます。

AWS KMS は、非対称 CMK の次の ECC キー仕様をサポートしています。

  • 非対称 NIST 推奨楕円曲線キーペア(署名と検証)

    • ECC_NIST_P256 (secp256r1)

    • ECC_NIST_P384 (secp384r1)

    • ECC_NIST_P521 (secp521r1)

  • その他の非対称楕円曲線キーペア(署名と検証)

    • ECC_SECG_P256K1 (secp256k1)、暗号通貨によく使用されます。

選択する ECC キー仕様は、セキュリティ標準またはタスクの要件によって決定される場合があります。一般的に、タスクに実用的で手頃な価格の、最も多くのポイントがある曲線を使用します。

暗号化通貨で使用する非対称 CMK を作成する場合は、ECC_SECG_P256K1 キー仕様を使用します。このキー仕様を他の目的に使用することもできますが、Bitcoin やその他の暗号化通貨には必要です。

ECC キー仕様が異なる CMK は価格設定も異なり、クォータのリクエスト も異なります。AWS KMS の価格設定については、「AWS Key Management Service の料金」を参照してください。クォータのリクエスト の詳細については、「クォータのリクエスト」を参照してください。

次の表に、ECC キー仕様ごとに AWS KMS がサポートする署名アルゴリズムを示します。特定の署名アルゴリズムを使用するように CMK を設定することはできません。ただし、km: SigningAlgorithm ポリシー条件を使用して、プリンシパルが CMK で使用できる署名アルゴリズムを指定できます。

ECC キー仕様でサポートされる署名アルゴリズム
キー仕様 署名アルゴリズム アルゴリズムの説明
ECC_NIST_P256 ECDSA_SHA_256 メッセージダイジェストのためにキーおよび SHA-256 で指定された曲線を使用する、NIST FIPS 186-4、セクション 6.4、ECDSA 署名。
ECC_NIST_P384 ECDSA_SHA_384 メッセージダイジェストのためにキーおよび SHA-384 で指定された曲線を使用する、NIST FIPS 186-4、セクション 6.4、ECDSA 署名。
ECC_NIST_P521 ECDSA_SHA_512 メッセージダイジェストのためにキーおよび SHA-512 で指定された曲線を使用する、NIST FIPS 186-4、セクション 6.4、ECDSA 署名。
ECC_SECG_P256K1 ECDSA_SHA_256 メッセージダイジェストのためにキーおよび SHA-256 で指定された曲線を使用する、NIST FIPS 186-4、セクション 6.4、ECDSA 署名。