Estoy desarrollando una aplicación basada en web que será empleada por numerosas organizaciones de terceros en numerosos países del mundo.
El cliente basado en navegador introducirá datos confidenciales en una base de datos de back-end compartida.
Todas las organizaciones en todos los países leerán / escribirán datos en la misma base de datos.
Deseo cifrar los datos ingresados en el navegador para que estén seguros durante el tránsito a la base de datos de back-end. p.ej. cifrado del lado del cliente.
También deseo cifrar los datos mientras estoy en reposo en mi base de datos.
Esta aplicación se desarrollará utilizando Java, Javascript (REACT.js) y Scala.
La base de datos de back-end será MongoDB.
No puedo encontrar un buen ejemplo / descripción de administración de claves, p. ej. cómo una clave se genera correctamente, distribuido, almacenado, reemplazado, eliminado y recuperado durante su vida útil.
Tengo que hacer las siguientes elecciones / decisiones: -
Sabor de cifrado, por ejemplo, TripleDES, RSA, Blowfish, Twofish, AES, etc. Tecla (s) simétrica / asimétrica y su / su longitud ¿Cómo debo distribuir de forma segura las claves a mis clientes? Cómo mantener mis claves seguras en mis servidores back-end.
Si las claves deben tener un ciclo de vida de generado, distribuido, almacenado, reemplazado, eliminado. ¿Cómo descifro los datos que se cifraron con Key0 cuando ahora estoy usando Key1 o Key2?
¿Cómo debo almacenar mis múltiples claves para que mis múltiples clientes me permitan cifrar / descifrar? Datos de cada cliente.