Estoy involucrado en un proyecto que está creando un chat-bot con el que los usuarios pueden comunicarse a través de SMS desde sus teléfonos móviles. Nos gustaría que los usuarios puedan usar el bot para realizar algunas tareas básicas de administración de cuentas a través de SMS para sus cuentas con nosotros: cambiando su plan base, comprando funciones adicionales, etc.
¿Nos preguntamos si hay alguna manera de (de manera razonable) identificar de forma segura que el usuario que envía el mensaje de texto es realmente el propietario de la cuenta? Las opciones que hemos considerado son 1) solicitar los últimos 4 de la tarjeta de crédito del usuario y 2) enviar un código de acceso de uso único al usuario por correo electrónico.
Obviamente, ninguno de los dos proporciona seguridad hermética, pero la responsabilidad aquí involucrada es bastante baja. Si alguien pierde su teléfono inteligente, los cargos que el ladrón podría hacer al usar este bot de chat serían la menor de las preocupaciones de la persona. En el raro caso de que el teléfono de alguien se haya visto comprometido, estaremos dispuestos a pagar los costos necesarios para que el usuario esté completo.
Sin embargo, todavía nos gustaría que este proceso de identificación sea lo más seguro posible. Problemas que vemos:
Con el escenario 1, los últimos 4 de la tarjeta de crédito quedan potencialmente en el historial de SMS, por lo que cualquiera que reciba el teléfono (o instale una aplicación maliciosa) tiene acceso a los últimos 4 de la tarjeta y ahora puede autenticarse.
Con el escenario 2, cualquier persona que tenga acceso al teléfono tiene acceso al correo electrónico, por lo que no es una gran mejora con respecto al 1.
¿Hay alguna otra técnica que podamos usar para autenticar que pueda proporcionar más seguridad que esos dos métodos? Soy consciente de que nada será hermético, pero estoy buscando buenas sugerencias.
He considerado algo como enviar sal, hacer que calculen un hash de su último 4 y enviarlo de vuelta, pero eso es prohibitivamente complejo, y aún no es una mejora de seguridad.