pavel-kalmykov / mantecabox

Servicio de almacenamiento de ficheros seguro en la nube para la asignatura de Seguridad en el Diseño de Software
GNU General Public License v3.0
2 stars 1 forks source link

Transferencia de ficheros cifrados desde el servidor #14

Closed rpairo closed 6 years ago

rpairo commented 6 years ago

Descripción

Se tendrá que implementar un servicio mediante el cual se permita la transferencia de ficheros cifrados desde cliente mediante POST.

Condiciones de satisfacción

  1. Se deberá tener implementada la transferencia de ficheros sin cifrar.
  2. Se deberá cifrar los ficheros con una parte del hash de la contraseña del usuario.

Referencias

rpairo commented 6 years ago

Desarrollando en transferencia-ficheros.

rpairo commented 6 years ago

Para la transferencia de ficheros he pensado en utilizar el formato form-data para la subida de un fichero binario, así pudiendo emparejarlo con una clave en caso de ser necesario.

En cuanto a la arquitectura para el almacenamiento de los ficheros he pensado en una estructura jerárquica así:

Sería indiferente que el nombre del directorio fuera el username o el id ya que ambos van a ser únicos. Quizá utilizar el ID pudiera evitarnos de posibles problemas generados por usernames "raros", pero podría ser controlado.

pavel-kalmykov commented 6 years ago

Si para el nombre del directorio usamos el nombre del usuario, no tendremos problemas con las carpetas porque en el registro se controla que este no sea una cadena cualquiera, sino una típica de nickname, la cual no presenta problemas al crearla como carpeta (por ejemplo, no se admiten caracteres especiales como /, que podría dar lugar a error por identificarlo como un fichero anidado en un directorio). En cuanto a usar el ID, no podemos hacerlo, ya que los usuarios no lo tienen (se identifican por el nombre de usuario).

pavel-kalmykov commented 6 years ago

Si tienes planeado guardar los ficheros con una estructura en la que los de cada usuario residen en un subdirectorio cuyo nombre es el del usuario, debes tener en cuenta entonces que el servicio de modificar un usuario deberá también renombrar el directorio con su nuevo nombre.

Al margen de todo esto, ¿qué aporta tener los ficheros agrupados por usuario y que no estén todos en una única carpeta?

rpairo commented 6 years ago

Al refactorizar el código para implementar el cifrado de los ficheros, he descubierto un problema: la librería permbits que utilizamos para obtener los permisos y metadatos de los ficheros solo permite obtener éstos desde la ruta de un fichero o de un os.File.

rpairo commented 6 years ago

Como hemos hablado, el funcionamiento de los permisos en los ficheros cuando trabajas, los cuales pierden tales permisos y se crean nuevos al persistirse en el disco del cliente. Voy a tener que crear una migración nueva que deshaga las columnas innecesarias de la base de datos, y deshacer la lógica de permisos.