鍵の目的とアルゴリズム

各 Cloud Key Management Service のには、鍵の暗号機能を定義する目的があります。その目的によって、その鍵の各バージョンでサポートされるアルゴリズムも決まります。アルゴリズムでは、各暗号オペレーションで使用するパラメータが定義されます。鍵には、暗号オペレーションをソフトウェアまたはハードウェア セキュリティ モジュール(HSM)のどちらで実施するかを示す保護レベルも設定されます。

鍵の目的

Cloud KMS には、次のシナリオに対応する鍵の目的があります。

シナリオ 鍵の目的(SDK) 鍵の目的(API) サポートされるメソッド
対称暗号化 encryption ENCRYPT_DECRYPT cryptoKeys.encryptcryptoKeys.decrypt
未加工対称暗号化 raw-encryption RAW_ENCRYPT_DECRYPT cryptoKeys.rawEncryptcryptoKeys.rawDecrypt
非対称署名 asymmetric-signing ASYMMETRIC_SIGN cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
非対称暗号化 asymmetric-encryption ASYMMETRIC_DECRYPT cryptoKeyVersions.asymmetricDecryptcryptoKeyVersions.getPublicKey
MAC 署名 mac MAC cryptoKeyVersions.macSigncryptoKeyVersions.macVerify

鍵を作成するときは、その鍵の目的とアルゴリズムを定義します。新しい鍵バージョンを作成するときに、鍵の目的を逸脱しない範囲でアルゴリズムを変更できます。目的は変更できません。

同じ目的が設定された 2 つの鍵ではそれぞれ異なるアルゴリズムを使用できますが、サポートする暗号オペレーションは同じでなければなりません。

対称暗号化アルゴリズム

鍵の目的が ENCRYPT_DECRYPT の場合、対称暗号化が有効になります。鍵の目的が ENCRYPT_DECRYPT であるすべての鍵では GOOGLE_SYMMETRIC_ENCRYPTION アルゴリズムが使用されます。このアルゴリズムで使用されるパラメータはありません。このアルゴリズムでは、Galois Counter Mode(GCM)で 256 ビットの Advanced Encryption Standard(AES-256)鍵を使用し、Cloud KMS 内部のメタデータがパディングされます。

非対称署名アルゴリズム

鍵の目的が ASYMMETRIC_SIGN の場合、非対称署名が有効になります。目的が ASYMMETRIC_SIGN の鍵では、楕円曲線署名RSA 署名のどちらをサポートしているかに応じて異なるアルゴリズムが使用されます。

鍵の目的が ASYMMETRIC_SIGN であれば、アルゴリズムを通じて鍵のサイズと署名スキームを別のものに切り替えることができます。

楕円曲線署名アルゴリズム

楕円曲線署名アルゴリズムの形式は次のとおりです。

EC_SIGN_[ELLIPTIC_CURVE]_[DIGEST_ALGORITHM]

ここで

  • [ELLIPTIC_CURVE] は楕円曲線を示します。
  • [DIGEST_ALGORITHM] はダイジェスト アルゴリズムを示します。

次の表に、目的が ASYMMETRIC_SIGN の楕円曲線鍵で使用できるアルゴリズムを示します。gcloud コマンドで小文字のアルゴリズム名、Cloud Key Management Service API で大文字のアルゴリズム名を使用します。

アルゴリズム(SDK) アルゴリズム(API) 説明
ec-sign-ed25519 EC_SIGN_ED25519 PureEdDSA モードの Curve25519 の EdDSA。ハッシュ化されたデータではなく、元データを入力として使用します。
ec-sign-p256-sha256 **(推奨)** EC_SIGN_P256_SHA256 P-256 曲線上の ECDSA(SHA-256 ダイジェストを使用)
ec-sign-p384-sha384 EC_SIGN_P384_SHA384 P-384 曲線上の ECDSA(SHA-384 ダイジェストを使用)
ec-sign-secp256k1-sha256 EC_SIGN_SECP256K1_SHA256 Secp256k1 曲線上の ECDSA(SHA 256 ダイジェストを使用)

RSA 署名アルゴリズム

RSA 署名アルゴリズムの形式は次のとおりです。

RSA_SIGN_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]_[DIGEST_ALGORITHM]

ここで

  • [PADDING_ALGORITHM] はパディング アルゴリズムを示します。
  • [MODULUS_BIT_LENGTH] は鍵のビット長を示します。
  • [DIGEST_ALGORITHM] はダイジェスト アルゴリズムを示します。

なお、一部のアルゴリズムは次の形式です。

RSA_SIGN_RAW_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]

