Unión de claves

La unión de claves es el proceso de usar una clave para encriptar otra con el propósito de almacenarla de forma segura o transmitirla por medio de un canal no confiable. La unión de claves puede emplear criptografía simétrica o asimétrica, según el contexto.

En Cloud Key Management Service, la unión de claves se usa para importar de forma segura claves criptográficas proporcionadas por el usuario. La importación de claves requiere un trabajo de importación, el cual tiene un método de importación que especifica el protocolo de unión de claves utilizado.

Cloud KMS espera que el material de clave importado tenga formatos específicos. Antes de unir tu material de clave para importarlo, es posible que debas convertirlo al formato que espera Cloud KMS. En el artículo sobre el formateo de claves para su importación, encontrarás información detallada sobre los formatos requeridos, así como instrucciones acerca de cómo convertir tus claves al formato requerido si es necesario.

Una vez que el material de clave tenga el formato correcto, la CLI de Google Cloud puede unirlo de forma automática antes de transmitirlo de forma segura a Cloud KMS. Para obtener más detalles, consulta Importa una clave. Como alternativa, también puedes unir las claves manualmente mediante los protocolos criptográficos adecuados. La unión de una clave con OpenSSL en Linux proporciona un ejemplo de cómo hacerlo.

Métodos de importación

Cloud KMS ofrece los siguientes métodos de importación:

Método de importación Tipo de clave de trabajo de importación Algoritmo de unión de claves
RSA_OAEP_3072_SHA1_AES_256 RSA de 3072 bits RSAES-OAEP con SHA-1/SHA-256 + AES-KWP
RSA_OAEP_4096_SHA1_AES_256 RSA de 4,096 bits RSAES-OAEP con SHA-1/SHA-256 + AES-KWP
RSA_OAEP_3072_SHA256_AES_256 (recomendado) RSA de 3072 bits RSAES-OAEP con SHA-1/SHA-256 + AES-KWP
RSA_OAEP_4096_SHA256_AES_256 RSA de 4,096 bits RSAES-OAEP con SHA-1/SHA-256 + AES-KWP
RSA_OAEP_3072_SHA256 RSA de 3072 bits RSAES-OAEP con SHA-256
RSA_OAEP_4096_SHA256 RSA de 4,096 bits RSAES-OAEP con SHA-256

Algoritmos de unión de claves

Los métodos de importación que proporciona Cloud KMS corresponden a los siguientes algoritmos de unión de claves:

RSAES-OAEP con SHA-1/SHA-256 + AES-KWP

Este algoritmo de unión de claves es un esquema de encriptación híbrido que consta de una operación de unión de claves asimétrica y otra simétrica:

  1. La clave pública del trabajo de importación se usa con RSAES-OAEP, con MGF-1 y el algoritmo de resumen SHA-1 o SHA-256, para encriptar una clave AES-256 de uso único. La clave AES-256 de uso único se genera en el momento en que se realiza la unión.
  2. La clave AES-256 de uso único del paso 1 se utiliza para encriptar el material de clave objetivo mediante la unión de clave AES con relleno.

El material de clave unido para la importación es un arreglo de un solo byte compuesto por los resultados del paso 1, seguido de los resultados del paso 2. En otras palabras, los resultados de los pasos 1 y 2 se concatenan para formar el material de clave unido.

Este algoritmo es el mismo que el algoritmo de unión de claves PKCS #11 CKM_RSA_AES_KEY_WRAP. Si importas una clave desde un HSM, y tu HSM es compatible con este algoritmo, puedes usarlo directamente. De manera alternativa, los pasos 1 y 2 mencionados con anterioridad se pueden realizar con los mecanismos PKCS #11 CKM_RSA_PKCS_OAEP y CKM_AES_KEY_WRAP_PAD, respectivamente.

Si tu HSM de origen (o cualquier otro proveedor de claves, en caso de que no uses HSM) no admite el mecanismo de unión de claves RSA AES, debes unir manualmente tu material de clave mediante el uso de la clave pública del trabajo de importación. Para ver un ejemplo de cómo hacer esto con OpenSSL, consulta cómo unir una clave con OpenSSL en Linux.

RSAES-OAEP con SHA-256

Esta es una operación de unión de claves asimétrica que usa la clave pública del trabajo de importación con RSAES-OAEP y utiliza MGF-1 y el algoritmo de resumen SHA-256 para encriptar directamente el material de la clave de destino. Se basa en el mecanismo OKM_RSA_PKCS_OAEP de PKCS #11 RSA. Ten en cuenta que existe un límite en el tamaño del material de clave que se unirá, en relación con el tamaño del módulo RSA, como se describe en CKM_RSA_PKCS_OAEP.