¿Cómo usar el 'material clave' para que varias personas puedan acceder a los archivos protegidos?

2

No estoy seguro de si esta es la SE correcta para hacer esta pregunta, pero parece ser que tengo una base de datos de archivos que necesita cifrarse, de manera que varias personas con diferentes contraseñas / conexiones a este sistema remoto puedan acceder al mismos archivos sin ingresar un segundo conjunto de credenciales.

Específicamente, necesito poder admitir:

  • múltiples usuarios que acceden a la versión de 'texto sin formato' de un solo archivo que se ha cifrado una vez
  • revocación de los derechos de un solo usuario (si son despedidos, etc.)
  • permitir que un usuario que haya olvidado su contraseña obtenga una nueva contraseña (es decir, restablecimiento de contraseña)
  • idealmente, permita la búsqueda / clasificación remota de dichos archivos encriptados y minimice la capacidad de un atacante para interceptar credenciales.

Mi conocimiento de la seguridad es, en el mejor de los casos, teórico; He hecho algunas codificaciones dongle (muy consciente de que los crackers destruirán la seguridad si se nos da suficiente tiempo), pero este tipo de sistema distribuido está un poco más allá de mí.

Mi idea actual es:

  • tiene un archivo de certificado que sirve para decodificar los archivos cifrados remotamente. Este certificado está cifrado por el nombre de usuario / contraseña del usuario.
  • los usuarios inician sesión de manera remota antes de intentar descifrar el certificado, por lo que si no pueden iniciar sesión (es decir, ya no están trabajando allí, lo que sea), entonces no pueden obtener el certificado. Esto es extremadamente débil, ya que deberían poder descifrar el certificado de todos modos si son expertos.
  • para la búsqueda / clasificación remota de estos archivos, haga una pre-selección en el intervalo de fechas de los archivos. Esta técnica solo es valiosa porque no esperamos más de 5-10 adiciones a la base de datos por usuario por día (e incluso eso es ridículamente prolífico), por lo que obtener entradas de los últimos tres días, tres semanas, etc. caso de uso Luego, el descifrado / búsqueda / clasificación de estos archivos se puede hacer localmente.
  • para las reasignaciones de contraseña, necesitan obtener otro certificado cifrado con el nuevo nombre de usuario / contraseña. Eso significa que alguien más en el sitio (el administrador o quien sea) debe tener acceso a una versión de texto simple del certificado para proporcionar al usuario un nuevo certificado, lo que significa que un administrador debe asignar las nuevas contraseñas. Con lo que estoy bien.

Este enfoque es malo por varias razones:

  • los usuarios expertos pueden descifrar su certificado anterior usando sus credenciales y el conocimiento de la rutina de cifrado / descifrado. Esto no es un gran problema, porque de todos modos no pueden acceder a datos remotos, ya que sus inicios de sesión fallarán.
  • la búsqueda / clasificación remota será dolorosa.
  • si todos en el sitio pierden su contraseña, pierden todos sus datos. Tiendo a pensar que si los clientes desean este nivel de seguridad, también quieren este tipo de consecuencia.

Entonces le pregunto a esta comunidad: ¿este enfoque es viable? ¿Hay un paquete o grupo de utilidades que debería considerar para este enfoque (o algún otro, más mejorado)?

Para que quede claro, este sistema almacenará los datos cifrados de forma remota y el usuario accederá a esos datos. Puedo hacer que el cliente usuario esté en cualquier sistema, pero la idea es que será un programa que le demos al usuario para acceder a los datos remotos. El servidor nunca debe tener datos de texto simple.

Entonces, si el usuario está en Windows, entonces tendrá un cliente, un certificado y credenciales de inicio de sesión. El certificado se cifraría con esas credenciales, de modo que se pueda descifrar y utilizar para leer datos de este sistema remoto. No puedo cambiar el sistema operativo que tendrá el usuario.

    
pregunta mmr 18.05.2012 - 19:32
fuente

2 respuestas

2

Estos son niveles de seguridad diferentes y necesitan soluciones diferentes:

  • El archivo cifrado garantiza que cualquiera, sin la clave adecuada, pueda robarlo pero no leerlo.
  • Tener un grupo de usuarios para acceder a algunos archivos con algunas credenciales es un asunto diferente.

Si un usuario puede acceder a la versión de texto simple de un archivo, no importa si ese archivo se cifró alguna vez, ya que su sistema (y el cifrado de archivos) es transparente para el usuario. Cuando inicia sesión, ve todos los archivos a los que tiene acceso y ni siquiera sabrá si esos archivos están encriptados o no.

Un sistema Linux puede proporcionarle todo lo que necesita aquí. Cree diferentes usuarios, incluso configúrelos para que inicien sesión con un certificado y luego permítales acceder a los archivos con los derechos adecuados de usuario / grupo. Si un usuario debería poder cargar archivos cifrados, cree un par de llaves RSA y distribuya la clave pública del servidor a los usuarios. Con esa clave pueden cifrar un archivo, y puede ser descifrado en el lado del servidor.

    
respondido por el karatedog 19.05.2012 - 00:54
fuente
1

Esto puede sonar un poco fuera de tema, pero asistí a una conferencia abierta que explica los fundamentos de un sistema que proporciona lo que necesita. Voy a compartir lo que he escuchado.

Hubo varias partes involucradas:

Digamos que Bob quiere compartir un archivo para él y Alice. Lo que él hace es lo siguiente:

  • genera una clave aleatoria, Kf ;
  • encripta el archivo F con Kf una vez (se usa el cifrado simétrico, por ejemplo, AES en modo CBC o algo similar);
  • encripta Kf con su propia clave pública, la clave pública de Alice y también la clave pública del depósito de claves;

Todo esto sucede "fuera de línea", por ejemplo, No es necesario ponerse en contacto con la clave de depósito o Alice. Ahora Bob y Alice pueden compartir el mismo archivo descifrando Kf con sus claves privadas. Si Bob es despedido, pierde su contraseña o sus permisos deben ser revocados, la clave de custodia entra en juego y cambia los registros creados anteriormente (esto puede incluir a veces el cambio de Kf y volver a cifrar el archivo). / p>     

respondido por el Lachezar Balev 19.05.2012 - 08:35
fuente

Lea otras preguntas en las etiquetas