各 Cloud Key Management Service の鍵には、鍵の暗号機能を定義する目的があります。その目的によって、その鍵の各バージョンでサポートされるアルゴリズムも決まります。アルゴリズムでは、各暗号オペレーションで使用するパラメータが定義されます。鍵には、暗号オペレーションをソフトウェアまたはハードウェア セキュリティ モジュール(HSM)のどちらで実施するかを示す保護レベルも設定されます。
鍵の目的
Cloud KMS には、次のシナリオに対応する鍵の目的があります。
シナリオ | 鍵の目的(SDK) | 鍵の目的(API) | サポートされるメソッド |
---|---|---|---|
対称暗号化 | encryption |
ENCRYPT_DECRYPT |
cryptoKeys.encrypt、cryptoKeys.decrypt |
未加工対称暗号化 | raw-encryption |
RAW_ENCRYPT_DECRYPT |
cryptoKeys.rawEncrypt、cryptoKeys.rawDecrypt |
非対称署名 | asymmetric-signing |
ASYMMETRIC_SIGN |
cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey |
非対称暗号化 | asymmetric-encryption |
ASYMMETRIC_DECRYPT |
cryptoKeyVersions.asymmetricDecrypt、cryptoKeyVersions.getPublicKey |
MAC 署名 | mac |
MAC |
cryptoKeyVersions.macSign、cryptoKeyVersions.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
の鍵でサポートされています。