¿Dencrypt contenedores sobre la marcha sin montar en el sistema de archivos?

1

¿Hay alguna forma de tener archivos de contenedor / dispositivos LVM transparentes encriptados sobre la marcha sin montarlos en el sistema de archivos?

Todas las soluciones de encriptación que conozco, como LUKS-LVM, contenedores de gpg, etc., requieren que descifre el dispositivo, lo monte en el sistema de archivos para acceder a los datos. Estaba buscando algo como Docker, que me brinda un entorno para almacenar datos y que los usuarios tengan acceso a eso. Sin embargo, también quiero reducir el riesgo de que los datos se compriman. Cuando tengo una imagen cifrada para Docker, tendría que montarla en el sistema de archivos para que Docker acceda a ella. Cualquier persona que de alguna manera legal o ilegalmente haya obtenido acceso al sistema en el nivel raíz podría leer este punto de montaje y obtener los datos desde allí. Quiero minimizar ese riesgo, para poder acceder a los datos en la imagen / contenedor solo a través de algún tipo de sistema servidor / cliente que controle el acceso de los usuarios mediante claves.

¿Es esto posible de alguna manera?

    
pregunta user6329530 11.11.2016 - 15:32
fuente

1 respuesta

1

Si desea asegurarse de que los usuarios solo tengan acceso a sus archivos al proporcionar una clave (posiblemente almacenada en la memoria para que no tengan que proporcionarla una y otra vez), ¿por qué no usa simplemente un simple , ¿sistema de archivos no cifrado y cifrar cada archivo individualmente?

Tal vez porque esto filtra información sobre la cantidad de archivos, fechas de creación y modificación, tamaños de archivos y posiblemente nombres de archivos si no los cifra. Entonces, comienza a escribir algo de código en torno a esa solución y finalmente termina con una solución que almacena archivos individuales en un contenedor para que tenga control sobre los metadatos del archivo.

Y ahora has reinventado LUKS, TrueCrypt, VeraCrypt, ...

La única diferencia entre su sistema y estas soluciones es que su sistema admite claves individuales para cada usuario, mientras que LUKS & Co solo usa una sola tecla Pero puede obtener casi el mismo comportamiento de LUKS creando un único contenedor por usuario. Aún tiene el problema de que si alguien obtiene acceso de root a la máquina, puede leer todos los contenedores abiertos.

Sin embargo, también puede hacerlo cuando cada archivo se cifra individualmente. Necesita una interfaz para su sistema que tome un usuario y un nombre de archivo, descifre el archivo sobre la marcha utilizando la clave de usuario, que se encuentra en la memoria, y devuelve el contenido del archivo descifrado. ¿Qué es lo que impide que la raíz use esta misma interfaz, haciéndose pasar por el usuario?

Básicamente, LUKS debajo de un sistema de archivos estándar proporciona la interfaz que tendría que diseñarse de otra manera. Solo veo dos soluciones que le darían más seguridad (pero no lo que imagina):

  1. Use un TPM para proteger las claves de usuario. De esta manera, no se los robarán de la memoria, pero un usuario que tenga root aún podrá hacerse pasar por otro usuario y descifrar todos los archivos ordenando al TPM que descifre su contenido.

  2. Coloque los datos cifrados y una API de acceso en una máquina dedicada que solo sirve a su aplicación y solo se puede acceder a ella utilizando la API de acceso. Esto crea una superficie de ataque mucho más pequeña en sus datos cifrados. Pero tampoco puede protegerlo de una cuenta raíz comprometida en su servidor de aplicaciones o en el servidor de almacenamiento.

Entonces, para resumir: creo que ya tienes lo que quieres con LUKS. No hay una línea de defensa segura contra la raíz comprometida.

    
respondido por el Pascal 11.11.2016 - 23:00
fuente

Lea otras preguntas en las etiquetas