La activación de un segundo factor de autenticación (two-factor authentication o 2FA) permite añadir un nivel extra de protección a nuestras cuentas de usuario de servicios online.

Cuando se ha activado 2FA, para acceder a nuestra cuenta de usuario se necesita, además del nombre de usuario (username) y la contraseña (password), una información adicional proveniente de alguna de estas categorías:

  • Algo que conoces: un PIN (personal identification number), otra contraseña, la respuesta a una “pregunta secreta”, un patrón de teclas específico, etc.
  • Algo que tienes: una tarjeta inteligente, un teléfono, un pequeño token hardware, etc.
  • Algo que eres: el patrón biométrico de la huella digital, un escaneo del iris del ojo, una impresión de voz, etc.

Uno de los métodos 2FA más básicos se basa en enviar un SMS al teléfono del usuario. Después de introducir un nombre de usuario y una contraseña válidos en el servicio online, se envía al usuario un código de un único uso (OTP, one-time password) que éste deberá introducir para completar el acceso.

Nota: El uso de SMS como 2FA no se considera seguro debido a la existencia de técnicas mediante las cuales un ciberdelincuente puede suplantar el teléfono del usuario para recibir el código OTP (por ejemplo el SIM swapping).

Software tokens

Una de las formas más populares de 2FA es la generación por software de códigos de un único uso basados en tiempo (TOTP, time-based one-time password).

Para usarlos, es necesario descargar e instalar una aplicación 2FA en el teléfono móvil o en el ordenador. Esta aplicación genera un código temporal (habitualmente cada 30 segundos) que será necesario introducir, después del nombre de usuario y la contraseña, para acceder a un determinado servicio online:

Ejemplo de aplicación 2FA. Source: https://grantwinney.com/

Estas aplicaciones generan estos códigos temporales mediante un algoritmo que utiliza una clave secreta que proporciona cada servicio, normalmente mediante un código QR, en el momento de activar 2FA en el mismo.

Activación de 2FA

La mayoría de servicios online que se preocupan por la seguridad permiten activar 2FA o 2SV (two-step verification) desde alguna opción de la configuración de la cuenta relacionada con la seguridad.

Opciones de seguridad

En el siguiente ejemplo, esta opción está en la sección Your profileSecurity settingsTwo-Factor Authentication. Pulsaremos Click here to Enable para comenzar el proceso:

Activación 2FA

Método 2FA

Si el servicio online soporta diferentes tipos de 2FA, intentaremos evitar el uso del teléfono/SMS y elegiremos la opción para generar códigos TOTP mediante una aplicación:

Elección de TOTP

Nota: Aunque el sitio web indique Google Authenticator, se puede utilizar cualquier aplicación que permita generar códigos TOTP: Microsoft Authenticator, Authy, andOTP, etc.

Código QR y clave secreta

A continuación, el servicio suele mostrar un código QR que se puede escanear mediante la aplicación 2FA para añadir el servicio a la misma. A veces, también se proporciona la clave secreta en forma de texto para poder añadir el servicio a la aplicación 2FA de forma manual:

QR y clave secreta

Nota: Hay quien argumenta que no se deben escanear los códigos QR 2FA debido a que éstos incluyen más información de la necesaria para generar los códigos TOTP (por ejemplo, la dirección de correo electrónico o la URL del servicio).

Si pierdes o te roban el teléfono, y la aplicación 2FA no realiza copias de seguridad de la información, podríamos perder el acceso a nuestros servicios online al no poder introducir el segundo factor de autenticación. Por ese motivo, se recomienda guardar en un lugar seguro los códigos QR y la clave secreta para poder volver a introducirlos en la aplicación si fuese necesario.

Nota: Este lugar seguro no debería ser nuestro gestor de contraseñas habitual ya que, si un atacante consigue obtener acceso al mismo, tendría todo lo necesario para acceder a nuestros servicios online. Por este motivo, hay quien imprime los códigos QR para guardarlos fuera del ordenador.

Guardado seguro de la información 2FA

Una solución al problema de guardar la información 2FA de forma segura podría ser la siguiente:

  • Gestor de contraseñas principal (por ejemplo Bitwarden) para guardar:
    • nombre del servicio y URL del mismo
    • nombre de usuario
    • contraseña (generada de forma aleatoria)
    • notas sobre el servicio
    • etc.

Bitwarden

  • Gestor de contraseñas local (por ejemplo KeePassXC) para guardar únicamente:
    • nombre del servicio
    • imagen adjunta del código QR (en formato png o jpg)
    • clave secreta
    • backup codes (si se proporcionan)

KeePassXC

Nota: Si se necesita más seguridad, la base de datos de este gestor de contraseñas local se puede almacenar en una unidad encriptada (por ejemplo usando Cryptomator).

Añadir el servicio a la aplicación 2FA

A continuación, se añade el servicio a la aplicación 2FA de forma manual introduciendo la clave secreta que se ha guardado en el gestor de contraseñas local. De esta forma, si todo funciona correctamente, se garantiza que la información guardada es correcta para una posible recuperación en el futuro.

Si el servicio no proporciona la clave secreta, se puede utilizar una aplicación para escanear códigos QR (por ejemplo, Barcode Scanner) para obtenerla a partir de la URI otpauth://totp tal como se muestra en la siguiente imagen:

Obtención de la clave secreta a partir del QR

Verificación del 2FA

Finalmente, se requerirá introducir el código TOTP obtenido mediante la aplicación 2FA para que el servicio lo valide:

Introducción del código OT

Si la validación es correcta, el servicio quedará configurado para usar 2FA a partir de ese instante. Al final del proceso, algunos servicios también proporcionan uno o más backup codes de un solo uso para usarlos cuando no se puede utilizar la aplicación 2FA:

Backup codes

Nota: Es muy aconsejable guardar los backup codes en el mismo gestor de contraseñas local que el código QR y la clave secreta.