Algoritmos y propósitos de clave

Cada clave de Cloud Key Management Service tiene un propósito, que define las capacidades criptográficas de la clave. El propósito también determina cuáles algoritmos admiten las versiones de claves. Cada algoritmo define cuáles parámetros se deben usar para cada operación criptográfica. Cada clave también tiene un nivel de protección que indica si las operaciones criptográficas se realizan en software o en un módulo de seguridad de hardware (HSM).

Propósitos de clave

Cloud KMS proporciona propósitos de clave para las siguientes situaciones:

Situación Propósito clave (SDK) Propósito clave (API) Métodos admitidos
Criptografía simétrica encryption ENCRYPT_DECRYPT cryptoKeys.encrypt, cryptoKeys.decrypt
Encriptación simétrica sin procesar raw-encryption RAW_ENCRYPT_DECRYPT cryptoKeys.rawEncrypt, cryptoKeys.rawDecrypt
Firma asimétrica asymmetric-signing ASYMMETRIC_SIGN cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
Encriptación asimétrica asymmetric-encryption ASYMMETRIC_DECRYPT cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
Firma MAC mac MAC cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify

Cuando creas una clave, defines el propósito y el algoritmo de esa clave. Puedes cambiar el algoritmo cuando creas versiones de clave nuevas, sujeto al alcance de su propósito. Este último no se puede cambiar.

Dos claves con el mismo propósito pueden usar algoritmos subyacentes diferentes, pero deben admitir el mismo conjunto de operaciones criptográficas.

Algoritmos de encriptación simétrica

El propósito de clave ENCRYPT_DECRYPT habilita la encriptación simétrica. Todas las claves con el propósito de clave ENCRYPT_DECRYPT usan el algoritmo GOOGLE_SYMMETRIC_ENCRYPTION. No se usa ningún parámetro con este algoritmo. Este usa claves del Estándar de encriptación avanzada de 256 bits (AES-256) en modo Galois/contador (GCM), que se rellenó con metadatos internos de Cloud KMS.

Algoritmos de firma asimétrica

El propósito de clave ASYMMETRIC_SIGN habilita la firma asimétrica. Las claves con el propósito de clave ASYMMETRIC_SIGN usan algoritmos diferentes, según si la clave admite la firma de curva elíptica o la firma RSA.

En el caso de una clave con el propósito ASYMMETRIC_SIGN, puedes cambiar entre claves de tamaño diferente y esquemas de firma diferentes mediante el algoritmo.

Algoritmos de firma de curva elíptica

El formato de un algoritmo de firma de curva elíptica es el siguiente:

EC_SIGN_[ELLIPTIC_CURVE]_[DIGEST_ALGORITHM]

En el ejemplo anterior, se ilustra lo siguiente:

  • [ELLIPTIC_CURVE] es la curva elíptica
  • [DIGEST_ALGORITHM] es el algoritmo de resumen

La tabla siguiente incluye una lista de los algoritmos posibles para las claves de curva elíptica con el propósito ASYMMETRIC_SIGN. Usa los nombres de algoritmos en minúscula con el comando gcloud y los que están en mayúscula con la API de Cloud Key Management Service.

Algoritmo (SDK) Algoritmo (API) Descripción
ec-sign-ed25519 EC_SIGN_ED25519 EdDSA en Curve25519 en el modo PureEdDSA, que toma datos sin procesar como entrada en lugar de datos con hash
ec-sign-p256-sha256 **(recomendado)** EC_SIGN_P256_SHA256 ECDSA en la curva P-256 con un resumen SHA-256
ec-sign-p384-sha384 EC_SIGN_P384_SHA384 ECDSA en la curva P-384 con un resumen SHA-384
ec-sign-secp256k1-sha256 EC_SIGN_SECP256K1_SHA256 ECDSA en la curva secp256k1 con un resumen SHA-256
.

Algoritmos de firma RSA

El formato de un algoritmo de firma RSA es el siguiente:

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

En el ejemplo anterior, se ilustra lo siguiente:

  • [PADDING_ALGORITHM] es el algoritmo de relleno
  • [MODULUS_BIT_LENGTH] es la longitud de bits de la clave
  • [DIGEST_ALGORITHM] es el algoritmo de resumen

Ten en cuenta que algunos algoritmos tienen el siguiente formato:

RSA_SIGN_RAW_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]

