鍵の目的とアルゴリズム

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

鍵の目的

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

シナリオ 鍵の目的 サポートされるメソッド
対称暗号化 ENCRYPT_DECRYPT cryptoKeys.encryptcryptoKeys.decrypt
非対称署名 ASYMMETRIC_SIGN cryptoKeys.asymmetricSigncryptoKeyVersions.getPublicKey
非対称暗号化 ASYMMETRIC_DECRYPT cryptoKeyVersions.asymmetricDecryptcryptoKeyVersions.getPublicKey

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

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

gcloud コマンドライン ツールでの使用がサポートされる鍵の目的の一覧については、--purpose をご覧ください。

対称暗号化アルゴリズム

鍵の目的が 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_p256_sha256(推奨) EC_SIGN_P256_SHA256 P-256 曲線上の ECDSA(SHA-256 ダイジェストを使用)
ec_sign_p384_sha384 EC_SIGN_P384_SHA384 P-384 曲線上の ECDSA(SHA-384 ダイジェストを使用)

RSA 署名アルゴリズム

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

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

ここで

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

次の表に、目的が 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 ダイジェストを使用)

確率的署名スキーム(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_sha256 RSA_DECRYPT_OAEP_2048_SHA256 RSAES-OAEP の 2048 ビットの鍵(SHA-256 ダイジェストを使用)
rsa_decrypt_oaep_3072_sha256(推奨) RSA_DECRYPT_OAEP_3072_SHA256 RSAES-OAEP の 3072 ビットの鍵(SHA-256 ダイジェストを使用)
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 を使用する必要があります。

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

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

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

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

保護レベル

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

保護レベル 説明
SOFTWARE 暗号オペレーションはソフトウェアで行われます。
HSM 暗号オペレーションは HSM で行われます。
EXTERNAL 暗号オペレーションは、外部鍵マネージャーに保存されている鍵を使用して実行されます。これは、対称暗号化に限定されます。

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