Modelando un cifrado basado en archivos por proceso para Linux

0

Estoy intentando modelar & implementar una solución de encriptación transparente por proceso basada en archivos para Linux. Quiero que cada proceso tenga sus propios archivos encriptados. Quiero bloquear a Firefox para que no lea mi clave privada gpg (digamos que mi clave privada no está encriptada por defecto)

Actualmente es el siguiente:

  1. Conecte los envoltorios syscall (a través de una biblioteca inyectada con LD_PRELOAD globalmente) para el acceso a archivos (abrir, abrir, leer, escribir, crear, cerrar) y verificar si la ruta a acceder está cubierta por el cifrado (por ejemplo, ~ / .mozilla). si no se llama a la ruta, se llama a la función regular.
  2. Pida al administrador de claves (un demonio privilegiado) las claves a través de un socket Unix
  3. Cifrar (al escribir / agregar / crear) o descifrar (al leer) los datos

Mis preguntas son:

  1. Estoy usando recvmsg / sendmsg para encontrar el pid que solicitó una clave. ¿Puede un adversario manipularlo?
  2. Estoy usando /proc/*something*/exe para encontrar la ruta del ejecutable de pid. ¿Es seguro (puede un proceso falsificarlo?)
  3. El administrador de claves proporciona la misma clave a los procesos con la misma ruta de ejecución y uid. ¿Hay una mejor manera de modelarlo?
pregunta dzervas 03.03.2018 - 16:51
fuente

1 respuesta

1
  1. Creo que lo que buscas es aislamiento, como Docker para el uso de espacios aislados.
  2. LD_PRELOAD puede funcionar para el crt, pero no funcionará con syscalls directos, por lo que puede no funcionar para muchas aplicaciones y anula todo el propósito de su precarga.
  3. Tenga en cuenta que los navegadores modernos implementan entornos limitados muy difíciles.
  4. Es posible que desee buscar en SELinux , que está diseñado para resolver este tipo de problemas dando a cada archivo / proceso / paquete un context
respondido por el user169249 03.03.2018 - 21:30
fuente

Lea otras preguntas en las etiquetas