y omite el algoritmo de resumen. Estos algoritmos son una variante de la firma PKCS #1 que omite la codificación en un DigestInfo. En la variante:

  • Se calcula un resumen sobre el mensaje que se firmará.
  • El padding PKCS #1 se aplica directamente al resumen.
  • Se calcula una firma del resumen con padding, con la clave privada RSA.

La siguiente tabla incluye una lista de algoritmos posibles para claves RSA con el propósito ASYMMETRIC_SIGN. Usa los nombres de algoritmos en minúscula con el comando gcloud y los que están en mayúscula con la API de Cloud Key Management Service.

Algoritmo (SDK) Algoritmo (API) Descripción
rsa-sign-pss-2048-sha256 RSA_SIGN_PSS_2048_SHA256 Clave RSASSA-PSS de 2048 bits con un resumen SHA-256
rsa-sign-pss-3072-sha256 (recomendado) RSA_SIGN_PSS_3072_SHA256 Clave RSASSA-PSS de 3072 bits con un resumen SHA-256
rsa-sign-pss-4096-sha256 RSA_SIGN_PSS_4096_SHA256 Clave RSASSA-PSS de 4096 bits con un resumen SHA-256
rsa-sign-pss-4096-sha512 RSA_SIGN_PSS_4096_SHA512 Clave RSASSA-PSS de 4096 bits con un resumen SHA-512
rsa-sign-pkcs1-2048-sha256 RSA_SIGN_PKCS1_2048_SHA256 RSASSA-PKCS1 v1_5 con una clave de 2048 bits y un resumen SHA-256
rsa-sign-pkcs1-3072-sha256 RSA_SIGN_PKCS1_3072_SHA256 RSASSA-PKCS1 v1_5 con una clave de 3072 bits y un resumen SHA-256
rsa-sign-pkcs1-4096-sha256 RSA_SIGN_PKCS1_4096_SHA256 RSASSA-PKCS1 v1_5 con una clave de 4096 bits y un resumen SHA-256
rsa-sign-pkcs1-4096-sha512 RSA_SIGN_PKCS1_4096_SHA512 RSASSA-PKCS1 v1_5 con una clave de 4096 bits y un resumen SHA-512
rsa-sign-raw-pkcs1-2048 RSA_SIGN_RAW_PKCS1_2048 Firma RSASSA-PKCS1-v1_5 sin codificación, con una clave de 2048 bits
rsa-sign-raw-pkcs1-3072 RSA_SIGN_RAW_PKCS1_3072 Firma RSASSA-PKCS1-v1_5 sin codificación, con una clave de 3072 bits
rsa-sign-raw-pkcs1-4096 RSA_SIGN_RAW_PKCS1_4096 Firma RSASSA-PKCS1-v1_5 sin codificación, con una clave de 4096 bits

En el esquema probabilístico de firmas (PSS), la longitud utilizada para la sal es igual a la longitud del algoritmo de resumen. Por ejemplo, RSA_SIGN_PSS_2048_SHA256 usará PSS con una longitud de sal de 256 bits. Además, para el PSS el algoritmo de resumen especificado en el nombre del algoritmo también se usa en la función de generación de enmascaramiento (MGF1). Por ejemplo, si estás usando RSA_SIGN_PSS_2048_SHA256, enviarás un hash SHA-256 de los datos que se firmarán, y Cloud KMS usará un SHA-256 de forma interna como el algoritmo del hash para la MGF1 cuando procese la firma.

Algoritmos de encriptación asimétrica

El propósito de clave ASYMMETRIC_DECRYPT habilita la encriptación RSA. El formato de un algoritmo ASYMMETRIC_DECRYPT es el siguiente:

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

En el ejemplo anterior, se ilustra lo siguiente:

  • [PADDING_ALGORITHM] es el algoritmo de relleno
  • [MODULUS_BIT_LENGTH] es la longitud de bits de la clave
  • [DIGEST_ALGORITHM] es el algoritmo de resumen

La siguiente tabla incluye una lista de algoritmos posibles para claves RSA con el propósito ASYMMETRIC_DECRYPT. Usa los nombres de algoritmos en minúscula con el comando gcloud y los que están en mayúscula con la API de Cloud Key Management Service.

