¿Cómo administrar las claves de cifrado proporcionadas por el cliente en una nube de múltiples inquilinos SaaS?

4

Estoy trabajando en una empresa con sede en la UE y nos gustaría ofrecer a los clientes comerciales algún tipo de plataforma SaaS basada en la nube independiente del sistema operativo para procesar y almacenar datos confidenciales (de salud). Nos gustaría implementar nuestro software en la plataforma Google Cloud.

Todos los datos confidenciales se deben cifrar con claves simétricas que proporciona el cliente y no se almacenan en la plataforma en la nube. (Confiamos en Google, pero el acto patriota es un problema.)

Sin embargo, la interfaz del cliente debe ejecutarse preferiblemente como una aplicación web dentro del navegador. Esto hace que el cifrado del lado del cliente sea complicado. Además, muchos empleados deben tener acceso a los datos cifrados dentro del dominio del cliente comercial. Por lo tanto, la clave de cifrado debe compartirse de alguna manera entre los empleados.

Una idea es generar la clave de cifrado a partir de una frase de contraseña compartida (usando PBKDF2), almacenarla dentro de una cookie de sesión (vida útil = 0) y transferirla al servidor en la nube para cada solicitud de acceso a datos confidenciales. El servidor realiza la operación solicitada y luego elimina la clave de su memoria.

Por supuesto, siempre podría haber formas de extraer la clave si nosotros o Google quisiéramos hacer esto, pero podemos asegurar que los datos se almacenen encriptados con una clave suministrada por el usuario que solo es administrada por el cliente.

Me pregunto si alguien tiene mejores ideas. Muchas gracias de antemano.

    
pregunta Lucas 07.04.2017 - 17:22
fuente

2 respuestas

1

Es imposible garantizar la seguridad en la nube desde el propio proveedor de la nube, el proveedor de la nube puede (ser obligado) a tomar un volcado de memoria de cualquier instancia de VM en ejecución y extraer cualquier clave de cifrado de una instancia en ejecución. Incluso es posible monitorear de forma continua y automática una VM en ejecución y extraer claves AES tan pronto como se utilizan, especialmente cuando la VM está usando AES-NI.

Una solución verdaderamente segura evitaría el descifrado, y mucho menos el uso de las claves en el servidor. Al igual que el cifrado del lado del cliente, use el servidor únicamente como almacenamiento de blobs.

Afortunadamente, puedes hacer un poco de cifrado en el navegador en estos días, que incluye KDF y AES. Para KDF puede utilizar, por ejemplo. scrypt-js , y para AES aes-js o aes-es .

    
respondido por el rustyx 09.06.2018 - 10:40
fuente
0

No piense que esto es posible con claves simétricas si espera que el servidor acepte datos de texto sin cifrar y luego los cifre; solo mantener la clave de cifrado en la memoria durante la sesión no es realmente una protección de los datos, ya que (para un servicio relativamente ocupado) esa clave estará en la memoria, por lo tanto, los datos serán vulnerables al descifrado, todo el día laborable.

Podría ser una defensa válida contra alguien que intercepte sus copias de seguridad o que intente robar datos directamente del disco; pero no contra hacks de un servicio activo.

Podría funcionar si el cifrado se produce en el cliente, y todo lo que recibe en la nube de SaaS es texto cifrado, pero la nube no podría procesar nada de esos datos.

    
respondido por el CGretski 10.01.2018 - 00:00
fuente

Lea otras preguntas en las etiquetas