Estoy trabajando en una aplicación que tiene que transferir datos confidenciales a través de HTTPS y tengo una idea, pero me pregunto si es excesiva o buena.
Uno de los problemas es que necesito la capacidad de "compartir datos" entre usuarios, por lo que creé la idea de un grupo.
Cada usuario tiene una clave secreta que se almacena en su navegador (si lo desean o pueden escribirla cada vez que quieran obtener los datos). La clave secreta de cada usuario se encripta inmediatamente al ingresarla utilizando el "código" del servidor.
Cada usuario tiene un "código" que se almacena en el servidor. Esto se genera en el registro. Esto se utiliza para cifrar la clave secreta almacenada en el navegador.
Cada usuario puede ser parte de un grupo, cada grupo tiene una clave de 256 bits que se genera al crearse. Todos los datos confidenciales de los grupos no se cifran con la clave secreta del usuario, sino con la clave de los grupos. Cada miembro del grupo tiene la misma clave cifrada con la clave secreta de ese usuario. Por lo tanto, para solicitar datos de grupo, envía a los usuarios la clave cifrada al servidor, el servidor devuelve los datos cifrados (cifrados con la clave de grupo Y la clave de grupo cifrada) luego el navegador descifra el contenido usando la palabra secreta en el navegador para descifrar la clave de grupo y luego utiliza la clave de grupo para descifrar los datos.
Razonamiento de todo esto.
-
Quiero asegurarme de que si la "persona malvada" tiene 2 piezas del rompecabezas, aún no puedan acceder a los datos. Diga que la "persona malvada" roba la computadora portátil del usuario que tiene la palabra secreta y los posibles datos enviados. Quiero asegurarme de que todavía necesiten iniciar sesión para descifrar los datos (para obtener el código que se utiliza para descifrar la palabra secreta). (¿Quizás esto sea excesivo?)
-
El resto es solo un cifrado estándar. Con la adición de la capacidad de compartir cosas encriptadas entre múltiples usuarios.
¿Pensamientos?