Filtros
Nivel
Artículos (116)
Wiki/Defensas/MFA y FIDO2
Básico15 min lectura

MFA: Autenticación Multifactor y FIDO2

Factores de autenticación, TOTP, SMS OTP y autenticación sin contraseña con WebAuthn

Los Tres Factores de Autenticación

MFA exige al menos dos categorías distintas. Combinar dos métodos del mismo tipo (dos contraseñas) no es MFA real.

🔑

Algo que SABES

Contraseña, PIN, pregunta secreta

Debilidad: Phishing, keylogger, reutilización

📱

Algo que TIENES

Teléfono (TOTP), hardware token (YubiKey), tarjeta inteligente

Debilidad: Robo del dispositivo, SIM swap

👁️

Algo que ERES

Huella digital, iris, reconocimiento facial, voz

Debilidad: Difícil de revocar si se compromete; spoofing biométrico

TOTP — Time-based One-Time Password

Definido en RFC 6238 (basado en HOTP, RFC 4226). Genera un código numérico de 6 dígitos que cambia cada 30 segundos. El secreto compartido se intercambia una vez vía QR (provisioning).

# Cálculo TOTP (simplificado)

T = floor(unix_timestamp / 30) # contador de ventana

HMAC = HMAC-SHA1(secret, T)

offset = HMAC[19] & 0xf

code = (HMAC[offset..offset+3] & 0x7fffffff) % 10^6

# Apps: Google Authenticator, Authy, Microsoft Authenticator

Ventajas

  • • No requiere conectividad (offline)
  • • El código expira en 30 s
  • • Phishing-resistant si se usa con WebAuthn

Debilidades

  • • Vulnerable a phishing en tiempo real (evilginx2, Modlishka)
  • • Si el secreto se filtra, se puede clonar
  • • Usabilidad inferior a passkeys

SMS OTP — ¿Por qué evitarlo?

El SMS sigue siendo el MFA más extendido, pero el NIST (SP 800-63B) lo considera método restringido y recomienda alternativas. Las razones son claras:

SIM Swap

El atacante convence a la operadora para trasladar el número a una SIM que controla. Se ha usado en robos cripto de millones de dólares.

SS7 Hijacking

Vulnerabilidades en el protocolo SS7 de las telecomunicaciones permiten interceptar SMS en tránsito. Conocido desde 2014.

Malware en Android

Apps maliciosas con permisos SMS pueden leer el OTP en tiempo real y reenviarlo al atacante.

Phishing en tiempo real

Un proxy phishing (evilginx2) intercepta el OTP antes de que expire y lo reutiliza en la sesión del atacante.

FIDO2 / WebAuthn — Passkeys

FIDO2 es el estándar de la FIDO Alliance que combina WebAuthn (W3C) + CTAP2 (Client to Authenticator Protocol). Elimina la contraseña usando criptografía de clave pública.

# Registro (enrollment)

1. Servidor envía challenge aleatorio

2. Autenticador genera par de claves (privada nunca sale del dispositivo)

3. Autenticador envía clave pública + credential ID firmados

4. Servidor almacena clave pública

# Autenticación

1. Servidor envía nuevo challenge

2. Usuario verifica (biometría / PIN local)

3. Autenticador firma el challenge con clave privada

4. Servidor verifica firma con clave pública almacenada ✅

¿Por qué FIDO2 es phishing-resistant?

La clave privada está ligada al origin (https://banco.com). Aunque el atacante clone el sitio en https://banco-fake.com, el autenticador detectará un origin diferente y rechazará la autenticación. No existe código que interceptar.

Platform Authenticator

Touch ID, Face ID, Windows Hello, Android biometrics

Clave almacenada en TPM/Secure Enclave del dispositivo

Roaming Authenticator

YubiKey 5, Google Titan Key, SoloKey

Llave hardware USB/NFC. Funciona en cualquier dispositivo

Passkeys Sincronizadas

iCloud Keychain, Google Password Manager

Passkeys multiplataforma. Clave protegida en la nube del proveedor

Recomendaciones de Implementación

Migrar de SMS OTP a TOTP como mínimo; priorizar FIDO2/passkeys para cuentas privilegiadas.

Obligar MFA para: accesos de administración, VPN, accesos a producción, y email corporativo.

Usar hardware tokens (YubiKey) para cuentas críticas: root, Domain Admin, break-glass accounts.

Registrar siempre 2+ métodos de MFA para evitar lockout si se pierde uno.

Implementar alertas cuando un usuario falla MFA más de 5 veces (posible ataque MFA fatigue).

Auditar trimestralmente los métodos MFA registrados por usuario.

Siguiente Paso

Aprende cómo SSO y la federación con SAML y OIDC unifican la autenticación

SSO y Federación: SAML y OIDC →