キー仕様のリファレンス - AWS Key Management Service

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

キー仕様のリファレンス

非対称 KMS キーまたは HMAC KMS キーを作成するときは、そのキーの仕様を選択します。キー仕様は、すべての AWS KMS key のプロパティであり、KMS キーの暗号化設定を表します。KMS キーの作成時に選択したキー仕様を変更することはできません。間違ったキー仕様を選択した場合は、KMS キーを削除し、新しいキー仕様を作成します。

注記

KMS キーのキー仕様は、「カスタマーマスターキー仕様」として知られていました。CreateKey オペレーションの CustomerMasterKeySpec パラメータは非推奨です。代わりに、KeySpec パラメータを使用します。CreateKey および DescribeKey オペレーションのレスポンスには、同じ値を持つ KeySpec および CustomerMasterKeySpec メンバーが含まれます。

キーの仕様によって、KMS キーのタイプ (対称か非対称)、KMS キーのキーマテリアルのタイプ、および AWS KMS が KMS キーに対してサポートする暗号化アルゴリズム、署名アルゴリズム、またはメッセージ認証コード (MAC) アルゴリズムが決まります。選択するキー仕様は、通常、ユースケースと規制要件によって決まります。ただし、キー仕様の異なる KMS キーの暗号化オペレーションは料金が異なるため、クォータも異なる場合があります。料金の詳細については、「AWS Key Management Service の料金」を参照してください。リクエストクォータの詳細については、「クォータのリクエスト」を参照してください 。

KMS キーの作成時に、プリンシパルが使用できるキー仕様を制限するには、kms:KeySpec 条件キーを使用します。kms:KeySpec 条件キーを使用して、特定のキー仕様を持つ KMS キーのみで AWS KMS オペレーションを呼び出すことをプリンシパルに許可することもできます。例えば、RSA_4096 キー仕様を持つ KMS キーの削除をスケジュールする許可を拒否できます。

AWS KMS は、KMS キーの次のキー仕様をサポートします。

対称暗号化キーの仕様 (デフォルト)
  • 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)、暗号化に一般的に使用されます。

SM2 キー仕様 (暗号化と復号、または署名と検証、または共有シークレットの取得のいずれか)
  • SM2 (中国リージョンのみ)

HMAC キーの仕様
  • HMAC_224

  • HMAC_256

  • HMAC_384

  • HMAC_512

SYMMETRIC_DEFAULT キー仕様

デフォルトのキー仕様である SYMMETRIC_DEFAULT は、対称暗号化 KMS キーのキー仕様です。AWS KMS コンソールでキーのタイプに [Symmetric] (対称)、キーの用途に [Encrypt and decrypt] (暗号化および復号) を選択すると、SYMMETRIC_DEFAULT キー仕様が選択されます。CreateKey オペレーションで、 KeySpec 値を指定しない場合、SYMMETRIC_DEFAULT が選択されます。別のキー仕様を使用する理由がない場合は、SYMMETRIC_DEFAULT を選択することをお勧めします。

SYMMETRIC_DEFAULT は AES-256-GCM を表します。AES-256-GCM は Galois Counter Mode (GCM) のアドバンスト暗号化スタンダード (AES) に基づく対称アルゴリズムであり、安全な暗号化のための業界標準である 256 ビットキーを備えています。このアルゴリズムが生成する暗号文は、暗号化コンテキストなどの追加認証データ (AAD) をサポートし、GCM は暗号文での追加の整合性チェックを提供します。

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

中国リージョンでは唯一の例外で、SYMMETRIC_DEFAULT は SM4 暗号化を使用する 128 ビットの対称キーを表します。128 ビット SM4 キーは、中国リージョンでのみ作成できます。中国リージョンでは、256 ビット AES-GCM KMS キーを作成することはできません。

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

AWS KMS で対称暗号化 KMS キーを使用して、データの暗号化、復号、再暗号化、およびデータキーとデータキーペアの生成を行うことができます。マルチリージョンの対称暗号化 KMS キーの作成、対称暗号化 KMS キーへの独自のキーマテリアルのインポート、およびカスタムキーストアでの対称暗号化 KMS キーの作成が可能です。異なるタイプの KMS キーで実行できるオペレーションを比較した表については、「キータイプリファレンス」を参照してください。

RSA キー仕様

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

警告

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

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

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

  • RSA_2048

  • RSA_3072

  • RSA_4096

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

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

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

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