また、ダイジェスト アルゴリズムは省略されます。こうしたアルゴリズムは、DigestInfo へのエンコードを省略した PKCS #1 署名のバリアントです。バリアントでは、次のことが行われます。

  • ダイジェストは、署名されるメッセージに対して計算されます。
  • ダイジェストには、直接 PKCS #1 パディングが適用されます。
  • パディングされたダイジェストの署名は、RSA 秘密鍵を使用して計算されます。

次の表に、目的が ASYMMETRIC_SIGN の RSA 鍵で使用できるアルゴリズムを示します。gcloud コマンドで小文字のアルゴリズム名、Cloud Key Management Service API で大文字のアルゴリズム名を使用します。

アルゴリズム(SDK) アルゴリズム(API) 説明
rsa-sign-pss-2048-sha256 RSA_SIGN_PSS_2048_SHA256 RSASSA-PSS の 2048 ビットの鍵(SHA-256 ダイジェストを使用)
rsa-sign-pss-3072-sha256(推奨) RSA_SIGN_PSS_3072_SHA256 RSASSA-PSS の 3072 ビットの鍵(SHA-256 ダイジェストを使用)
rsa-sign-pss-4096-sha256 RSA_SIGN_PSS_4096_SHA256 RSASSA-PSS の 4096 ビットの鍵(SHA-256 ダイジェストを使用)
rsa-sign-pss-4096-sha512 RSA_SIGN_PSS_4096_SHA512 RSASSA-PSS の 4,096 ビットの鍵(SHA-512 ダイジェストを使用)
rsa-sign-pkcs1-2048-sha256 RSA_SIGN_PKCS1_2048_SHA256 RSASSA-PKCS1 v1_5 の 2,048 ビットの鍵(SHA-256 ダイジェストを使用)
rsa-sign-pkcs1-3072-sha256 RSA_SIGN_PKCS1_3072_SHA256 RSASSA-PKCS1 v1_5 の 3,072 ビットの鍵(SHA-256 ダイジェストを使用)
rsa-sign-pkcs1-4096-sha256 RSA_SIGN_PKCS1_4096_SHA256 RSASSA-PKCS1 v1_5 の 4,096 ビットの鍵(SHA-256 ダイジェストを使用)
rsa-sign-pkcs1-4096-sha512 RSA_SIGN_PKCS1_4096_SHA512 RSASSA-PKCS1 v1_5 の 4,096 ビットの鍵(SHA-512 ダイジェストを使用)
rsa-sign-raw-pkcs1-2048 RSA_SIGN_RAW_PKCS1_2048 RSASSA-PKCS1-v1_5 のエンコードなし署名(2,048 ビットの鍵を使用)
rsa-sign-raw-pkcs1-3072 RSA_SIGN_RAW_PKCS1_3072 RSASSA-PKCS1-v1_5 のエンコードなし署名(3,072 ビットの鍵を使用)
rsa-sign-raw-pkcs1-4096 RSA_SIGN_RAW_PKCS1_4096 RSASSA-PKCS1-v1_5 のエンコードなし署名(4,096 ビットの鍵を使用)

確率的署名スキーム(PSS)の場合、使用されるソルトの長さはダイジェスト アルゴリズムで使用される長さと同じです。たとえば、RSA_SIGN_PSS_2048_SHA256 では、ソルト長 256 ビットの PSS が使用されます。PSS では、マスク生成関数(MGF1)でもアルゴリズム名に指定したダイジェスト アルゴリズムが使用されます。たとえば、RSA_SIGN_PSS_2048_SHA256 を使用している場合、署名するデータの SHA-256 ハッシュを送信すると、署名を計算する際に MGF1 のハッシュ アルゴリズムとして SHA-256 が内部で使用されます。

非対称暗号化アルゴリズム

鍵の目的が ASYMMETRIC_DECRYPT の場合、RSA 暗号化が有効になります。ASYMMETRIC_DECRYPT アルゴリズムの形式は次のとおりです。

RSA_DECRYPT_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]_[DIGEST_ALGORITHM]

ここで

  • [PADDING_ALGORITHM] はパディング アルゴリズムを示します。
  • [MODULUS_BIT_LENGTH] は鍵のビット長を示します。
  • [DIGEST_ALGORITHM] はダイジェスト アルゴリズムを示します。

次の表に、目的が ASYMMETRIC_DECRYPT の RSA 鍵で使用できるアルゴリズムを示します。gcloud コマンドで小文字のアルゴリズム名、Cloud Key Management Service API で大文字のアルゴリズム名を使用します。

