2fa-(autenticación-de-dos-factores)
La Autenticación de Dos Factores (2FA) es un proceso de seguridad que requiere que los usuarios proporcionen dos formas distintas de identificación para verificar su identidad antes de acceder a una cuenta o sistema.
La Autenticación de Dos Factores (2FA) es un método de autenticación multifactor (MFA) que mejora la seguridad al requerir dos factores de autenticación distintos para verificar la identidad de un usuario. Estos factores se clasifican típicamente en tres tipos: algo que el usuario sabe (por ejemplo, contraseña, PIN), algo que el usuario tiene (por ejemplo, un token físico, smartphone, tarjeta inteligente) y algo que el usuario es (por ejemplo, huella dactilar, escaneo facial). Una implementación común involucra una contraseña (factor de conocimiento) combinada con una contraseña de un solo uso (OTP) generada por una aplicación de autenticación o enviada por SMS (factor de posesión). El proceso comienza con el usuario ingresando su credencial principal, generalmente una contraseña. Tras la validación exitosa del primer factor, el sistema solicita el segundo factor. La validez del segundo factor se verifica contra un valor pre-registrado o un algoritmo basado en tiempo. Si ambos factores se autentican con éxito, se otorga acceso. El principal beneficio de 2FA es su resiliencia contra vectores de ataque comunes como phishing, credential stuffing y ataques de fuerza bruta, ya que comprometer un solo factor es insuficiente para obtener acceso no autorizado. Sin embargo, las desventajas incluyen una mayor fricción para el usuario, la posibilidad de pérdida o robo de segundos factores y la dependencia de la seguridad del mecanismo de entrega del segundo factor (por ejemplo, interceptación de SMS). Las implementaciones avanzadas pueden involucrar autenticación basada en riesgo, donde el sistema ajusta dinámicamente el número o tipo de factores requeridos según el contexto, como la ubicación, el dispositivo o la hora del día.
graph LR
Center["2fa-(autenticación-de-dos-factores)"]:::main
Rel_authorization["authorization"]:::related -.-> Center
click Rel_authorization "/terms/authorization"
Rel_mfa_multi_factor_authentication["mfa-multi-factor-authentication"]:::related -.-> Center
click Rel_mfa_multi_factor_authentication "/terms/mfa-multi-factor-authentication"
Rel_single_sign_on_sso["single-sign-on-sso"]:::related -.-> Center
click Rel_single_sign_on_sso "/terms/single-sign-on-sso"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 Explícalo como si tuviera 5 años
Es como necesitar dos llaves para abrir un cofre del tesoro especial: una llave que conoces (como un código secreto) y otra llave que tienes (como un juguete especial).
🤓 Expert Deep Dive
La Autenticación de Dos Factores (2FA) aumenta fundamentalmente la seguridad al superponer un mecanismo de verificación adicional sobre la credencial principal (típicamente una contraseña o frase de contraseña). Este proceso se adhiere al principio de autenticación multifactor (MFA), requiriendo específicamente dos factores distintos de las siguientes categorías:
- Algo que sabes: Contraseñas, PIN, respuestas a preguntas de seguridad.
- Algo que tienes: Tokens físicos (por ejemplo, YubiKey, RSA SecurID), smartphones con aplicaciones de autenticación (por ejemplo, Google Authenticator, Authy) o tarjetas SIM para OTP basadas en SMS.
- Algo que eres: Datos biométricos como huellas dactilares, escaneos faciales o patrones de iris.
Una implementación común involucra Contraseñas de Un Solo Uso Basadas en Tiempo (TOTP), estandarizadas por RFC 6238. Los algoritmos TOTP generan un nuevo código cada 30-60 segundos basándose en una clave secreta compartida (provisionada durante la configuración inicial) y la hora actual, a menudo sincronizada a través de NTP. La validación del lado del servidor implica recalcular las OTP esperadas para una ventana de tiempo dada y compararla con el código proporcionado por el usuario.
Otro método prevalente son las Contraseñas de Un Solo Uso Basadas en HMAC (HOTP), definidas en RFC 4226, que generan códigos basados en un contador que se incrementa con cada uso. El servidor y el cliente deben mantener contadores sincronizados.
Las implementaciones más avanzadas utilizan Universal 2nd Factor (U2F) y su sucesor, FIDO2, que aprovechan la criptografía de clave pública. Durante el registro, se genera un par único de clave privada/pública en la llave de seguridad, y la clave pública se registra con el servicio. La autenticación implica que el servidor envíe un desafío que el dispositivo FIDO firma con su clave privada, que el servidor luego verifica usando la clave pública registrada, proporcionando una fuerte resistencia contra ataques de phishing, ya que la llave nunca sale del dispositivo y está vinculada al origen específico (dominio) del sitio web.