Aplicación móvil de seguridad API REST con PIN

4

Estoy estudiando la posibilidad de escribir una API a la que se pueda acceder mediante dispositivos móviles (también somos propietarios de la aplicación móvil, no hay terceros involucrados).

Como parte del flujo de inicio de sesión, se nos ha indicado utilizar un flujo de registro de correo electrónico / contraseña, seguido de la creación de un número de pin de 5 dígitos que permitiría al usuario acceder a la aplicación la próxima vez que abra la aplicación.

Esto parece estar en desacuerdo con la mayoría de los flujos de autenticación disponibles, como oAuth, ya que parece que no hay indicios de que se use otra autenticación de pin para iniciar sesión.

Sin embargo, hay muchas aplicaciones que parecen hacer esto, así que me pregunto si están lanzando su propia solución. ¿O una combinación de servicios típicos y luego alojar algo ellos mismos?

Estoy luchando con el concepto de garantizar que el dispositivo único también esté vinculado al pin para autenticar las solicitudes correctamente dentro de la API.

Los punteros son bienvenidos, pero para algo que veo es bastante común en las aplicaciones móviles, parece que hay muy pocos detalles con respecto a los aspectos de seguridad de este tipo de autenticación.

Con agradecimientos

    
pregunta Cmac 84 21.06.2016 - 17:15
fuente

1 respuesta

2

No entiendo completamente la pregunta, pero parece que quieres saber una buena solución para implementar esto.

Para implementar esto, sugeriría obtener un ID de distribución único (puede ser IMEI, pero también puede ser un ID dependiente del sistema operativo), y luego concatenar esto con el PIN. Luego usa PBKDF2 para derivar una clave de esto.

Luego, selecciona una cantidad de iteraciones que son suficientes para evitar que se rompa el pin de 5 dígitos por fuerza bruta, pero aún así no toma mucho tiempo autenticarse.

Aquí tienes 2 opciones. Puede cifrar el token OAUTH con la clave generada y almacenarlo en el almacenamiento del dispositivo, o puede implementar una verificación en el lado del servidor, donde verifica la clave PBKDF2 cuando se usa un token OAUTH móvil. Para detectar si se utiliza un token de OAUTH móvil, puede establecer una marca en el formulario de inicio de sesión para detectar inicios de sesión móviles.

Una solución mejor, si su administración lo permite, es utilizar en su lugar el almacenamiento basado en hardware de claves asimétricas. (booleano KeyInfo.IsInsideSecureHardware ();), donde el servidor verificará que exista la clave privada correcta dentro del hardware seguro (haciendo un desafío que la aplicación firma usando la clave de hardware). Eso permitirá vincular estrictamente la aplicación a un dispositivo específico, y puede omitir la autenticación de PIN, ya que la pantalla de bloqueo del usuario es suficiente para evitar el uso indebido de la aplicación. (y luego le da a los usuarios la opción de no tener un PIN si lo desean, deshabilitando la pantalla de bloqueo).

    
respondido por el sebastian nielsen 21.06.2016 - 21:17
fuente

Lea otras preguntas en las etiquetas