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.

De forma predeterminada, en el nivel de almacenamiento, Google Cloud 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 Key Management Service 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 la administración de identidades y accesos. A continuación, se muestran 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. La KEK nunca sale de Cloud KMS.

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, identificar la KEK que unió la DEK, usar la KEK para separar la DEK y, luego, usar la DEK separada para desencriptar los datos. La KEK nunca sale de Cloud KMS.

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.

Si deseas obtener un código de muestra que muestre cómo encriptar y desencriptar con la encriptación de sobre, consulta Encriptación del cliente con Tink y Cloud KMS.

Integración con los servicios de Google Cloud

Varios productos de Google Cloud están integrados en 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. Consulta Cómo usar Cloud KMS con otros servicios para ver una lista completa de los productos que admiten CMEK.

Otras opciones para los servicios de Google Cloud

Para los datos almacenados en productos de Google Cloud que no admiten CMEK, puedes implementar tu propia encriptación de capa de aplicación. Esto requiere la implementación de tu propia encriptación de sobre como se describió antes, de modo que almacenes datos encriptados de forma local en Google Cloud. Esto es también en la forma en que puedes usar Cloud KMS para encriptar los datos que almacenas en otros proveedores de servicios en la nube o de forma 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
Cloud Storage Claves de encriptación proporcionadas por el cliente
Compute Engine Encripta discos con claves de encriptación proporcionadas por el cliente

Con CSEK, proporcionas tu propia clave AES-256 para que funcione como la KEK, y tu clave protege las DEK que protegen tus datos. Tu clave de CSEK está protegida por una capa adicional de protección con una clave de Cloud KMS.

Ahora que puedes importar claves a Cloud KMS, puedes importar tus claves y usarlas con los servicios habilitados de CMEK en lugar de depender de CSEK.