El número de teléfono como sistema de verificación de identidad

Lo comentaba de pasada en el CIGTR (ES) del jueves, y con la presentación del nuevo proyecto audiovisual Seguridad en dos minutos, no ha sido hasta hoy que puedo hablar del tema.

Digits

Twitter es una de esas empresas cuya relación con la comunidad de desarrolladores es de amor/odio. Por un lado, debemos a su equipo herramientas tan potentes como Bootstrap (EN), que permite a cualquier desarollador crear una web bien diseñada (aunque huela ya un poco de tanto ver proyectos que la usan…) sin tener ni idea de diseño (algo lamentablemente muy habitual en el sector), o Storm (EN), una tecnología dirigida al procesamiento de grandes volúmenes de información, y que fue en sus comienzos el esqueleto que permitía a Twitter mover en tiempo real tantísimas actualizaciones por segundo. Por otro lado, tenemos una empresa que creció en sus inicios gracias a lo abierto del proyecto, y que pasito a pasito ha ido dando con la puerta en las narices a todo ese ecosistema de apps de terceros generado alrededor de su plataforma. Sin aviso de ningún tipo, simplemente porque no interesaba ya a sus intereses comerciales.

La semana pasada realizaban por primera vez en varios años una conferencia de desarrolladores, en la que presentaron Fabric (EN), un framework esta vez para el desarrollo de apps multiplataforma, pero todo este rollo viene precisamente por uno de sus elementos, Digits.

Digits (Enlace eliminado) es una herramienta de autenticación que Twitter propone como estándar para el mundo app. La idea es tan sencilla como inquietante. En vez de usar email y contraseña, la identificación se hace mediante número de teléfono y SMS, siguiendo las estrategias de cada vez un número mayor de aplicaciones móviles (las de mensajería son un claro ejemplo), de tal manera que pasamos de un sistema de seguridad basado en el conocimiento (contraseña) y la posesión digital (email) a otro basado en la posesión (terminal móvil).

Queda claro que el email no es un buen catalizador de identidades. A fin de cuentas, es un bien digital, y por tanto, puede ser sustraído sin necesitar para ello robo físico. La contraseña, por su parte, ofrece también pocas garantías, más cuando somos conocedores que la mayoría de usuarios las repiten entre servicios (el colmo de los colmos es usar la misma que el propio email…) y que además, y si el servidor no cuenta con las protecciones adecuadas, pueden ser fácilmente explotadas por fuerza bruta.

Pero ¿Qué hay del número de teléfono? Para empezar, no deja de ser un bien digital. Bien es verdad que sí, ese bien digital está protegido en una plataforma (red de telefonía) mucho más segura que la de un servidor de correo, y que depende de un bien físico (la SIM) por lo que a priori podemos considerarlo un sistema de verificación de identidad basado en la posesión más seguro que otro como el email. Pero donde antes había dos elementos (poco inseguros, por otra parte), ahora pasamos a uno.

La forma que tiene de identificar al usuario es mediante el envío de SMS. Una funcionalidad que depende de ofrecer permisos extra a la aplicación, y que para colmo es uno de los vectores de monetización más habituales del malware móvil (SMS premium), por lo que bajo la excusa del logging podríamos estaríamos obligados a permitir la lectura (y seguramente la escritura, que el usuario eso no lo va a leer) del servicio SMS a aplicaciones que no lo necesitarán para nada más.

Para colmo, y poniéndonos paranoicos, cualquier otra aplicación podría robar el acceso a todos los servicios que usen Digits, pidiendo nuevamente la lectura de SMS en el terminal y haciendo request en todos ellos, por ver si hay asociación de identidad. Como ya tiene acceso al SMS, el usuario no tendría por qué enterarse (Digits pedirá el código enviado por SMS, y la aplicación maliciosa hará de MITM para evitar que la notificación llegue al usuario, contestando ella misma desde un servidor ofuscado).

Eso obviando que número de teléfono solemos tener solamente uno, por lo que una vez “robado”, habría que formatearlo para evitar que el ciberatacante siga con el control del mismo (suponiendo además que Digits tenga la opción de administrar conexiones, y que tengas manera de demostrar que tú eres tú más allá del SMS). Y que a nivel de privacidad, resulta hasta más sensible (el email es un canal menos directo que sin duda nuestro número de teléfono).

En fin, que siento ser pesimista, pero no creo que la verificación por número de teléfono sea mejor que la tradicional de email/password. Si unimos las dos sí tenemos un sistema bastante robusto (obliga al atacante a cubrir varios frentes, y eso es más complicado de realizar sino estamos ante un escenario APT), pero por separado, tanto monta, monta tanto.