密钥用途和算法

每个 Cloud KMS 密钥都有其相应用途,用于定义密钥的加密功能。用途还确定密钥的各版本支持哪些算法。各个算法都定义了每个加密操作必须使用哪些参数。每个密钥还具有相应保护级别,以指示加密操作是在软件或硬件安全模块 (HSM) 中执行。

密钥用途

Cloud KMS 为以下场景提供了相应密钥用途:

场景 密钥用途 支持的方法
对称加密 ENCRYPT_DECRYPT cryptoKeys.encryptcryptoKeys.decrypt
非对称签名 ASYMMETRIC_SIGN cryptoKeys.asymmetricSigncryptoKeyVersions.getPublicKey
非对称加密 ASYMMETRIC_DECRYPT cryptoKeyVersions.asymmetricDecryptcryptoKeyVersions.getPublicKey

创建密钥时,可以定义该密钥的用途和算法。您可以在创建新密钥版本时更改算法,具体取决于其用途。用途无法进行改变。

具有相同用途的两个密钥可以使用不同的基础算法,但它们必须支持同一组加密操作。

如需查看要与 gcloud 命令行工具搭配使用的受支持的密钥用途值列表,请参阅 --purpose

对称加密算法

ENCRYPT_DECRYPT 密钥用途可启用对称加密。具有密钥用途 ENCRYPT_DECRYPT 的所有密钥都使用 GOOGLE_SYMMETRIC_ENCRYPTION 算法。此算法不使用任何参数。此算法使用 256 位高级加密标准 (AES-256) 密钥(采用伽罗瓦计数器模式 (GCM)),使用 Cloud KMS 内部元数据进行填充。

非对称签名算法

ASYMMETRIC_SIGN 密钥用途可启用非对称签名。具有密钥用途 ASYMMETRIC_SIGN 的密钥使用不同的算法,具体取决于密钥是否支持椭圆曲线签名RSA 签名

对于具有用途 ASYMMETRIC_SIGN 的密钥,您可以通过该算法在不同大小的密钥和不同的签名方案之间切换。

椭圆曲线签名算法

椭圆曲线签名算法的格式如下

EC_SIGN_[ELLIPTIC_CURVE]_[DIGEST_ALGORITHM]

其中:

  • [ELLIPTIC_CURVE] 是椭圆曲线
  • [DIGEST_ALGORITHM] 是摘要算法

下表列出了具有 ASYMMETRIC_SIGN 用途的椭圆曲线密钥的可能算法。

算法 说明
EC_SIGN_P256_SHA256(推荐) 具有 SHA-256 摘要的 P-256 曲线上的 ECDSA
EC_SIGN_P384_SHA384 具有 SHA-384 摘要的 P-384 曲线上的 ECDSA

RSA 签名算法

RSA 签名算法的格式如下

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

其中:

  • [PADDING_ALGORITHM] 是填充算法
  • [MODULUS_BIT_LENGTH] 是密钥的位长度
  • [DIGEST_ALGORITHM] 是摘要算法

下表列出了具有 ASYMMETRIC_SIGN 用途的 RSA 密钥的可能算法。

算法 说明
RSA_SIGN_PSS_2048_SHA256 具有 SHA-256 摘要的 RSASSA-PSS 2048 位密钥
RSA_SIGN_PSS_3072_SHA256(推荐) 具有 SHA-256 摘要的 RSASSA-PSS 3072 位密钥
RSA_SIGN_PSS_4096_SHA256 具有 SHA-256 摘要的 RSASSA-PSS 4096 位密钥
RSA_SIGN_PSS_4096_SHA512 具有 SHA-512 摘要的 RSASSA-PSS 4096 位密钥
RSA_SIGN_PKCS1_2048_SHA256 具有 2048 位密钥和 SHA-256 摘要的 RSASSA-PKCS1-v1_5
RSA_SIGN_PKCS1_3072_SHA256 具有 3072 位密钥和 SHA-256 摘要的 RSASSA-PKCS1-v1_5
RSA_SIGN_PKCS1_4096_SHA256 具有 4096 位密钥和 SHA-256 摘要的 RSASSA-PKCS1-v1_5
RSA_SIGN_PKCS1_4096_SHA512 具有 4096 位密钥和 SHA-512 摘要的 RSASSA-PKCS1-v1_5

对于概率签名方案 (PSS),使用的盐长度等于摘要算法的长度。例如,RSA_SIGN_PSS_2048_SHA256 使用盐长度为 256 位的 PSS。另外,对于 PSS,算法名称中指定的摘要算法也用于掩码生成函数 (MGF1)。例如,如果您使用的是 RSA_SIGN_PSS_2048_SHA256,则将提交要签名的数据的 SHA-256 哈希值,Cloud KMS 将在内部使用 SHA-256 作为计算签名时 MGF1 的哈希算法。

非对称加密算法

ASYMMETRIC_DECRYPT 密钥用途可启用 RSA 加密。ASYMMETRIC_DECRYPT 算法的格式如下

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

其中:

  • [PADDING_ALGORITHM] 是填充算法
  • [MODULUS_BIT_LENGTH] 是密钥的位长度
  • [DIGEST_ALGORITHM] 是摘要算法

下表列出了用途为 ASYMMETRIC_DECRYPT 的 RSA 密钥的可能算法。

算法 说明
RSA_DECRYPT_OAEP_2048_SHA256 具有 SHA-256 摘要的 RSAES-OAEP 2048 位密钥。
RSA_DECRYPT_OAEP_3072_SHA256(推荐) 具有 SHA-256 摘要的 RSAES-OAEP 3072 位密钥。
RSA_DECRYPT_OAEP_4096_SHA256 带有 SHA-256 摘要的 RSAES-OAEP 4096 位密钥
RSA_DECRYPT_OAEP_4096_SHA512 带有 SHA-512 摘要的 RSAES-OAEP 4096 位密钥

所有这些算法都使用具有掩码生成函数 MGF1 的最优非对称加密填充 (OAEP)。MGF1 需要摘要算法。在 Cloud KMS 中,要与 MGF1 搭配使用的摘要函数将在密钥算法名称中进行指定。例如,如果您使用的是 RSA_DECRYPT_OAEP_3072_SHA256 算法,则在加密数据时应当将 SHA-256 和 MGF1 搭配使用。

算法建议

对于数字签名,建议使用椭圆曲线签名算法。EC_SIGN_P256_SHA256 是推荐的椭圆曲线算法。如果要使用 RSA 签名算法,推荐使用的 RSA 签名算法为 RSA_SIGN_PSS_3072_SHA256。

对于非对称加密,推荐使用 RSA_DECRYPT_OAEP_3072_SHA256 算法。

如需查看要与 gcloud 工具搭配使用的受支持的算法值列表,请参阅 --default-algorithm

保护级别

保护级别指示加密操作的执行方式。创建密钥后,无法更改其保护级别。

保护级别 说明
SOFTWARE 在软件中执行加密操作
HSM 在硬件安全模块中执行加密操作

SOFTWARE 和 HSM 保护级别均支持所有密钥用途。

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud KMS