¿Existe alguna práctica recomendada sobre cómo manejar "la última milla" en un escenario cifrado del lado del cliente almacenado en la nube para una aplicación web? (Los datos confidenciales deben cifrarse antes de enviarse y almacenarse en el servidor)
¿Dónde se almacenan las claves y cuál es la mejor manera de obtenerlas de la forma más segura posible en la aplicación de navegador / cliente?
Entiendo que este es un escenario imperfecto para empezar, pero si estas son las restricciones, ¿cuál es la mejor manera de manejarlo?
Tratando de aclarar más:
Estamos ejecutando una aplicación web que permite a los médicos programar visitas de pacientes. Ahora se nos solicita que brindemos la posibilidad de almacenar también datos confidenciales del paciente.
La única forma en que queremos considerar esto es con el cifrado del lado del cliente, es decir, nunca podemos ver o acceder a ninguno de esos datos confidenciales.
Al mismo tiempo, tiene que ser visible / editable en la aplicación web en la computadora de los usuarios. La autenticación de usuario, TLS / SSL, etc. ya se utiliza y se implementa correctamente.
Para descifrar datos existentes o cifrar datos nuevos, el usuario tendrá que proporcionar un archivo de claves (supongamos una clave privada asimétrica regular por ahora, aunque todavía no estamos completamente seguros de eso, pero esa es una discusión diferente).
La pregunta ahora es cuál es el mejor enfoque para almacenar de forma segura este archivo de claves en el lado de los usuarios y cómo habilitar la aplicación web durante el uso para descifrar / cifrar los datos mientras minimiza el riesgo de perder una clave accidentalmente o de que alguien la robe activamente. / p>
Entiendo que no hay forma de que este sea un escenario "seguro" dadas las restricciones, pero estamos buscando la forma "menos insegura" de ejecutar CSE en un contexto de aplicación web.