Mejor manera de almacenar la autenticación del usuario en la aplicación del teléfono

0

Estamos creando una aplicación y el registro del usuario ocurre de la siguiente manera.

  1. El usuario envía a través de la aplicación: email-id / teléfono y nombre de usuario.
  2. El servidor envía un pin para ingresar a la aplicación por teléfono / correo electrónico.
  3. El usuario ingresa el pin en la aplicación.

Después de esto, estamos pensando en dos formas en que podríamos almacenar cierta información de autenticación en la aplicación.

A. El servidor envía un token que utiliza la aplicación con todas las solicitudes posteriores.

O

B. Negociamos una clave segura usando Diffie-Hellman. Luego hay una función de inicio de sesión que incluye el desafío de envío del servidor y la respuesta del usuario. Una vez que este token se genera, se usa y luego se desecha.

Toda la comunicación está sucediendo a través de https. Aunque la opción B se ve mejor, la opción A es más fácil. ¿Alguna razón particular debemos elegir B? Una razón por la que veo es incapaz de token de cambio, pero ¿existen riesgos de seguridad obvios?

También los comentarios para mejorar A o B son bienvenidos.

    
pregunta okijuhyg 30.07.2014 - 03:53
fuente

1 respuesta

0

No almacene tokens de autenticación de larga duración, ya que pueden reproducirse.

No almacene nada conectado a un secreto compartido global, porque eso podría comprometer al usuario indefinidamente.

No almacene nada derivado de la contraseña del usuario, ya que eso abre ataques de diccionario muy fáciles.

SHA (last-session-key) es uno de los tokens de autenticación mejores y más seguros que puede almacenar. No compromete las sesiones anteriores. Es un gran secreto con mucha entropía. Solo se puede utilizar una vez. Es fácil de combinar con otros factores si desea aún más seguridad.

    
respondido por el Jeff-Inventor ChromeOS 30.07.2014 - 04:20
fuente

Lea otras preguntas en las etiquetas