Actualmente estoy desarrollando un proyecto para datos altamente confidenciales que deben transferirse a través de una red muy cuestionable. Si bien no estoy realmente contento con eso, probablemente sea inevitable de todos modos. Sin embargo, la buena noticia es que los usuarios participantes son muy limitados, lo que permitiría utilizar el Nombre de usuario / Contraseña para cifrar realmente los primeros paquetes que se envían. Así que aquí está lo que estoy pensando:
- El Cliente envía un Nombre de Usuario / Contraseña-Hash encriptado con una clave generada por una combinación de los dos usando una función biyectiva.
-
El Servidor intenta encriptar esto usando cada combinación de Nombre de Usuario / Contraseña-Hash que se encuentra dentro de la base de datos, si tiene éxito
2.1 se genera una clave privada que es válida solo para la sesión y solo se usará una vez.
2.2 La clave privada se envía al cliente utilizando la misma clave generada por el nombre de usuario y la contraseña.
si no tiene éxito
2.3 NO LOGIN se envía al cliente sin cifrado.
Bueno, mi pregunta aquí es:
¿Este método comprometerá el cifrado de alguna manera? ¿O estoy completamente mal guiado?
El uso de una clave pública no es realmente una opción, ya que la clave se puede obtener mediante ingeniería inversa / escucha en el primer paquete donde se intercambia la clave pública / ...