Algoritmos e finalidades de chave

Cada chave do Cloud Key Management Service tem uma finalidade, que define os recursos criptográficos da chave. A finalidade também determina quais algoritmos são compatíveis com as versões da chave. Cada algoritmo define quais parâmetros precisam 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 executadas no software ou em um módulo de segurança de hardware (HSM, na sigla em inglês).

Finalidades de chave

O Cloud KMS oferece finalidades de chave para os cenários a seguir:

Cenário Finalidade da chave (SDK) Finalidade da chave (API) Métodos aceitos
Criptografia simétrica encryption ENCRYPT_DECRYPT cryptoKeys.encrypt, cryptoKeys.decrypt
Criptografia simétrica bruta raw-encryption RAW_ENCRYPT_DECRYPT cryptoKeys.rawEncrypt, cryptoKeys.rawDecrypt
Assinatura assimétrica asymmetric-signing ASYMMETRIC_SIGN cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
Criptografia assimétrica asymmetric-encryption ASYMMETRIC_DECRYPT cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
Assinatura MAC mac MAC cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify

Ao criar uma chave, você define a finalidade e o algoritmo dela. Você pode alterar o algoritmo ao criar novas versões de chave. Isso varia conforme o escopo da finalidade dela. A finalidade não pode ser alterada.

Duas chaves com a mesma finalidade podem usar diferentes algoritmos subjacentes. No entanto, elas precisam ser compatíveis com o mesmo conjunto de operações criptográficas.

Algoritmos de criptografia simétrica

A finalidade de chave ENCRYPT_DECRYPT permite a criptografia simétrica. Todas as chaves com a finalidade de chave ENCRYPT_DECRYPT usam o algoritmo GOOGLE_SYMMETRIC_ENCRYPTION. Nenhum parâmetro é usado com esse algoritmo. Esse algoritmo usa chaves no Padrão de criptografia avançada de 256 bits (AES-256, na sigla em inglês) no modo de contador Galois (GCM, na sigla em inglês), preenchidas com metadados internos do Cloud KMS.

Algoritmos de assinatura assimétrica

A finalidade de chave ASYMMETRIC_SIGN permite a assinatura assimétrica. As chaves com a finalidade ASYMMETRIC_SIGN usam algoritmos diferentes, dependendo da compatibilidade da chave com a assinatura de curva elíptica ou a assinatura RSA.

Para uma chave com a finalidade ASYMMETRIC_SIGN, é possível alternar entre chaves de tamanhos diferentes e esquemas de assinatura diversos por meio 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 a seguir lista os possíveis algoritmos para chaves de curva elíptica com a finalidade ASYMMETRIC_SIGN. Use os nomes dos algoritmos em letras minúsculas com o comando gcloud e letras maiúsculas com a API Cloud Key Management Service.

Algoritmo (SDK) Algoritmo (API) Descrição
ec-sign-ed25519 EC_SIGN_ED25519 EdDSA na curva 25519 em PureEdDSA mode, que usa dados brutos 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] é a quantidade de bits da chave;
  • [DIGEST_ALGORITHM] é o algoritmo de resumo.

Alguns algoritmos são formatados como

RSA_SIGN_RAW_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]

e omitem o algoritmo de resumo. Esses algoritmos são uma variante da assinatura PKCS #1 que omite a codificação em um DigestInfo. Na variante:

  • um resumo é calculado com base na mensagem que será assinada
  • O padding PKCS #1 é aplicado diretamente ao resumo.
  • uma assinatura do resumo preenchido é calculada usando a chave privada RSA

A tabela a seguir lista os possíveis algoritmos para chaves RSA com a finalidade ASYMMETRIC_SIGN. Use os nomes dos algoritmos em letras minúsculas com o comando gcloud e letras 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 de 2048 bits RSASSA-PSS com um resumo SHA-256
rsa-sign-pss-3072-sha256 (recomendado) RSA_SIGN_PSS_3072_SHA256 Chave de 3072 bits RSASSA-PSS com um resumo SHA-256
rsa-sign-pss-4096-sha256 RSA_SIGN_PSS_4096_SHA256 Chave de 4096 bits RSASSA-PSS com um resumo SHA-256
rsa-sign-pss-4096-sha512 RSA_SIGN_PSS_4096_SHA512 Chave RSASSA-PSS de 4.096 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 2.048 bits
rsa-sign-raw-pkcs1-3072 RSA_SIGN_RAW_PKCS1_3072 Assinatura RSASSA-PKCS1-v1_5 sem codificação, com uma chave de 3.072 bits
rsa-sign-raw-pkcs1-4096 RSA_SIGN_RAW_PKCS1_4096 Assinatura RSASSA-PKCS1-v1_5 sem codificação, com uma chave de 4.096 bits.

