Para configurar un canal seguro con el servidor, uso la siguiente configuración en mi aplicación:
1.Generar una clave AES aleatoria y IV aleatorio
2. Encripte la clave AES, IV y las credenciales del cliente con la clave pública RSA
3.Enviar al servidor
4.El servidor se desencripta usando una clave RSA privada
5.Server verifica las credenciales
6.Server responde con [(OK o FAIL) + random salt] cifrado con clave AES
7. El cliente verifica la respuesta
8.El canal de comunicación se designa como auténtico y la sesión como válida
9. Toda la comunicación comercial adicional se realiza a través de la misma clave AES hasta el final de la sesión (Desconexión)
Detalles adicionales:
1.Las claves RSA públicas y privadas están codificadas y son constantes durante el tiempo de vida de la aplicación, es decir, no se obtiene la clave pública de una fuente externa
2.Todos los textos constantes conocidos constantes como OK FAIL, etc. se envían con sal
Creo que esta configuración debería ser bastante infalible a menos que alguien tenga acceso a las operaciones del cliente o servidor (o rompa el RSA)
¿Hay algún posible agujero de bucle en esta configuración que no haya podido realizar o que haya pasado por alto?