¿Cómo funciona la autenticación multifactor?

Esta es la tercera de una serie de entregas dedicadas a temas de seguridad en línea. En la primera hablamos sobre los administradores de contraseñas y en la segunda sobre las -cada vez más populares- filtraciones de datos.

Hoy vamos a hablar sobre la autenticación multifactor, también conocida como autenticación (o verificación) de dos pasos, 2FA, MFA, entre otras.

El concepto de autenticación multifactor señala que el usuario debe ser “desafiado” a utilizar al menos dos mecanismos de autenticación entre los siguientes tres:

  • Algo que sabe
  • Algo que tiene
  • Algo que es

Algo que sabe suele ser una contraseña, y este es el primer factor de autenticación que utilizamos. El más común hasta ahora.

Algo que es se refiere a un factor biométrico (una huella digital, reconocimiento facial, de retina, etc).

Algo que tiene puede ser una tarjeta inteligente –smart card-, una llave de autenticación (como las YubiKey, de las que vamos a hablar luego), o un token (físico o virtual).

Para que el desafío sea superado y el usuario habilitado a iniciar sesión en el sitio web, aplicación, o sistema al que intenta acceder, deberá ingresar su usuario y contraseña (primer factor) + el segundo factor de autenticación.

En este ejemplo vemos el flujo de inicio de sesión en Reddit utilizando un token virtual como segundo factor de autenticación:

¿Y cómo puede ayudarte esto a prevenir que un tercero se apodere de tu cuenta? Simplemente porque al atacante le resultaría más dificil obtener los dos factores de autenticación (contraseña + token, o contraseña + llave de autenticación), sin mencionar que el token es time-sensitive.

Si el atacante lograra obtener acceso a tu contraseña de Gmail, necesitaría también conocer el token (que cambia cada 30 segundos), o tener posesión de tu llave de autenticación para poder ingresar.

Los tokens, que generan códigos conocidos como TOTP, pueden ser físicos (como los que ofrecen Duo Security RSA) o virtuales (también llamados software tokens), aunque los primeros suelen verse más en entornos empresariales.

Aplicaciones generadoras de códigos

Las aplicaciones generadoras de códigos de autenticación (software tokens) más populares son Authy (Play Store / App Store), Google Authenticator (Play Store / App Store), y Microsoft Authenticator (Play Store / App Store), y están pensadas tanto para usuarios hogareños como empresariales.

Si bien todas funcionan bastante parecido y ofrecen características similares, yo soy fiel usuario de Authy desde el año 2014. Desde ese entonces he cambiado en múltiples ocasiones de teléfonos (incluyendo una migración de Android a iOS), y los tokens siempre se mantuvieron conmigo. Fue una de las principales decisiones por las que en ese entonces migré desde Google Authenticator.

Authy ofrece soporte para múltiples dispositivos, además de copia de seguridad, y una API muy flexible que pueden utilizar los desarrolladores para agregar la funcionalidad de autenticación multifactor de manera gratuita a sus sitios o aplicaciones.

La interfaz es muy sencilla. Contiene un listado de los sitios y aplicaciones para los que Authy posee la “semilla” y está generado códigos de autenticación, que recordemos cambian cada 20 o 30 segundos, dependiendo del tipo de aplicación (Authy-enabled o genérica).

Para los usuarios de Apple Watch ofrece una aplicación con las mismas funcionalidades. Cuando la instalé pensé que no la iba a usar lo suficiente, pero debo reconocer que la uso mucho más que la app para iPhone.

Llaves de autenticación

Unos párrafos más arriba mencionaba la YubiKey. Esta llave, disponible en distintos formatos (USB, USB + NFC, USB-C, USB-C + Lightning, etc.), permite al usuario superar el desafío de autenticación multifactor conectando la llave al puerto USB de su laptop o puerto lightning de su smartphone, o apoyándola en el sensor NFC de su smartphone.

La llave tiene distintos modos de operación.

Yubico Authenticator

Para los sitios y aplicaciones que aun no soportan llaves de autenticación pero sí la utilización de una aplicación generadora de códigos, Yubico ofrece la aplicación Yubico Authenticator, disponible para Windows, macOS, Linux, iOS, y Android. El usuario debe utilizar la llave para desbloquear la aplicación Yubico Authenticator, la que luego mostrará los tokens como cualquier otra aplicación generadora de códigos.

U2F/CTAP1