Para o esquema de assinatura probabilística (PSS), o comprimento de sal usado é igual ao comprimento do algoritmo de resumo. Por exemplo, RSA_SIGN_PSS_2048_SHA256 usará o PSS com um comprimento de sal de 256 bits. Além disso, no 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 usando o RSA_SIGN_PSS_2048_SHA256, você enviará um hash SHA-256 dos dados que serão assinados. O Cloud KMS usará internamente o SHA-256 como o algoritmo hash para MGF1 ao processar a assinatura.

Algoritmos de criptografia assimétrica

A finalidade de chave ASYMMETRIC_DECRYPT permite a criptografia 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] é a quantidade de bits da chave;
  • [DIGEST_ALGORITHM] é o algoritmo de resumo.

A tabela a seguir lista os possíveis algoritmos para chaves RSA com a finalidade ASYMMETRIC_DECRYPT. Use os nomes dos algoritmos em letras minúsculas com o comando gcloud e letras 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 4.096 bits com um resumo SHA-1.
rsa-decrypt-oaep-2048-sha256 RSA_DECRYPT_OAEP_2048_SHA256 Chave de 2048 bits RSAES-OAEP com um resumo SHA-256
rsa-decrypt-oaep-3072-sha1 RSA_DECRYPT_OAEP_3072_SHA1 Chave RSAES-OAEP de 4.096 bits com um resumo SHA-1.
rsa-decrypt-oaep-3072-sha256 (recomendado) RSA_DECRYPT_OAEP_3072_SHA256 Chave de 3072 bits RSAES-OAEP com um resumo SHA-256
rsa-decrypt-oaep-4096-sha1 RSA_DECRYPT_OAEP_4096_SHA1 Chave RSAES-OAEP de 4.096 bits com um resumo SHA-1.
rsa-decrypt-oaep-4096-sha256 RSA_DECRYPT_OAEP_4096_SHA256 Chave de 4096 bits RSAES-OAEP com um resumo SHA-256
rsa-decrypt-oaep-4096-sha512 RSA_DECRYPT_OAEP_4096_SHA512 Chave RSAES-OAEP de 4.096 bits com um resumo SHA-512.

Todos esses algoritmos usam o Optimal Asymmetric Encryption Padding (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 que será usada com o MGF1 é especificada como parte do nome do algoritmo de chave. Por exemplo, se estiver usando o algoritmo RSA_DECRYPT_OAEP_3072_SHA256, você precisará usar SHA-256 com MGF1 ao criptografar dados.

Algoritmos de assinatura MAC

A finalidade de chave MAC permite a assinatura MAC simétrica. Atualmente, as chaves com MAC de finalidade de chave suportam apenas assinatura HMAC.

Algoritmos de assinatura HMAC

O formato de um algoritmo de assinatura HMAC é

HMAC_[HASH_ALGORITHM]

onde

  • [HASH_ALGORITHM] é o algoritmo de hash

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

Algoritmo (SDK) Algoritmo (API) Descrição
hmac-sha1 HMAC_SHA1 HMAC com 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 resumo SHA-384
hmac-sha512 HMAC_SHA512 HMAC com resumo SHA-512

Recomendações de algoritmo

Para 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 você for usar algoritmos de assinatura RSA, o algoritmo de assinatura RSA recomendado é RSA_SIGN_PSS_3072_SHA256.

Para criptografia assimétrica, RSA_DECRYPT_OAEP_3072_SHA256 é o algoritmo recomendado.

Para assinatura MAC, o algoritmo recomendado é HMAC_SHA256.

Para conferir a lista de valores de algoritmo que podem ser usados com a CLI gcloud, consulte --default-algorithm.

Níveis de proteção

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

Nível de proteção Descrição
SOFTWARE As operações criptográficas são executadas em software.
HSM As operações criptográficas são executadas em um HSM.
EXTERNAL As operações criptográficas são realizadas com uma chave armazenada em um gerenciador de chaves externo conectado ao Google Cloud pela Internet. Limitado a criptografia simétrica e assinatura assimétrica.
EXTERNAL_VPC As operações criptográficas são realizadas com uma chave armazenada em um gerenciador de chaves externo conectado ao Google Cloud por uma nuvem privada virtual (VPC). Limitado à criptografia simétrica e à assinatura assimétrica.

Todas as finalidades de chaves são compatíveis com chaves que tenham o nível de proteção SOFTWARE ou HSM.