¿Es seguro este método para compartir archivos?

6

Actualmente estoy desarrollando una pieza de software donde los archivos deben ser cargados y luego compartidos con otras personas que no están en la plataforma.

Aquí está mi enfoque sobre el cifrado:

  1. Un usuario tiene una contraseña maestra, de la cual solo se almacena el hash (se usa para iniciar sesión)
  2. Cuando el usuario carga un archivo, una contraseña aleatoria será
    generado y el archivo se cifrará con él (todo el lado del cliente)
  3. La contraseña se cifrará con la contraseña maestra y luego
    almacenado junto con el archivo

Cuando se comparte un archivo con un usuario externo, se toman los siguientes pasos:

  1. El usuario conectado comparte el archivo. La clave de archivo se recupera y descifrado con la contraseña del usuario en el lado del cliente
  2. El usuario ahora puede compartir la contraseña y el archivo, o usar un enlace para El archivo con la contraseña en el hash de ubicación. El archivo siempre ser descifrado en el lado del cliente

¿Este enfoque es seguro? Además, ¿hay mejores opciones?

    
pregunta NikxDa 06.06.2018 - 21:40
fuente

1 respuesta

6

¿Es seguro el enfoque?

No , no si entiendo tu modelo de amenaza.

Depende de tu modelo de amenaza. Si nunca desea que los operadores del servidor (o db o db-backup) puedan descifrar los archivos, nunca le dé al servidor la clave de cifrado del archivo.

En su modelo, la amenaza más clara es que puedo fuerza bruta adivinar la contraseña del usuario registrado. Una vez que lo haga, puedo descifrar la clave de cifrado del archivo y el archivo mismo.

update

Pensando en la contraseña un poco más y más amenazas a este enfoque:

en general, una contraseña derivada del usuario no es segura. Una forma de pensar en esto es eventualmente que el pw se vea comprometido. Tal vez phishing, keylogger, encontrándolo escrito bajo un teclado, o bruta forzada. Entonces, digamos que obtengo una copia de la base de datos, ahora simplemente espero el pw a lo largo del tiempo (o trato activamente de buscarlo). Una vez que lo tengo, descifro todo lo que el usuario ha cargado en mi copia.

Construimos esto de manera diferente. (para evitar esa amenaza)

Basamos nuestra compilación en send.firefox.com.

Cuando se carga un archivo, está del lado del cliente cifrado y se almacena en el servidor. La clave de cifrado se almacena en la URL generada y no se envía al servidor.

La url se envía al destinatario, y solo se puede usar una vez, y caduca en 24 horas.

Agregamos a esto: después de cargar un archivo, devolvemos una frase de contraseña generada por el sistema (dos palabras comunes en inglés de 5º grado).

Para descargar el archivo, necesita el enlace seguro y conocer la frase de contraseña.

La belleza es que no se requiere ningún registro de usuario.

    
respondido por el Jonathan 06.06.2018 - 22:05
fuente

Lea otras preguntas en las etiquetas