La primera vez que haces un inicio de sesión seguro desde una aplicación móvil a un servidor (integrado en Java). Quiero entender si entendí bien.
Inicia sesión por primera vez:
1. En el código del dispositivo móvil, una frase de seguridad (por ejemplo, "superSecurePhrase @@ !!".
2. Tome un nombre de usuario y contraseña.
3. Usa base64 para codificar nombre de usuario + frase y contraseña + frase.
4. Usando https, envíe esta información a mi servidor.
5. En el servidor, decodifique utilizando base64 con la frase coincidente codificada en el dispositivo.
6. Hash contraseña y guardar en la base de datos, también hash nombre de usuario y guardar en la base de datos.
7. Utilice el algoritmo AES para crear un token de sesión
8. Enviar token de sesión al dispositivo.
9. Guarde el token de sesión en la base de datos y, cuando el usuario solicite algo, asegúrese de que coincidan.
Para verificar las credenciales, es casi el mismo proceso, excepto que el nombre de usuario y la contraseña no se guardan, sino que se consulta la base de datos y se verifica si hay coincidencia.
¿Es este el patrón general utilizado para este tipo de cosas?
Vulnerabilidades potenciales:
1. Acceso físico al dispositivo para recuperar la frase base64 codificada de forma rígida?
2. SSL sniffing y adquiriendo el token?
Gracias por su ayuda.