Algoritmo (SDK) Algoritmo (API) Descripción
rsa-decrypt-oaep-2048-sha1 RSA_DECRYPT_OAEP_2048_SHA1 Clave RSAES-OAEP de 2048 bits con un resumen SHA-1
rsa-decrypt-oaep-2048-sha256 RSA_DECRYPT_OAEP_2048_SHA256 Clave RSAES-OAEP de 2048 bits con un resumen SHA-256
rsa-decrypt-oaep-3072-sha1 RSA_DECRYPT_OAEP_3072_SHA1 Clave RSAES-OAEP de 3072 bits con un resumen SHA-1
rsa-decrypt-oaep-3072-sha256 (recomendado) RSA_DECRYPT_OAEP_3072_SHA256 Clave RSAES-OAEP de 3072 bits con un resumen SHA-256
rsa-decrypt-oaep-4096-sha1 RSA_DECRYPT_OAEP_4096_SHA1 Clave RSAES-OAEP de 4096 bits con un resumen SHA-1
rsa-decrypt-oaep-4096-sha256 RSA_DECRYPT_OAEP_4096_SHA256 Clave RSAES-OAEP de 4096 bits con un resumen SHA-256
rsa-decrypt-oaep-4096-sha512 RSA_DECRYPT_OAEP_4096_SHA512 Clave RSAES-OAEP de 4096 bits con un resumen SHA-512

Todos estos algoritmos usan relleno óptimo de encriptación asimétrica (OAEP) con la función de generación de enmascaramiento MGF1. Esta función requiere un algoritmo de resumen. En Cloud KMS, la función de resumen que se usará con MGF1 se especifica como parte del nombre del algoritmo de clave. Por ejemplo, si estás usando el algoritmo RSA_DECRYPT_OAEP_3072_SHA256, deberías usar SHA-256 con MGF1 cuando encriptes los datos.

Algoritmos de firma MAC

El propósito de clave MAC habilita la firma MAC simétrica. Actualmente, las claves con el propósito MAC solo admiten la firma HMAC.

Algoritmos de firma HMAC

El formato de un algoritmo de firma HMAC es el siguiente:

HMAC_[HASH_ALGORITHM]

En el ejemplo anterior, se ilustra lo siguiente:

  • [HASH_ALGORITHM] es el algoritmo hash

En la siguiente tabla, se enumeran los algoritmos de HMAC disponibles actualmente para claves con MAC de propósito. Usa los nombres de algoritmos en minúscula con el comando gcloud y los que están en mayúscula con la API de Cloud Key Management Service.

Algoritmo (SDK) Algoritmo (API) Descripción
hmac-sha1 HMAC_SHA1 HMAC con un resumen SHA-1
hmac-sha224 HMAC_SHA224 HMAC con un resumen SHA-224
hmac-sha256 (recomendado) HMAC_SHA256 HMAC con un resumen SHA-256
hmac-sha384 HMAC_SHA384 HMAC con un resumen SHA-384
hmac-sha512 HMAC_SHA512 HMAC con un resumen SHA-512

Recomendaciones de algoritmos

Para las firmas digitales, la recomendación es usar los algoritmos de firma de curva elíptica. EC_SIGN_P256_SHA256 es el algoritmo de curva elíptica recomendado. Si vas a usar algoritmos de firma RSA, el algoritmo de firma RSA recomendado es RSA_SIGN_PSS_3072_SHA256.

En los casos de encriptación asimétrica, el algoritmo recomendado es RSA_DECRYPT_OAEP_3072_SHA256.

Para la firma de MAC, el algoritmo recomendado es HMAC_SHA256.

Para ver la lista de valores de algoritmos compatibles que se usarán con gcloud CLI, consulta --default-algorithm.

Niveles de protección

El nivel de protección indica cómo se realizan las operaciones criptográficas. Después de que creas una clave, no puedes cambiar el nivel de protección.

Nivel de protección Descripción
SOFTWARE Las operaciones criptográficas se realizan en software.
HSM Las operaciones criptográficas se realizan en un HSM.
EXTERNAL Las operaciones criptográficas se realizan con una clave almacenada en un administrador de claves externo conectado a Google Cloud a través de Internet. Se limita a la encriptación simétrica y la firma asimétrica.
EXTERNAL_VPC Las operaciones criptográficas se realizan con una clave almacenada en un administrador de claves externo conectado a Google Cloud a través de una nube privada virtual (VPC). Se limita a la encriptación simétrica y la firma asimétrica.

Todos los propósitos de clave son compatibles con las claves que tienen el nivel de protección SOFTWARE o HSM.