アルゴリズム(SDK) アルゴリズム(API) 説明
rsa-decrypt-oaep-2048-sha1 RSA_DECRYPT_OAEP_2048_SHA1 RSAES-OAEP の 2048 ビットの鍵(SHA-1 ダイジェストを使用)
rsa-decrypt-oaep-2048-sha256 RSA_DECRYPT_OAEP_2048_SHA256 RSAES-OAEP の 2048 ビットの鍵(SHA-256 ダイジェストを使用)
rsa-decrypt-oaep-3072-sha1 RSA_DECRYPT_OAEP_3072_SHA1 RSAES-OAEP の 3072 ビットの鍵(SHA-1 ダイジェストを使用)
rsa-decrypt-oaep-3072-sha256(推奨) RSA_DECRYPT_OAEP_3072_SHA256 RSAES-OAEP の 3072 ビットの鍵(SHA-256 ダイジェストを使用)
rsa-decrypt-oaep-4096-sha1 RSA_DECRYPT_OAEP_4096_SHA1 RSAES-OAEP の 4096 ビットの鍵(SHA-1 ダイジェストを使用)
rsa-decrypt-oaep-4096-sha256 RSA_DECRYPT_OAEP_4096_SHA256 RSAES-OAEP の 4096 ビットの鍵(SHA-256 ダイジェストを使用)
rsa-decrypt-oaep-4096-sha512 RSA_DECRYPT_OAEP_4096_SHA512 RSAES-OAEP の 4,096 ビットの鍵(SHA-512 ダイジェストを使用)

これらのアルゴリズムはすべて、マスク生成関数 MGF1 で Optimal Asymmetric Encryption Padding(OAEP)を使用します。MGF1 にはダイジェスト アルゴリズムが必要です。Cloud KMS では、MGF1 で使用するダイジェスト関数が鍵アルゴリズム名の一部として指定されます。たとえば、RSA_DECRYPT_OAEP_3072_SHA256 アルゴリズムを使用している場合、データを暗号化するときに、MGF1 で SHA-256 を使用する必要があります。

MAC 署名アルゴリズム

鍵の目的に MAC を設定すると、対称 MAC 署名が有効になります。現在、鍵の目的に MAC が設定された鍵がサポートしているのは、HMAC 署名のみです。

HMAC 署名アルゴリズム

HMAC 署名アルゴリズムの形式は次のとおりです。

HMAC_[HASH_ALGORITHM]

ここで

  • [HASH_ALGORITHM] は、ハッシュ アルゴリズムです。

次の表に、目的 MAC が設定された鍵に現在使用可能な HMAC アルゴリズムを示します。gcloud コマンドで小文字のアルゴリズム名、Cloud Key Management Service API で大文字のアルゴリズム名を使用します。

アルゴリズム(SDK) アルゴリズム(API) 説明
hmac-sha1 HMAC_SHA1 SHA-1 ダイジェストを使用する HMAC
hmac-sha224 HMAC_SHA224 SHA-224 ダイジェストを使用する HMAC
hmac-sha256(推奨) HMAC_SHA256 SHA-256 ダイジェストを使用する HMAC
hmac-sha384 HMAC_SHA384 SHA-384 ダイジェストを使用する HMAC
hmac-sha512 HMAC_SHA512 SHA-512 ダイジェストを使用する HMAC

アルゴリズムに関する推奨事項

デジタル署名には楕円曲線署名アルゴリズムの使用が推奨されます。推奨されている楕円曲線アルゴリズムは EC_SIGN_P256_SHA256 です。RSA 署名アルゴリズムを使用する場合、推奨されているアルゴリズムは RSA_SIGN_PSS_3072_SHA256 です。

非対称暗号化で推奨されているアルゴリズムは、RSA_DECRYPT_OAEP_3072_SHA256 です。

MAC 署名では、HMAC_SHA256 が推奨アルゴリズムです。

gcloud CLI での使用がサポートされるアルゴリズムの値の一覧については、--default-algorithm をご覧ください。

保護レベル

保護レベルは暗号オペレーションをどのように行うかを表します。鍵を作成した後に保護レベルを変更することはできません。

保護レベル 説明
SOFTWARE 暗号オペレーションはソフトウェアで行われます。
HSM 暗号オペレーションは HSM で実行されます。
EXTERNAL 暗号オペレーションは、インターネット経由で Google Cloud に接続された外部鍵マネージャーに保存されている鍵を使用して実行されます。オペレーションは、対称暗号化と非対称署名に限定されています。
EXTERNAL_VPC 暗号オペレーションは、Virtual Private Cloud(VPC)を介して Google Cloud に接続された外部鍵マネージャーに保存されている鍵を使用して実行されます。オペレーションは、対称暗号化と非対称署名に限定されています。

すべての鍵の目的は、保護レベルが SOFTWARE または HSM の鍵でサポートされています。