Estoy pensando en crear un archivo de documentos basado en la nube. La intención es hacer que el sistema no pueda leer los archivos de los usuarios y sea más que un simple proveedor de almacenamiento.
Mirando this question , hay algunas formas de hacer esto, pero efectivamente esto limita al sistema de archivo para que sea solo un proveedor de almacenamiento" tonto ": solo en su propia máquina los datos tendrán sentido después del descifrado.
Por confiar en que el proveedor de almacenamiento no se burlará de las fotos vergonzosas de sus vacaciones, este enfoque es sólido como una roca. Pero el problema es que no tendrá la comodidad de un sistema menos seguro como Dropbox, google drive o neat.com.
Estos sistemas (llamémoslos "inteligentes") indexan sus datos para la búsqueda, tienen visores de documentos en el navegador, etc., que deseo para el sistema mi .
Pero proporcionar una interfaz web a los datos de los usuarios significa que el servidor web debe poder servir archivos (o miniaturas) sin cifrar.
Para el almacenamiento, estaba pensando en utilizar el cifrado asimétrico (RSA) de los secretos de cifrado simétrico (AES?) en el servidor central. Cada archivo se cifra simétricamente con un secreto por archivo. Esos secretos se cifran utilizando la clave pública. La clave privada necesaria para descifrar el secreto de un archivo (y, por lo tanto, descifrarlo) se cifra mediante un secreto basado en la contraseña del usuario.
Esto significa que los archivos solo pueden ser leídos por el servidor si la clave privada desencriptada se mantiene en su forma desencriptada durante la sesión de un usuario. Del mismo modo, la indexación y la generación de miniaturas para archivos / documentos almacenados solo pueden suceder mientras la clave privada está "desbloqueada". Este diseño se puede expandir fácilmente para acomodar contraseñas específicas de la aplicación (crear una clave privada cifrada por contraseña), en caso de que alguna vez quiera desarrollar aplicaciones además de la interfaz web.
Mi pregunta es: ¿Qué tan seguro (in) es este diseño?
- Si el servidor (web) puede descifrar archivos cuando los usuarios inician sesión, esto obviamente plantea una pregunta de "¿qué tan confiables y responsables son los datos de los usuarios y los secretos de cifrado que soy?" ¿Hay alguna forma de responder formalmente (/ por diseño) a esta pregunta con " very "?
- Además, ¿qué tan ansiosos están los administradores de sistemas de mi proveedor de nube para MITM mi sistema en ejecución? (Si, por ejemplo, presionado por algún gobierno.)
- Y finalmente: en caso de que alguien se apodere de mis servidores, ¿están los secretos de datos / cifrado de los usuarios a salvo de miradas indiscretas?