Encriptación de sobre

Introducción

Almacenar y encriptar datos a la escala de Google requiere el uso de un servicio central de administración de claves criptográficas con varios niveles de claves para los datos encriptados. Un ejemplo de los niveles múltiples de claves es la encriptación de sobre, que se refiere al proceso de encriptación de una clave con otra.

Puedes encriptar datos en el nivel de aplicación, que es el responsable de mostrar los datos a los usuarios, y en el nivel de almacenamiento, que ofrece el almacenamiento físico de datos.

Según la configuración predeterminada, en el nivel de almacenamiento, Google Cloud Platform (GCP) encripta el contenido de cliente almacenado en reposo mediante la encriptación de sobre, con el servicio interno de administración de claves de Google como el almacén de claves central. Si almacenas y encriptas datos tú mismo, puedes usar Cloud KMS como tu almacén de claves central en el nivel de aplicación, sobre el que se hace énfasis en este tema.

Cloud KMS almacena claves en una jerarquía de claves diseñada para facilitar el proceso, con acceso a los recursos en la jerarquía de claves que se rige por Cloud IAM. Lo siguiente muestra los niveles principales de una jerarquía de claves de Cloud KMS:

Recursos

Obtén más información sobre la jerarquía de claves en jerarquía de objetos.

Claves de encriptación de datos

La clave que se usa para encriptar los datos en sí se conoce como una clave de encriptación de datos (DEK).

A continuación, te presentamos las recomendaciones para administrar las DEK:

  • Genera las DEK de manera local.
  • Cuando las almacenes, siempre asegúrate de que las DEK estén encriptadas en reposo.
  • Para facilitar el acceso, almacena la DEK cerca de los datos que encripta.
  • Genera una DEK nueva cada vez que escribas datos. Esto quiere decir que no es necesario que rotes las DEK.
  • No uses la misma DEK para encriptar datos de dos usuarios distintos.
  • Usa un algoritmo robusto como un Estándar de encriptación avanzada de 256 bits (AES) en modo Galois/contador (GCM).

Clave de encriptación de claves

La DEK se encripta (o está unida) con una clave de encriptación de claves (KEK). El proceso de encriptación de una clave con otra se conoce como encriptación de sobre.

A continuación, te presentamos las recomendaciones para administrar las KEK:

  • Almacena las KEK de manera central.

  • Establece el nivel de detalle de las DEK que encriptas de acuerdo con su caso práctico. Por ejemplo, considera una carga de trabajo que requiere varias DEK para encriptar los bloques de datos de tal carga. Puedes usar una sola KEK para unir todas las DEK que son responsables de la encriptación de esa carga de trabajo.

  • Rota las claves con regularidad y también después de una sospecha de incidente. Para obtener más información. consulta Rotación de claves.

Balanceo de las DEK y las KEK

Tener una cantidad menor de KEK en comparación con DEK y usar un servicio central de administración de claves permite que el almacenamiento y la encriptación de datos a gran escala sea más manejable. Un servicio central de claves también es un punto único para auditar los datos con más facilidad y restringir el acceso a estos.

Dependiendo de tu situación y del volumen de datos que encriptas, puedes elegir usar un modelo similar. Una sola KEK se puede usar a fin de proteger muchas DEK; este modelo permite que los objetos de datos individuales tengan sus propias DEK, sin que la cantidad de claves almacenadas aumente de forma masiva en un servicio central de administración de claves.

Cloud Key Management Service se diseñó a fin de administrar las KEK y, por lo tanto, la entrada máxima de datos para las funciones de Encrypt y Decrypt es 64 KiB. Sin embargo, en el caso de los datos que sabes que no se acercarán al límite, puedes usar Cloud KMS para encriptarlos y desencriptarlos directamente.

Cómo encriptar datos con la encriptación de sobre

El proceso de encriptación de datos consiste en generar una DEK de forma local, encriptar datos con esta, usar una KEK a fin de unir la DEK y, luego, almacenar los datos encriptados y la DEK unida.

Flujo de encriptación

Sigue estos pasos para encriptar datos con la encriptación de sobre:

  1. Genera una DEK de forma local. Puedes hacerlo con una biblioteca de código abierto como OpenSSL. Para ello, especifica un tipo de cifrado y una contraseña a partir de la cual generar la clave. Puedes especificar si se usarán datos sal o un resumen, si lo deseas.

  2. Usa esta DEK de forma local para encriptar tus datos.

    A modo de ejemplo, puedes usar OpenSSL como aparece en el ejemplo de encriptación de mensaje. Como recomendación, usa el cifrado del Estándar de encriptación avanzada de 256 bits (AES-256) en modo Galois/contador (GCM).

  3. Genera una clave nueva en Cloud KMS o usa una existente, la cual actuará como la KEK. Usa esta clave para encriptar (unir) la DEK.

  4. Almacena los datos encriptados y la DEK unida.

Cómo desencriptar datos con la encriptación de sobre

El proceso de desencriptación de datos consiste en recuperar los datos encriptados y la DEK unida, recuperar la KEK que unió la DEK, usar la KEK para separar la DEK y, luego, usar la DEK separada para desencriptar los datos.

Flujo de desencriptación

Sigue estos pasos para desencriptar datos con la encriptación de sobre:

  1. Recupera los datos encriptados y la DEK unida.

  2. Usa la clave almacenada en Cloud KMS para separar la DEK encriptada.

  3. Usa la DEK de texto sin formato para desencriptar los datos encriptados. Si usas OpenSSL como antes, consulta el ejemplo desencriptación del mensaje.

Integración con los servicios de Google Cloud

Muchos productos de GCP están integrados con Cloud KMS para admitir la funcionalidad de la clave de encriptación administrada por el cliente (CMEK). CMEK con Cloud KMS agrega un nivel adicional de protección a sus datos, te permite controlar tus claves de encriptación y aprovecha los beneficios de la administración de claves de Cloud KMS.

Los siguientes productos de GCP ofrecen la función de CMEK con Cloud KMS.

Producto Tema de CMEK
BigQuery Proteger datos con claves de Cloud KMS
Compute Engine Proteger recursos con las claves de Cloud KMS
Cloud Storage Usar claves de encriptación administradas por el cliente

Otras opciones para los servicios de Google Cloud

En el caso de los datos almacenados en productos de GCP que no admiten CMEK, puedes implementar tu propia encriptación de nivel de aplicación. Esta acción requiere que implementes tu propia encriptación de sobre como se describe arriba, de manera que almacenes datos encriptados de forma local en GCP. Esta también es la forma en la que podrías usar Cloud KMS para encriptar los datos que almacenas en otros proveedores de servicios de nube o a nivel local.

Además de admitir CMEK, los siguientes productos son compatibles con la funcionalidad de clave de encriptación proporcionada por el cliente (CSEK).

Producto Tema de CSEK
Compute Engine Encriptar discos con claves de encriptación proporcionadas por el cliente
Cloud Storage Usar claves de encriptación proporcionadas por el cliente

CSEK te permite suministrar una clave AES-256 que reemplaza la KEK usada para proteger las DEK que encriptan tus datos en el modelo de encriptación de sobre que se describió anteriormente. Como las claves no pueden importarse ni exportarse desde Cloud KMS actualmente, no podrás usar una de sus claves, como la clave de encriptación proporcionada por el cliente, y en su lugar deberás proteger esa clave con una de Cloud KMS (un nivel más). Como se mencionó antes, podrías generar una DEK local que uses para CSEK y unir esa DEK con una KEK de Cloud KMS.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud KMS