Principais finalidades e algoritmos

Cada chave do Cloud Key Management Service tem uma finalidade, que define as capacidades criptográficas da chave. A finalidade também determina que algoritmos são suportados para as versões da chave. Cada algoritmo define os parâmetros que têm de ser usados para cada operação criptográfica. Cada chave também tem um nível de proteção que indica se as operações criptográficas são realizadas em software ou num módulo de segurança de hardware (HSM).

Finalidades principais

O Cloud KMS oferece finalidades das chaves para os seguintes cenários:

Cenário Finalidade principal (SDK) Finalidade da chave (API) Métodos suportados
Encriptação simétrica encryption ENCRYPT_DECRYPT cryptoKeys.encrypt, cryptoKeys.decrypt
Encriptação simétrica não processada raw-encryption RAW_ENCRYPT_DECRYPT cryptoKeys.rawEncrypt, cryptoKeys.rawDecrypt
Assinatura assimétrica asymmetric-signing ASYMMETRIC_SIGN cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
Encriptação assimétrica asymmetric-encryption ASYMMETRIC_DECRYPT cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
Mecanismos de encapsulamento de chaves key-encapsulation KEY_ENCAPSULATION cryptoKeyVersions.decapsulate, cryptoKeyVersions.getPublicKey
Assinatura MAC mac MAC cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify

Quando cria uma chave, define a finalidade e o algoritmo dessa chave. Pode alterar o algoritmo quando cria novas versões de chaves, sujeito ao âmbito da respetiva finalidade. Não é possível alterar a finalidade.

Duas chaves com o mesmo objetivo podem usar algoritmos subjacentes diferentes, mas têm de suportar o mesmo conjunto de operações criptográficas.

Algoritmos de encriptação simétrica

A finalidade da chave ENCRYPT_DECRYPT permite a encriptação simétrica. Todas as chaves com o objetivo da chave ENCRYPT_DECRYPT usam o algoritmo GOOGLE_SYMMETRIC_ENCRYPTION. Não são usados parâmetros com este algoritmo. Este algoritmo usa chaves do padrão de encriptação avançada (AES-256) de 256 bits no modo de contador de Galois (GCM), preenchidas com metadados internos do Cloud KMS.

Algoritmos de assinatura assimétricos

O objetivo da chave ASYMMETRIC_SIGN permite a assinatura assimétrica. As chaves com key purpose ASYMMETRIC_SIGN usam algoritmos diferentes, consoante a chave suporte assinatura de curva elíptica ou assinatura RSA.

Para uma chave com o objetivo ASYMMETRIC_SIGN, pode alternar entre chaves de diferentes tamanhos e diferentes esquemas de assinatura através do algoritmo.

Algoritmos de assinatura de curva elíptica

O formato de um algoritmo de assinatura de curva elíptica é

EC_SIGN_[ELLIPTIC_CURVE]_[DIGEST_ALGORITHM]

onde

  • [ELLIPTIC_CURVE] é a curva elíptica
  • [DIGEST_ALGORITHM] é o algoritmo de resumo

A tabela seguinte lista os possíveis algoritmos para chaves de curva elíptica com o objetivo ASYMMETRIC_SIGN. Use os nomes dos algoritmos em minúsculas com o comando gcloud e os nomes em maiúsculas com a API Cloud Key Management Service.

Algoritmo (SDK) Algoritmo (API) Descrição
ec-sign-ed25519 EC_SIGN_ED25519 EdDSA na Curve25519 no modo PureEdDSA, que usa dados não processados como entrada em vez de dados com hash
ec-sign-p256-sha256 **(recomendado)** EC_SIGN_P256_SHA256 ECDSA na curva P-256 com um resumo SHA-256
ec-sign-p384-sha384 EC_SIGN_P384_SHA384 ECDSA na curva P-384 com um resumo SHA-384
ec-sign-secp256k1-sha256 EC_SIGN_SECP256K1_SHA256 ECDSA na curva Secp256k1 com um resumo SHA-256

Algoritmos de assinatura RSA

O formato de um algoritmo de assinatura RSA é

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

onde

  • [PADDING_ALGORITHM] é o algoritmo de preenchimento
  • [MODULUS_BIT_LENGTH] é o comprimento em bits da chave
  • [DIGEST_ALGORITHM] é o algoritmo de resumo

Tenha em atenção que alguns algoritmos estão formatados como

RSA_SIGN_RAW_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]

e omita o algoritmo de resumo. Estes algoritmos são uma variante da assinatura PKCS n.º 1 que omite a codificação num DigestInfo. Na variante:

  • É calculado um resumo sobre a mensagem que vai ser assinada
  • O preenchimento PKCS #1 é aplicado diretamente ao resumo
  • É calculada uma assinatura do resumo preenchido, usando a chave privada RSA

A tabela seguinte lista os possíveis algoritmos para chaves RSA com o objetivo ASYMMETRIC_SIGN. Use os nomes dos algoritmos em minúsculas com o comando gcloud e os nomes em maiúsculas com a API Cloud Key Management Service.

