estrategia de autorización de números móviles mediante SMS, el mejor patrón y prácticas

7

En los últimos años, el número de móvil se ha convertido en un factor importante para la autenticación y, por lo tanto, cada vez más empresas emplean métodos para capturar los números de móvil de sus usuarios mediante SMS.

En un escenario típico;

  1. la GUI con la que el usuario está interactuando (ya sea un sitio web o una aplicación) le solicita al usuario que ingrese su número de teléfono móvil
  2. entonces el servidor genera un token y
  3. envía ese token al número de móvil proporcionado
  4. luego, el usuario debe cambiar a una nueva GUI, por ejemplo, si la GUI original es un sitio web, el usuario debe cambiar a su dispositivo móvil para encontrar el mensaje recibido en la bandeja de entrada de SMS. es lo mismo si el usuario estaba originalmente en una aplicación. en ese caso, el usuario debe cambiar a la aplicación de administrador de SMS en su teléfono inteligente
  5. el usuario entonces, debe copiar o memorizar el token recibido a
  6. entonces el usuario debe volver a la GUI original y
  7. ingrese el token copiado o memorizado en el sitio web o aplicación original y
  8. presiona una tecla (por ejemplo) y
  9. esperar a que el servidor procese el token ingresado
  10. al final, el servidor valida el token ingresado y si es correcto, entonces autoriza ese número móvil y puede configurarlo como un medio de autenticación para el usuario y
  11. finalmente el resultado se muestra en la GUI

este es un escenario típico que la mayoría de las empresas de TI conocidas (como Google, Facebook y otros) utilizan para autorizar a sus usuarios.

ahora asume otro escenario,

  1. la GUI con la que el usuario está interactuando (ya sea un sitio web o una aplicación) le solicita al usuario que ingrese su número de teléfono móvil
  2. entonces el servidor genera un token y
  3. muestra el token para el usuario en la misma GUI y le pide que lo envíe a un número específico (Número de Centro de Mensajería del Servidor = SMCN) usando el número de teléfono móvil ingresado por el usuario.
  4. el usuario puede tener que copiar o memorizar el token mostrado,
  5. entonces el usuario debe cambiar a una nueva GUI, por ejemplo, si la GUI original es un sitio web, el usuario debe cambiar a su dispositivo móvil para escribir el token y enviarlo a SMCN. es lo mismo si el usuario estaba originalmente en una aplicación. en ese caso, el usuario debe cambiar a la aplicación de administrador de SMS en su teléfono inteligente para enviar el token. sin embargo, en este caso, la aplicación puede emplear la API de programación de dispositivos inteligentes para llamar a SMS Launcher y rellenar previamente la dirección y el contenido del mensaje en nombre del usuario.
  6. el usuario simplemente envía el mensaje a SMCN,
  7. entonces el usuario debe volver a la GUI original y
  8. presiona una tecla para declarar que el token se ha enviado al servidor y
  9. esperar a que el servidor procese el token ingresado
  10. al final, el servidor valida el token ingresado y si es correcto, entonces autoriza ese número móvil y puede configurarlo como un medio de autenticación para el usuario y
  11. finalmente el resultado se muestra en la GUI

ahora la pregunta es, ¿qué método es mejor en términos de seguridad y otros factores si hay alguno?

EDITED:

He actualizado la pregunta basada en @Andre edit y respondo para una mejor comprensión,

En primer lugar, ambos métodos pueden usarse tanto en la autenticación como en la autorización. En el caso de que alguien haya iniciado sesión en su cuenta de Banca por Internet y quiera transferir dinero, aquí se pueden usar los métodos mencionados para autorizar al usuario y otorgarle la transferencia de dinero o no.

En segundo lugar, concentrémonos en comparar estos dos métodos y no en hablar del inconveniente de usar SMS en los procesos de autenticación y autenticación.

Tercero, comparar dos alternativas, (como dije antes) en ambos casos, los usuarios tienen que memorizar o copiar algo, luego dejar un entorno para otro y escribirlo o pegarlo. Por lo tanto, parece que, en términos de usabilidad, ambos métodos son iguales; como en el método uno, el usuario debe escribir algo recibido en SMS en la GUI original y en el método dos, el usuario debe escribir algo visto en la GUI original en SMS enviar | recibir GUI. Por lo tanto, en ambos casos, el usuario puede cometer un error.

    
pregunta anonim 09.04.2016 - 12:51
fuente

2 respuestas

5

Veamos algunos ataques diferentes y cómo afectan a los dos sistemas diferentes, seguidos de algunas consideraciones de usabilidad.

Control de teléfono (sorteo)

Si el atacante tiene el control total por teléfono, se acabó el juego sin importar qué. Sin embargo, un atacante puede haber podido obtener un troyano en el teléfono que solo tiene limitado permisos Al menos en Android, leer y enviar SMS son diferentes permisos. Sin embargo, este secnario se siente más bien ideado y no veo ninguna razón por la cual sería más difícil obtener un permiso que el que es obtener el otro.

