Tengo una aplicación web donde (entre otras cosas) los clientes pueden cargar archivos y los administradores pueden descargarlos. Los archivos cargados se almacenan en ServerA
y la aplicación web utilizada para cargar / descargar esos archivos se ejecuta en ServerB
.
Me gustaría hacerlo para que mientras los archivos se almacenan en ServerA
estén cifrados y que solo la aplicación web pueda cifrar / descifrar, pero mi preocupación es que puede que no haya una manera efectiva de almacenar un cifrado clave, lo que haría que el cifrado de archivos se realice principalmente para mostrar.
Encontré esta pregunta / respuesta que sugirió Algunas buenas maneras de almacenar una clave de forma segura, pero creo que las más seguras no se aplican ya que necesito diferentes personas para poder descifrar el archivo.
Por ejemplo, no puedo crear una clave basada en las credenciales de usuario, porque los clientes deben poder cifrar a todos los usuarios de la administración deben poder descifrar (¿verdad?).
Por lo que puedo decir, mi mejor opción es almacenar los archivos cifrados en un servidor y almacenar la clave de cifrado en el código de mi servidor web, pero esto no parece particularmente seguro. Parece probable que si un usuario malintencionado obtiene acceso a un servidor, probablemente obtenga acceso a ambos.
Mi pregunta: ¿vale la pena implementar "archivos cifrados en el Servidor A" y "clave de cifrado en el Servidor B", o me estaría engañando para pensar que esto es más seguro? ¿Existe una forma efectiva de cifrar archivos según las condiciones que describí anteriormente?