Algoritmo (SDK) Algoritmo (API) Descrição
rsa-sign-pss-2048-sha256 RSA_SIGN_PSS_2048_SHA256 Chave RSASSA-PSS de 2048 bits com um resumo SHA-256
rsa-sign-pss-3072-sha256 (recomendado) RSA_SIGN_PSS_3072_SHA256 Chave RSASSA-PSS de 3072 bits com um resumo SHA-256
rsa-sign-pss-4096-sha256 RSA_SIGN_PSS_4096_SHA256 Chave RSASSA-PSS de 4096 bits com um resumo SHA-256
rsa-sign-pss-4096-sha512 RSA_SIGN_PSS_4096_SHA512 Chave RSASSA-PSS de 4096 bits com um resumo SHA-512
rsa-sign-pkcs1-2048-sha256 RSA_SIGN_PKCS1_2048_SHA256 RSASSA-PKCS1 v1_5 com uma chave de 2048 bits e um resumo SHA-256
rsa-sign-pkcs1-3072-sha256 RSA_SIGN_PKCS1_3072_SHA256 RSASSA-PKCS1 v1_5 com uma chave de 3072 bits e um resumo SHA-256
rsa-sign-pkcs1-4096-sha256 RSA_SIGN_PKCS1_4096_SHA256 RSASSA-PKCS1 v1_5 com uma chave de 4096 bits e um resumo SHA-256
rsa-sign-pkcs1-4096-sha512 RSA_SIGN_PKCS1_4096_SHA512 RSASSA-PKCS1 v1_5 com uma chave de 4096 bits e um resumo SHA-512
rsa-sign-raw-pkcs1-2048 RSA_SIGN_RAW_PKCS1_2048 Assinatura RSASSA-PKCS1-v1_5 sem codificação, com uma chave de 2048 bits
rsa-sign-raw-pkcs1-3072 RSA_SIGN_RAW_PKCS1_3072 Assinatura RSASSA-PKCS1-v1_5 sem codificação, com uma chave de 3072 bits
rsa-sign-raw-pkcs1-4096 RSA_SIGN_RAW_PKCS1_4096 Assinatura RSASSA-PKCS1-v1_5 sem codificação, com uma chave de 4096 bits

Para o esquema de assinatura probabilística (PSS), o comprimento do sal usado é igual ao comprimento do algoritmo de resumo. Por exemplo, RSA_SIGN_PSS_2048_SHA256 usa PSS com um comprimento de salt de 256 bits. Além disso, para o PSS, o algoritmo de resumo especificado no nome do algoritmo também é usado para a função de geração de máscara (MGF1). Por exemplo, se estiver a usar RSA_SIGN_PSS_2048_SHA256, envia um hash SHA-256 dos dados a assinar, e o Cloud KMS usa internamente o SHA-256 como o algoritmo de hash para MGF1 ao calcular a assinatura.

Algoritmos de assinatura PQC

Os algoritmos de assinatura de criptografia pós-quântica (PQC) começam com o prefixo PQ_SIGN_. A tabela seguinte apresenta os algoritmos PQC que o Cloud KMS pode usar para chaves com o objetivo ASYMMETRIC_SIGN. Os algoritmos puros usam dados brutos como entrada, enquanto os algoritmos com hash aplicado previamente aceitam um hash dos dados.

Algoritmo (SDK) Algoritmo (API) Variante Descrição
pq-sign-ml-dsa-65 PQ_SIGN_ML_DSA_65 Pure Algoritmo de assinatura digital baseado em retículos de módulos.
pq-sign-slh-dsa-sha2-128s PQ_SIGN_SLH_DSA_SHA2_128S Pure Algoritmo de assinatura digital baseado em hash sem estado.
pq-sign-hash-slh-dsa-sha2-128s-sha256 PQ_SIGN_HASH_SLH_DSA_SHA2_128S_SHA256 Pré-hash Algoritmo de assinatura digital baseado em hash sem estado.

Algoritmos de encriptação assimétricos

O objetivo da chave ASYMMETRIC_DECRYPT permite a encriptação RSA. O formato de um algoritmo ASYMMETRIC_DECRYPT é

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

onde

  • [PADDING_ALGORITHM] é o algoritmo de preenchimento
  • [MODULUS_BIT_LENGTH] é o comprimento em bits da chave
  • [DIGEST_ALGORITHM] é o algoritmo de resumo

A tabela seguinte lista os possíveis algoritmos para chaves RSA com o objetivo ASYMMETRIC_DECRYPT. Use os nomes dos algoritmos em minúsculas com o comando gcloud e os nomes em maiúsculas com a API Cloud Key Management Service.

