Cliente de teléfono móvil: autenticación del servidor basada en el dispositivo

1

Tengo una aplicación móvil (Android, iOS) y un servidor, que maneja las solicitudes de la aplicación.

Es fácil realizar una autenticación estándar utilizando SSL, contraseña y token aleatorio para autenticar al usuario.

Sin embargo, no tengo idea de cómo autenticar el dispositivo móvil Y el usuario. Necesito evitar que el usuario use otros dispositivos que el que usó por primera vez (por alguna muy buena razón).

El problema es que debo esperar que el usuario no coopere. Por el contrario, probablemente intentará usar otro dispositivo, pero tengo que detenerlo.

Creo que la tarjeta SIM debe ser la clave para este problema. Sin embargo, no puedo realizar ningún cambio en la tarjeta SIM (no puedo instalar ningún applet especial de SIM en la tarjeta SIM). Solo puedo usar las funciones que CUALQUIER tarjeta SIM proporciona.

¿Hay alguna solución posible?

    
pregunta vojta 30.09.2015 - 15:03
fuente

2 respuestas

1

Android proporciona API para almacenar y manipular material de claves privadas sin revelarlas a la aplicación (a menudo con soporte de hardware). Puede generar una clave y usarla para autenticarse en el servidor.

Las claves se pueden marcar como no exportables, pero no estoy seguro de si la restricción se aplica en el hardware y si las claves se incluirán en las copias de seguridad o no.

IOS también tiene un llavero, pero las claves normalmente son accesibles a la aplicación, por lo que puede copiarse en un dispositivo rooteado.

    
respondido por el billc.cn 30.12.2015 - 17:00
fuente
0

En la aplicación móvil - > escenario del servidor, me gusta tener un enfoque para cada una de las siguientes identidades

  1. Identidad del usuario, es decir, persona que intenta iniciar la transacción con su servidor
  2. Identidad de la aplicación: la aplicación está siendo utilizada por el usuario para realizar la transacción
  3. Identidad del dispositivo: el dispositivo real que se está utilizando.

Cada uno de estos es parte importante de la gestión integral de identidad. En su caso, la identidad del dispositivo es el foco. Existe una gran cantidad de información específica del dispositivo, como la ID de la tarjeta SIM, IMEI, UDID (en el caso de Apple) que se puede usar para vincular un dispositivo específico a un usuario. Un enfoque alternativo puede ser que en el momento del registro inicial del dispositivo, puede generar un par de claves públicas y privadas en ese dispositivo. Puede asociar la clave pública con la identificación de usuario en su servidor. Ahora, cada vez que inicie la sesión o realice una transacción, puede usar la clave privada para firmar un token (por ejemplo, JWT) y enviarlo con una solicitud. Como parte del proceso de autenticación / autorización en el servidor, puede validar el token recibido y relacionarlo con el ID de usuario autenticado en función de la asociación guardada.

Además de eso, asumo que tiene un buen proceso para manejar 1. Transferencia de dispositivo móvil: las personas venden o regalan sus dispositivos y las personas nuevas desean usar el dispositivo para ejecutar su aplicación (con o sin borrado del dispositivo). 2. Usuarios múltiples: las personas de la misma familia pueden usar el mismo dispositivo pero una identificación de usuario diferente para realizar transacciones.

    
respondido por el jhash 30.09.2015 - 22:18
fuente

Lea otras preguntas en las etiquetas