Después de haber pasado mucho tiempo investigando, no puedo confirmar si mi sistema es lo suficientemente seguro.
- Los usuarios tienen un teléfono móvil e inician sesión en un servidor de autorización central al pasar su nombre de usuario, contraseña y un nombre. La contraseña será hasheada
- Nombre de usuario, la contraseña se generará previamente y se entregará al usuario a través de métodos fuera de banda. es decir, no hay una página de registro, y el nombre de usuario, la contraseña que se asigna a un usuario nunca se verá comprometida
- El usuario recibirá un
jwt
con un tiempo de caducidad de, por ejemplo, 12 horas - Para cualquier solicitud
post
oget
, el usuario debe agregarjwt
en elheader
según los estándares comunes - Se puede confiar completamente en el servidor
Ahora mis dudas son,
- Si alguien intercepta los paquetes que se envían desde el móvil, puede obtener el token
jwt
, que se puede usar para enviar solicitudes de un pirata informático. ¿Qué impide que el pirata informático envíe solicitudes al agregarjwt
a sus solicitudes? - Si se infringen los paquetes entrantes y salientes del dispositivo móvil durante la etapa de inicio de sesión, el pirata informático obtendrá acceso al hash de la contraseña (y salt) y al nombre de usuario al leer los paquetes. Lo que le impide enviar esos mismos datos en un punto posterior al servidor y obtener un
jwt
de su propio
Supongo que el hacker es extremadamente sofisticado.
Una cosa en la que pensé es que cada vez que el usuario intenta iniciar sesión, se inicia un intercambio de claves con el servidor y luego se usa para intercambiar la contraseña. Por lo tanto, si se obtiene esta información, el pirata informático no puede usar esto para autenticarse, ya que las claves de cifrado son de naturaleza efímera.
Otra opción más fácil, es hacer que el servidor simplemente envíe un nonce, que el cliente usará para firmar la contraseña. Esto es exclusivo de una sola sesión, por lo que, una vez que el usuario inicie sesión, si un pirata informático envía la misma contraseña firmada, se rechazará ya que el nonce en el lado del servidor habría caducado.
Sin embargo, no puedo protegerme en la eventualidad de que el pirata informático acceda al token jwt
.