El encapsulado de claves es el proceso de cifrado de una clave con otra para almacenarla de forma segura o transmitirla a través de un canal no fiable. El encapsulado de claves puede basarse en la criptografía simétrica o asimétrica, en función del contexto.
En Cloud Key Management Service, el encapsulado de claves se usa para importar de forma segura claves criptográficas proporcionadas por el usuario. Para importar claves, se necesita una tarea de importación, y cada tarea de importación tiene un método de importación que especifica el protocolo de encapsulado de claves que se va a usar.
Cloud KMS espera formatos específicos para el material de claves importado. Antes de encapsular el material de la clave para importarlo, es posible que tengas que convertirlo al formato que espera Cloud KMS. En Dar formato a las claves para importarlas se incluyen los detalles de los formatos necesarios y se explica cómo puedes convertir tus claves al formato requerido si es necesario.
Una vez que el material de la clave tenga el formato correcto, la CLI de Google Cloud podrá encapsularlo automáticamente antes de transmitirlo de forma segura a Cloud KMS. Para obtener más información, consulta el artículo sobre cómo importar una clave. También puede envolver manualmente sus claves mediante los protocolos criptográficos adecuados. En Encapsular una clave con OpenSSL en Linux se muestra un ejemplo de cómo puedes 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 tarea de importación | Algoritmo de encapsulado de claves |
---|---|---|
RSA_OAEP_3072_SHA1_AES_256 | RSA de 3072 bits | RSAES-OAEP con SHA-1 + AES-KWP |
RSA_OAEP_4096_SHA1_AES_256 | RSA de 4096 bits | RSAES-OAEP con SHA-1 + AES-KWP |
RSA_OAEP_3072_SHA256_AES_256 (recomendado) | RSA de 3072 bits | RSAES-OAEP con SHA-256 + AES-KWP |
RSA_OAEP_4096_SHA256_AES_256 | RSA de 4096 bits | RSAES-OAEP con SHA-256 + AES-KWP |
RSA_OAEP_3072_SHA256 | RSA de 3072 bits | RSAES-OAEP con SHA-256 |
RSA_OAEP_4096_SHA256 | RSA de 4096 bits | RSAES-OAEP con SHA-256 |
Algoritmos de encapsulado de claves
Los métodos de importación que proporciona Cloud KMS corresponden a los siguientes algoritmos de encapsulado de claves:
RSAES-OAEP con SHA-1/SHA-256 + AES-KWP
Este algoritmo de encapsulado de claves es un esquema de cifrado híbrido que consta de una operación de encapsulado de claves asimétrica y otra simétrica:
- La clave pública de la tarea de importación se usa para cifrar una clave AES-256 de un solo uso. El cifrado se realiza mediante RSAES-OAEP y MGF-1, junto con el algoritmo de resumen especificado por el método de importación. La clave AES-256 de un solo uso se genera en el momento en que se realiza el encapsulado.
- La clave AES-256 de un solo uso del paso 1 se usa para cifrar el material de la clave de destino mediante AES Key Wrap con relleno.
El material de clave encapsulado para la importación es una matriz de bytes única que consta de los resultados del paso 1, seguidos 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 envuelto.
Este algoritmo es el mismo que el algoritmo de envoltorio de claves PKCS #11 CKM_RSA_AES_KEY_WRAP. Si vas a importar una clave de un HSM y este admite este algoritmo, puedes usarlo directamente. Como alternativa, los pasos 1 y 2 anteriores se pueden realizar con los mecanismos PKCS #11 CKM_RSA_PKCS_OAEP y CKM_AES_KEY_WRAP_PAD, respectivamente.
Si tu HSM de origen (u otro proveedor de claves si no usas un HSM) no admite el mecanismo de envoltorio de claves RSA AES, debes envolver manualmente tu material de claves con la clave pública de tu trabajo de importación. Para ver un ejemplo de cómo hacerlo con OpenSSL, consulta Encapsular una clave con OpenSSL en Linux.
RSAES-OAEP con SHA-256
Se trata de una operación de encapsulado de claves asimétrica que usa la clave pública del trabajo de importación con RSAES-OAEP, MGF-1 y el algoritmo de resumen SHA-256 para cifrar directamente el material de la clave de destino. Se basa en el mecanismo PKCS #11 RSA OAEP CKM_RSA_PKCS_OAEP. Las limitaciones de tamaño asociadas a este método de importación hacen que no sea adecuado para importar claves privadas RSA.