¿Hay alguna forma de almacenar archivos de usuarios sin poder descifrarlos?

3

Me gustaría crear una aplicación web de almacenamiento de archivos segura.

Actualmente se usa la autenticación de contraseña ordinaria para iniciar sesión. Después de iniciar sesión, esta contraseña se utiliza para cifrar y descifrar los archivos de usuario en el lado del servidor. Por lo tanto, solo este usuario tiene acceso a ellos.

Pero el usuario no puede estar seguro de que:

  • un hombre en el lado del servidor no puede descifrarlos
  • los archivos están realmente encriptados.

¿Hay alguna forma de almacenar los archivos de usuario de forma segura y resolver esos problemas?

Tenga en cuenta que los usuarios deben poder acceder a los archivos no solo desde una computadora.

    
pregunta Andrei Botalov 05.07.2012 - 19:35
fuente

1 respuesta

7

Si desea asegurarse de que el servidor no pueda descifrar el archivo, no debe revelar la contraseña al servidor. Por lo tanto

  • la contraseña de cifrado no debe usarse para la autenticación del lado del servidor;
  • los datos deben estar cifrados en el lado del cliente .

Puedes crear arquitecturas complejas, pero fundamentalmente, si no confías en el servidor, no le des tu contraseña.

Una aplicación web simple (PHP del lado del servidor más JavaScript del lado del cliente) que hace esto es ZeroBin . Recomiendo leer este informe sobre Ars Technica sobre un sitio basado en Zerobin . ZeroBin no realiza ninguna autenticación, que puede o no ser lo que quieres, esto es solo un ejemplo (de código abierto) para ilustrar el principio.

Para tener confianza en que ZeroBin no revela sus datos al servidor, debe revisar el código JavaScript que se ejecuta en el navegador y convencerse de que funciona como se anuncia.

Alternativamente, si desea realizar el cifrado del lado del servidor, debe asegurarse de que el servidor sea lo suficientemente seguro para sus necesidades. Eso significa que necesita confiar (o hacer que un tercero (en quien confíe) verifique mediante una auditoría) que:

  • El servidor no almacena ni filtra contraseñas.
  • El código del servidor se comporta como se anuncia; en particular, solo almacena datos encriptados y borra rápidamente cualquier copia temporal de texto sin formato.
  • Los datos en tránsito están protegidos adecuadamente.
  • El servidor está físicamente seguro, de modo que ningún intruso puede acceder a sus datos o su contraseña mientras está en uso.
  • Las personas con acceso legítimo al servidor (por ejemplo, administradores del sistema) son confiables.
  • Este estado de cosas seguirá siendo verdadero mientras use el servicio.
respondido por el Gilles 05.07.2012 - 20:48
fuente

Lea otras preguntas en las etiquetas