En modo U2F/CTAP1, la llave se utiliza como segundo factor de autenticación. El usuario ingresa sus datos de inicio de sesión y luego el navegador o la app compatible le solicitarán que conecte la llave al puerto USB de su laptop o puerto lightning de su smartphone, o la apoye en el sensor NFC de su smartphone.

Durante la configuración, la llave generará una secuencia de 44 caracteres que estará directamente relacionada con el dominio del sitio en el cual el usuario está realizando la configuración. De esta manera, las llaves de autenticación se convierten en el único mecanismo de autenticación multifactor resistente al phishing. Incluso si el usuario completara sus datos de inicio de sesión en un sitio que intenta impersonar a, por ejemplo, google.com, la secuencia generada por la llave será completamente diferente y no podrá ser utilizada por el atacante para iniciar sesión en el sitio real.

Autenticación sin contraseña

Hace ya algunos años Microsoft viene trabajando en su estrategia de autenticación sin contraseñas –passwordless authentication-.

La aprobación de inicio de sesión a través de las notificaciones push de su aplicación Microsoft Authenticator son un gran ejemplo. El usuario, luego de ingresar su dirección de e-mail (en el navegador o en las apps compatibles), debe aprobar el inicio de sesión desde su teléfono o reloj inteligente, sin necesidad de ingresar una contraseña.

Para el caso de las llaves de autenticación, la evolución del standard U2F/CTAP1 es FIDO2/CTAP2.

FIDO2/CTAP2, disponible solo en algunos modelos de YubiKeys, le permite al usuario utilizar la llave de autenticación en reemplazo de su nombre de usuario y contraseña. Cuando la llave es configurada por primera vez en algún sitio, ésta genera una clave pública y una privada (encriptada) con la información proporcionada por dicho sitio. La clave pública es enviada al proveedor de autenticación (el sitio), quien la asocia con la cuenta del usuario.

Cada vez que el usuario inicie sesión, el proveedor de autenticación utilizará esa clave pública para confirmar que la información –nonce– enviada por la llave conectada al puerto USB, lightning (o via NFC) haya sido efectivamente generada por la llave asociada a la cuenta y no por otra.

Pese a que el inicio de sesión no requiere el uso de una contraseña, FIDO2/CTAP2 provee soporte multifactor al permitir al proveedor de autenticación solicitar al usuario el ingreso de un PIN o la utilización de un factor biométrico para desbloquear la llave de seguridad.

Entre los sitios/apps que soportan llaves de autenticación se encuentran 1Password, Dropbox, Facebook, GitHub, Google, y Twitter, entre otros.

Las YubiKey, además, permiten almacenar llaves SSH y certificados PGP. Su valor está en el orden de los US$50- y se pueden adquirir en Amazon.com o directamente en yubico.com.

Hace algunos meses Google presentó sus propias llaves de autenticación, conocidas como Titan Security Kit, y fabricadas por la compañía china Feitian. Su funcionamiento es similar al de la YubiKey, y cumple con los requisitos del Programa de Protección Avanzada.

Google fue duramente criticado por su elección de la tecnología bluetooth dada la cantidad de vulnerabilidades que la afectan, y que podrían comprometer la clave de cifrado del usuario over-the-air.

SMS token

En los últimos años se han descubierto múltiples vulnerabilidades en los protocolos de las redes móviles que podrían permitir a un atacante interceptar el código de autenticación enviado por SMS.

También, en algunos países, se han descubierto graves falencias en el proceso que se utiliza para “portar” las líneas de un operador a otro, lo que podría permitir a un atacante activar la línea de la víctima en otro dispositivo y recibir los códigos de autenticación mediante el vector de ataque conocido como SIM hijacking o SIM swapping, .

Si bien el SMS token no es tan seguro como una aplicación generadora de códigos, si el sitio o aplicación no ofrecen otra alternativa, yo recomiendo mantenerlo habilitado.

Una lista completa de los sitios que soportan algún mecanismo de autenticación multifactor está disponible en twofactorauth.org.

¡Hasta la próxima!

2 pensamientos en “¿Cómo funciona la autenticación multifactor?”

  1. Buenísimo como lo explicas Pablo.
    Si bien tengo los conceptos, con tu explicación se clarifican un montón de cosas .
    Se que la entrada es vieja pero no quería dejar de decirlo.
    Un abrazo desde Uruguay

  2. You he pasado por varias apps de autenticación y ahora mismo estoy con la de LastPass Authenticator y me funciona bien. Antes use Dúo Mobile y me gustaba pero LastPass a veces me completa automáticamente los tokens y eso me gusto, no sé si es peligroso o no, pero… me ahorra tiempo.

Comentarios

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.