AWS KMS は、RSA キー仕様を持つ KMS キーの 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暗号化。

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

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

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

これらのアルゴリズムのプレーンテキストの最大長(バイト単位)を計算するには、次の式を使用します。(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 非対称 KMS キーを使用する場合、プライベートキーを持つメッセージの署名を生成し、パブリックキーで署名を検証します。

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

AWS KMS は、RSA キー仕様のすべての KMS キーに対して、次の署名アルゴリズムをサポートします。Sign オペレーションと Verify オペレーションを呼び出すときは、署名アルゴリズムを指定する必要があります。リクエストごとに異なるアルゴリズムを選択できます。RSA キーペアで署名する場合は、RSASSA-PSS アルゴリズムが推奨されます。既存のアプリケーションとの互換性を保つため、RSASSA-PKCS1-v1_5 アルゴリズムが採用されています。

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 署名
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 署名

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

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

楕円曲線のキー仕様

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

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

  • 非対称 NIST 推奨楕円曲線キーペア (署名と検証、または共有シークレットの取得のいずれか)

    • ECC_NIST_P256 (secp256r1)

    • ECC_NIST_P384 (secp384r1)

    • ECC_NIST_P521 (secp521r1)

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

    • ECC_SECG_P256K1 (secp256k1)。一般に暗号通貨に用いられる。

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

非対称 KMS キーを作成して共有シークレット を取得する場合は、NIST が推奨する楕円曲線キー仕様のいずれかを使用します。共有シークレットの取得向けにサポートされている唯一のキーアグリーメントアルゴリズムは、楕円曲線暗号化共同係数 Diffie-Hellman Primitive (ECDH) です。共有シークレットをオフラインで取得する方法の例については、「オフラインで共有シークレットを取得する」を参照してください。

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

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

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

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 署名。

SM2 キー仕様 (中国リージョンのみ)

SM2 キー仕様は、中国国家商業暗号局 (OSCCA) によって公開されている GM/T シリーズの仕様で定義されている楕円曲線のキー仕様です。SM2 キー仕様は、中国リージョンでのみ利用可能です。SM2 キー仕様を使用する際、AWS KMS は SM2 キーペアを持つ非対称 KMS キーを作成します。AWS KMS 内でSM2 キーを使用することも、AWS KMS の外部で使用するためにパブリックキーをダウンロードすることもできます。詳細については、「SM2 キーペアによるオフライン検証 (中国リージョンのみ)」を参照してください。

各 KMS キーに指定できるキー用途は 1 つだけです。SM2 KMS キー は、署名と検証、暗号化と複合、または共有シークレットの取得のいずれかに使用できます。KMS キーの作成時にキーの用途を指定する必要があります。キーの作成後に変更することはできません。

非対称 KMS キーを作成して共有シークレットを取得する場合は、SM2 キー仕様を使用します。共有シークレットの取得向けにサポートされている唯一のキーアグリーメントアルゴリズムは、楕円曲線暗号化共同係数 Diffie-Hellman Primitive (ECDH) です。

AWS KMS は、以下の SM2 暗号化および署名アルゴリズムをサポートしています。

  • SM2PKE 暗号化アルゴリズム

    SM2PKE は、GM/T 0003.4-2012 で OSCCA によって定義された楕円曲線ベースの暗号化アルゴリズムです。

  • SM2DSA 署名アルゴリズム

    SM2DSA は、GM/T 0003.2-2012 で OSCCA によって定義された楕円曲線ベースの暗号化アルゴリズムです。SM2DSA には、SM3 ハッシュアルゴリズムでハッシュ化され、AWS KMS に渡されたメッセージまたはメッセージダイジェストと組み合わされた識別 ID が必要です。この連結された値は、AWS KMS によりハッシュ化されて署名されます。

HMAC KMS キーの主な仕様

AWS KMS は、さまざまな長さの対称 HMAC キーをサポートします。選択するキー仕様は、セキュリティ、規制、またはビジネス要件に応じて異なります。キーの長さによって、GenerateMac および VerifyMac オペレーションで使用される MAC アルゴリズムが決まります。一般に、キーが長いほど安全性が高くなります。ユースケースにとって実用的な最も長いキーを使用してください。

HMAC キーの仕様 MAC アルゴリズム
HMAC_224 HMAC_SHA_224
HMAC_256 HMAC_SHA_256
HMAC_384 HMAC_SHA_384
HMAC_512 HMAC_SHA_512