Algoritmo (SDK) Algoritmo (API) Descrição
rsa-decrypt-oaep-2048-sha1 RSA_DECRYPT_OAEP_2048_SHA1 Chave RSAES-OAEP de 2048 bits com um resumo SHA-1
rsa-decrypt-oaep-2048-sha256 RSA_DECRYPT_OAEP_2048_SHA256 Chave RSAES-OAEP de 2048 bits com um resumo SHA-256
rsa-decrypt-oaep-3072-sha1 RSA_DECRYPT_OAEP_3072_SHA1 Chave RSAES-OAEP de 3072 bits com um resumo SHA-1
rsa-decrypt-oaep-3072-sha256 (recomendado) RSA_DECRYPT_OAEP_3072_SHA256 Chave RSAES-OAEP de 3072 bits com um resumo SHA-256
rsa-decrypt-oaep-4096-sha1 RSA_DECRYPT_OAEP_4096_SHA1 Chave RSAES-OAEP de 4096 bits com um resumo SHA-1
rsa-decrypt-oaep-4096-sha256 RSA_DECRYPT_OAEP_4096_SHA256 Chave RSAES-OAEP de 4096 bits com um resumo SHA-256
rsa-decrypt-oaep-4096-sha512 RSA_DECRYPT_OAEP_4096_SHA512 Chave RSAES-OAEP de 4096 bits com um resumo SHA-512

Todos estes algoritmos usam o preenchimento de encriptação assimétrica ideal (OAEP) com a função de geração de máscara MGF1. O MGF1 requer um algoritmo de resumo. No Cloud KMS, a função de resumo a usar com MGF1 é especificada como parte do nome do algoritmo da chave. Por exemplo, se estiver a usar o algoritmo RSA_DECRYPT_OAEP_3072_SHA256, deve usar o SHA-256 com MGF1 quando encriptar dados.

Algoritmos de encapsulamento de chaves

O objetivo principal da chave KEY_ENCAPSULATION é estabelecer segredos partilhados através de mecanismos de encapsulamento de chaves.

A tabela seguinte lista os possíveis algoritmos para chaves com o objetivo KEY_ENCAPSULATION. Todos estes algoritmos foram concebidos para serem seguros pós-quânticos. Use os nomes dos algoritmos em minúsculas com o comando gcloud e os nomes em maiúsculas com a API Cloud Key Management Service.

Algoritmo (SDK) Algoritmo (API) Descrição
ml-kem-768 ML_KEM_768 Mecanismo de encapsulamento de chaves baseado em retículos de módulos com conjunto de parâmetros ML-KEM-768 (FIPS 203)
ml-kem-1024 ML_KEM_1024 Mecanismo de encapsulamento de chaves baseado em retículos de módulos com conjunto de parâmetros ML-KEM-1024 (FIPS 203)
kem-xwing KEM_XWING KEM híbrido X-Wing que combina ML-KEM-768 com X25519

Algoritmos de assinatura MAC

A finalidade da chave MAC permite a assinatura MAC simétrica. As chaves com o objetivo da chave MAC atualmente só suportam a assinatura HMAC.

Algoritmos de assinatura HMAC

O formato de um algoritmo de assinatura HMAC é

HMAC_[HASH_ALGORITHM]

onde

  • [HASH_ALGORITHM] é o algoritmo hash

A tabela seguinte indica os algoritmos HMAC atualmente disponíveis para chaves com o objetivo MAC. Use os nomes dos algoritmos em letras minúsculas com o comando gcloud e os nomes em letras maiúsculas com a API Cloud Key Management Service.

Algoritmo (SDK) Algoritmo (API) Descrição
hmac-sha1 HMAC_SHA1 HMAC com um resumo SHA-1
hmac-sha224 HMAC_SHA224 HMAC com um resumo SHA-224
hmac-sha256 (recomendado) HMAC_SHA256 HMAC com um resumo SHA-256
hmac-sha384 HMAC_SHA384 HMAC com um resumo SHA-384
hmac-sha512 HMAC_SHA512 HMAC com um resumo SHA-512

Recomendações do algoritmo

Para a assinatura digital, a recomendação é usar algoritmos de assinatura de curva elíptica. EC_SIGN_P256_SHA256 é o algoritmo de curva elíptica recomendado. Se for usar algoritmos de assinatura RSA, o algoritmo de assinatura RSA recomendado é RSA_SIGN_PSS_3072_SHA256.

Para a encriptação assimétrica, o algoritmo recomendado é RSA_DECRYPT_OAEP_3072_SHA256.

Para a assinatura MAC, o algoritmo recomendado é HMAC_SHA256.

Para ver a lista de valores de algoritmos suportados a usar com a CLI gcloud, consulte --default-algorithm.

Níveis de proteção

O nível de proteção indica como são realizadas as operações criptográficas. Depois de criar uma chave, não pode alterar o nível de proteção.

Nível de proteção Descrição
SOFTWARE As operações criptográficas são realizadas no software.
HSM As operações criptográficas são realizadas num HSM.
EXTERNO As operações criptográficas são realizadas através de uma chave armazenada num gestor de chaves externo ligado ao Google Cloud através da Internet. Limitado à encriptação simétrica e à assinatura assimétrica.
EXTERNAL_VPC As operações criptográficas são realizadas através de uma chave armazenada num gestor de chaves externo ligado ao Google Cloud através da nuvem privada virtual (VPC). Limitado à encriptação simétrica e à assinatura assimétrica.

Todos os objetivos principais são suportados para chaves com o nível de proteção SOFTWARE ou HSM.