Friday, 19 February 2016

Autenticación en dos pasos: qué es, cómo funciona y por qué deberías activarla

Autenticación en dos pasos: qué es, cómo funciona y por qué deberías activarla
http://www.xataka.com/seguridad/autenticacion-en-dos-pasos-que-es-como-funciona-y-por-que-deberias-activarla

Hace unas semanas, Twitter implementaba en su servicio la autenticación en dos pasos. A raíz de esto, en Xataka hemos discutido con Chema Alonso y Sergio de los Santos sobre las contraseñas en general, y hoy vamos a ver qué ocurre con la autenticación en dos pasos.
Como siempre, antes de hablar de nada vamos a tratar de entender qué es la autenticación en dos pasos, cómo lo han hecho en Twitter y en qué se diferencia de lo que han implementado otros servicios como Google.

La base de la autenticación en dos pasos: algo que tienes más algo que sabes

Cuando entramos en un servicio con nuestro usuario y contraseña, estamos utilizando dos datos que en teoría sólo sabemos nosotros. La cuestión es, ¿qué pasa si alguien más adivina nuestro usuario y contraseña?
Para evitar ese escenario, añadimos otro factor para poder entrar: algo que tengamos. En el caso de Twitter, lo que tenemos es el móvil, nuestro y que no toca nadie más (en teoría). En otros casos, como la banca, se usa un token físico.
Something You Know...
Sea como sea, la idea es siempre la misma: añadir una verificación más de que eres tú y no un maleante quien está accediendo con tu cuenta. Para ello, el servicio comprueba que realmente tienes algo (móvil, token) que sólo tú deberías tener.

La forma “estándar” de implementar autenticación en dos pasos: TOTP

Bien, decíamos que la base de la autenticación en dos pasos es comprobar que tienes la pieza del puzzle (normalmente el móvil) que sólo tú, el usuario legítimo, puedes tener. ¿Cómo hacer esa comprobación?
Lo más fácil es lo que ha hecho Twitter: te mandan un código al móvil y te piden que lo pongas en la página web. Sólo tu móvil recibirá el mensaje de texto, así que si has metido el código correctamente es que tienes el móvil y por lo tanto no eres un maleante.
Twitter Auth
Hay otros métodos más sencillos y cómodos que el envío de SMS de Twitter
Sin embargo, eso resulta más caro (hay que enviar el mensaje) y no funciona con todas las operadoras. Hay otra opción, algo más compleja, llamada TOTP: Time-based One Time Password, o Contraseña de un único uso basada en el tiempo.
Como el nombre indica, es una contraseña que sólo se puede usar una vez, y que va cambiando con el tiempo. ¿Cómo funciona?
Lo primero es la configuración inicial. El servidor elige un número, al que llamaremos clave, y que será la base de todas las contraseñas que se generen. Esa clave la transmite a la aplicación de tu teléfono, donde se quedará guardada.
Ahora toca el turno de entrar en el servicio. El servidor te pide tu segundo código de autenticación, así que abres tu aplicación del móvil. En ese momento se calcula el código. Para ello, la aplicación coge la clave y la fecha y hora actual, los combina y sale el código que necesitas.
Dado que el código sólo está guardado en tu aplicación y en el servidor, sólo tú puedes generar la contraseña y sólo el servidor puede decir si es correcta y, por lo tanto, si eres el usuario legítimo o no.
Autenticación en dos pasos
Ahora bien, lo que os he contado es una versión simplificada. Hay que completar algunos aspectos para que todo sea seguro y fácil de usar.
Por ejemplo, ¿cómo transmitimos la clave? Fácil: está en el código QR que os piden escanear cuando configuráis la aplicación por primera vez. Además, para asegurarse de que lo habéis recibido bien, se os pide el código de autenticación. Si es correcto, todo está configurado sin problemas y se puede activar la autenticación en dos pasos en tu cuenta.
Otro aspecto a tener en cuenta: ¿cómo se combinan la clave y el tiempo actual? Si lo hacemos mal, alguien que viese uno de esos códigos de autenticación podría sacar la clave y generar el resto, dejando nuestra protección inutilizada.
Para sacar el código se usa una función hash, que al pasarle un mensaje devuelve una especie de “huella digital” de ese mensaje, un identificador único (teóricamente). Además, esa huella digital es irreversible: si tienes la huella, es (de nuevo, teóricamente) imposible saber cuál es el mensaje que la generó.
El proceso es el siguiente: se combina la clave y la fecha y hora actuales de tal forma que nos sale un número. Usando el algoritmo SHA1 sacámos su código hash, que es el código que damos al servidor para identificarnos. De esta forma queda verificado que somos nosotros (sólo con la clave podríamos generar el hash correcto) y no hay posibilidad de que se recupere la clave original.
Y un último detalle: a la hora de calcular el código no se usa la fecha y hora exacta, sino que se cuentan el número de bloques de 30 segundos. De esta forma te da tiempo a introducirlo con margen suficiente para que no caduque.

Ventajas e inconvenientes de la autenticación en dos pasos

Una vez que ya tenemos el funcionamiento claro, ¿por qué usar la autenticación en dos pasos?¿Qué ventajas y qué inconvenientes tiene?
Lo más inmediato es que la autenticación en dos pasos aumenta muchísimo la seguridad en nuestras cuentas. Incluso aunque tu contraseña no sea segura y la hayan adivinado, si tienes autenticación en dos pasos nadie más que tú podrá entrar en tu cuenta.
Google logo
En su contra están las posibles incomodidades que esto causa, pero si se hace bien no es más que una pequeña molestia. La mayoría de servicios nos permiten especificar ordenadores de confianza para no tener que andar buscando el móvil siempre que entremos, así que sólo tenemos que introducir el código una vez.
La mayor desventaja es lo que ocurre cuando perdemos el móvil. En Google, por ejemplo, tienes unos códigos alternativos de un único uso que puedes usar si no tienes el móvil. En casos más extremos, como las cuentas Microsoft, tendrás que esperar 30 días para recuperar tu cuenta con el resto de información de seguridad.
Otro inconveniente a tener en cuenta es cómo administramos las aplicaciones de terceros que acceden a nuestra cuenta. Como no pueden introducir los códigos de autenticación hay que crear contraseñas especiales de aplicación. Son contraseñas que genera automáticamente Google, Microsoft o quien sea, y que sólo valen para una aplicación en concreto. Así no revelas ni tu contraseña original ni tus códigos de autenticación.
De todas formas, este punto cada vez causará menos problemas. Muchos servicios (Twitter, Facebook, Google) usan OAuth, un protocolo distinto para acceder a tus cuentas que consiste en dar permiso a cada aplicación. De esta forma, no tienes que preocuparte ni por contraseñas ni por códigos de autenticación.
Como conclusión, yo recomendaría activar la autenticación en dos pasos siempre que podáis. Es una capa más de seguridad y probablemente os evite algún susto con vuestras cuentas. ¿Molesta? Sí, es un poco más complejo que sólo usuario y contraseña, pero creo que las ventajas superan bastante a los inconvenientes.


No comments:

Post a Comment