Ingeniería social (# 1 gana)

Engañar a algunos usuarios para que lean el código es fácil si eso es todo lo que contiene el mensaje. Llame al usuario, diga que es de la compañía de telefonía celular que está probando la recepción o lo que sea, y que pronto recibirán un mensaje para leerlo. (Un atacante competente podría encontrar una manera mejor de mentir que yo).

Sin embargo, esto puede ser difícil si el SMS contiene una explicación de lo que es el código (y tal vez una advertencia excepcional contra phising), revelando así todas sus mentiras de ingeniería social.

Un usuario que tiene que enviar un SMS no puede recibir dicha advertencia. Ese usuario podría caer en trucos como "simplemente envíe este código a este número para reclamar su auto deportivo gratis". No todos caerían en esto, pero algunos lo harían, especialmente si se trata de un servicio que rara vez usan, por lo que no reconocen el número.

Eavesdropping en la red telefónica (# 2 gana)

Como el cifrado GSM es famoso, débil, y torres de teléfonos celulares falsas para usar con MitM se pueden comprar en Internet, un atacante podría intentar escuchar a escondidas la comunicación por SMS. Esto no es una amenaza teórica, sino algo que se hace en la naturaleza .

Con el sistema uno, un intruso debe leer el código de acceso que se envía al usuario cuando intenta iniciar sesión. El atacante debe usarlo antes que el usuario (debería ser fácil si el proceso está automatizado). Esto requiere que el atacante esté en la proximidad física del objetivo cuando el usuario inicie sesión en el servicio.

Con el sistema dos, no importa si el atacante lee el SMS. El código de acceso es (o al menos debería ser) exclusivo del dispositivo del usuario, y el atacante no puede autenticarse en su dispositivo incluso si conoce el código de acceso que el usuario envió.

Suplantación de SMS (número 1 gana, problema importante)

Spoofing de SMS es una cosa muy real que se utiliza en la naturaleza. Si el atacante puede falsificar el número de teléfono de los usuarios en un SMS, puede superar la alternativa dos. Esta es una gran debilidad en ese enfoque.

Acabo de buscar en Google " servicio gratuito de suplantación de SMS " y encontré este sitio. Seguramente, incluso su tío de illierate de la computadora podría hacer lo mismo, omitiendo así su esquema de autenticación.

Usabilidad (# 1 gana)

La alternativa dos tiene algunas desventajas cuando se trata de usabilidad:

  • El usuario debe ingresar un código de acceso y un número al que enviarlo. Esto lleva más tiempo. Dos cosas para copiar y pegar son el doble de una.
  • El usuario podría ingresar el número de teléfono incorrecto, lo que resultaría en un inicio de sesión fallido. Si se ingresa un código de acceso incorrecto en uno alternativo, es fácil dar una respuesta apropiada al usuario. Si se ingresa un número de teléfono incorrecto, es difícil para el servidor saber qué es lo que sucede y dar la respuesta correcta al usuario.
  • El envío de un SMS puede costar dinero para el usuario.

Conclusión

En seguridad, es 2-1 a uno alternativo. ¿Pero qué tan graves son las diferentes vulnerabilidades? Yo diría que especialmente la falsificación de SMS, pero también la ingeniería social son amenazas más grandes que las escuchas ilegales. Ambos se pueden hacer desde cualquier parte del mundo y requieren mucho menos esfuerzo y conocimiento técnico. La suplantación de SMS podría realizarse de forma automatizada a gran escala.

Entonces, incluso dejando la usabilidad a un lado, diría que la alternativa es la alternativa más segura.

TL;DR

Puede falsificar el remitente de un SMS, inutilizándolo para identificarlo. Usa la primera alternativa.

    
respondido por el Anders 11.04.2016 - 23:24
fuente
2

Las dos opciones son distintas de la siguiente manera:

  1. La compañía envía el SMS al cliente
  2. El cliente envía el SMS a la empresa

Si pensamos detenidamente en cómo se verifica la identidad en las redes telefónicas, descubriremos el problema de seguridad principal que las compañías líderes elegirán la opción 1. Cada vez que realice una llamada o envíe un SMS, sabrá qué número está llamando. Sin embargo, cuando recibe una llamada o un SMS, no tiene idea de dónde se originó.

Veamos este problema desde la perspectiva de la compañía. Su objetivo es verificar la identidad del usuario de dos maneras. La empresa ya confía en sí misma. La identidad del usuario se verifica por contraseña y al recibir un SMS. La compañía sabe que los SMS llegarán al número de teléfono al que los envían, ya que así es como funciona el sistema telefónico. Entonces, si la misma persona tiene la contraseña y el teléfono, también tienen el mensaje SMS y el token que contiene. Se ha establecido la confianza.

En la segunda opción, la confianza no se puede establecer desde la perspectiva de la empresa. La compañía recibirá un SMS de una fuente arbitraria y no podrá determinar en qué número de teléfono se originó. (Irónicamente, el cliente puede verificar la identidad de la compañía de esta manera, pero la compañía no puede verificar la identidad del cliente).

Esta es la misma razón por la que se nos dice que nunca proporcionemos detalles bancarios a alguien que llama y dice ser de nuestro banco. En su lugar, las personas prudentes colgarán y marcarán el número de teléfono de su banco para verificar la identidad de la persona con la que están hablando.

    
respondido por el Brent Kirkpatrick 12.04.2016 - 08:41
fuente

Lea otras preguntas en las etiquetas