Estoy intentando agregar nuevos dispositivos a un sistema seguro. Un sistema seguro en el que un servidor web es identificado por una CA personalizada y todos los clientes también lo son. Es decir, cada cliente que se conecta al servidor tiene su propio certificado. Si debo agregar un nuevo dispositivo móvil al sistema seguro, estos serían los pasos.
- El usuario instala la aplicación desde la tienda de aplicaciones
- Una vez que se abre la aplicación, el usuario ve una cadena de 16 longitud (el usuario no tiene que iniciar sesión para ver eso). Antes de mostrarlo al usuario, la cadena se envía al servidor web a través de websocket, con hash. El servidor almacena esta cadena de hash con un ttl de 3 minutos.
- El usuario inicia sesión en el servidor web con sus credenciales (tiene permisos para agregar un nuevo dispositivo) y ingresa la cadena de 16 longitudes allí. El servidor web lo hash y compara el hash con el guardado.
- El servidor web responde a la aplicación móvil en el mismo websocket con un nuevo certificado. La respuesta es encriptada simétricamente con la cadena de 16 longitudes.
- Este certificado se utiliza para futuras interacciones con el servidor web, por lo que no necesita intervención humana.
¿Esto no es lo suficientemente seguro? ¿Cuál sería una forma más estándar de hacer esto?