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 Curve25519 no modo PureEdDSA, que recebe 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 é computado sobre a mensagem a 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 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 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 compatíveis a serem 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 à 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 pela 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
.