TOTP vs SMS vs Passkeys: Comparación por Modelo de Amenaza
Security Tools

TOTP vs SMS vs Passkeys: Comparación por Modelo de Amenaza

"Activa la autenticación en dos pasos" es un buen consejo, pero esconde un detalle importante: no todos los segundos factores son iguales. Un código por mensaje de texto, un código de seis dígitos de una app autenticadora y una passkey se sitúan todos tras el mismo aviso de "verifica que eres tú", y sin embargo resisten ataques completamente distintos. Elegir el equivocado puede dejarte expuesto a amenazas que creías resueltas. Este artículo compara los tres enfoques por modelo de amenaza — qué defiende realmente cada uno y dónde sigue fallando cada uno — para que elijas de forma deliberada y no por defecto. Complementa nuestra guía sobre cómo funciona la autenticación TOTP y nuestro recorrido por la anatomía de un código QR de 2FA.

Por Qué Existe el Segundo Factor

Una contraseña es "algo que sabes". Su debilidad fundamental es que el conocimiento puede copiarse sin que te enteres: puede caer en un phishing, adivinarse, reutilizarse de otro sitio comprometido o leerse de un servidor que la guardó mal. Un segundo factor añade una categoría que el atacante normalmente no puede copiar en remoto — "algo que tienes" (un teléfono, una llave) o "algo que eres" (una huella que desbloquea ese dispositivo). El objetivo es que robar solo tu contraseña deje de bastar para entrar.

Pero ese objetivo solo se cumple si el segundo factor es genuinamente difícil de obtener o reutilizar para un atacante remoto. Aquí es exactamente donde SMS, TOTP y passkeys divergen. Los tres suben el listón; simplemente lo suben a alturas muy distintas y frente a atacantes muy distintos.

Códigos SMS de Un Solo Uso: el Factor Común Más Débil

Los códigos enviados por SMS son el segundo factor más desplegado porque no exigen nada del usuario salvo un número de teléfono. Esa ubicuidad es su única ventaja real. En seguridad, el SMS arrastra varias debilidades estructurales bien documentadas que no dependen de lo cuidadoso que sea el usuario.

SIM swapping. Un atacante que convence (o soborna, o engaña por ingeniería social) a una operadora para trasladar tu número a una SIM que él controla recibirá todos los códigos SMS que se te envíen. La víctima suele darse cuenta solo cuando su propio teléfono se queda sin servicio. No es un exploit teórico: el fraude por SIM-swap es una categoría de ataque reconocida que operadoras, reguladores y fuerzas de seguridad han documentado públicamente, y apunta justo a las cuentas (correo, banca, cripto) donde el 2FA por SMS es más común.

SS7 e interceptación de red. El sistema global de señalización telefónica, SS7, se diseñó hace décadas en un entorno de alta confianza entre un puñado de operadoras. Se ha demostrado que sus debilidades permiten reenrutar o interceptar mensajes de texto a partes con acceso a la red de señalización. Esto significa que un código SMS puede, en principio, interceptarse en tránsito sin tocar nunca tu teléfono ni el mostrador de atención de tu operadora.

Entrega y fiabilidad. El SMS es de mejor esfuerzo. Los códigos pueden retrasarse, perderse o fallar por completo en roaming, con señal débil o cuando una pasarela de mensajería está congestionada. Un segundo factor que a veces no llega empuja a usuarios y soporte hacia flujos de reserva más débiles ("¿no te llegó el código? responde estas preguntas de seguridad"), y esas alternativas suelen convertirse en la parte más blanda de todo el sistema.

Susceptibilidad al phishing. Como cualquier código que el usuario lee y teclea, un código SMS puede reenviarse a un sitio falso en tiempo real por un atacante situado en medio. Así que el SMS hereda la debilidad de phishing de todos los códigos tecleados además de sus problemas únicos a nivel de red.

La conclusión práctica no es "el SMS es inútil". El 2FA por SMS sigue siendo bastante mejor que una contraseña sola frente a atacantes oportunistas y de bajo esfuerzo. Pero es el más débil de los tres, y para cuentas de alto valor debería reemplazarse — o al menos complementarse — en cuanto haya un factor más fuerte disponible.

TOTP: un Gran Salto que Deja Fuera a la Operadora

Las contraseñas de un solo uso basadas en tiempo (TOTP), estandarizadas en RFC 6238, funcionan de forma completamente distinta. Durante la configuración, el servicio y tu app autenticadora acuerdan un secreto compartido — la carga útil tras el código QR que escaneas. A partir de ahí, ambos lados calculan de forma independiente el mismo código corto a partir de ese secreto y la hora actual, en ventanas de 30 segundos. En el login no se transmite nada salvo el código que tecleas. Nuestro generador TOTP implementa exactamente este cálculo en el navegador, y el análisis a fondo de TOTP recorre los pasos de HMAC y truncamiento en detalle.

Este diseño elimina de golpe toda la clase de debilidades del SMS:

  • Sin operadora, sin número de teléfono. Como el código se calcula localmente a partir del secreto compartido, no hay nada que hacer SIM-swap ni nada que interceptar en la red telefónica. Apoderarse de tu número no le da nada al atacante.
  • Sin entrega por red. El código se genera sin conexión en el dispositivo. Funciona en un avión, en un sótano o en un teléfono sin SIM. No hay pasarela que congestionar ni mensaje que perder.
  • Ventana de validez corta. Cada código solo vale para su paso de 30 segundos (más una pequeña tolerancia que los servidores permiten por desfase de reloj), lo que limita mucho cuánto tiempo es útil un código filtrado.

Para cualquiera que use hoy SMS, pasar a una app autenticadora TOTP es uno de los upgrades de seguridad de mayor valor disponibles, y es gratis. Cierra por completo las puertas del SIM-swap y del SS7.

La Debilidad Residual de TOTP: Sigue Siendo Susceptible al Phishing

TOTP es un gran paso adelante, pero no resuelve todos los problemas, y conviene ser preciso sobre el que deja abierto. Un código TOTP no está vinculado al sitio web en el que estás iniciando sesión. Se deriva únicamente del secreto compartido y del reloj — no sabe nada de qué sitio lo solicitó. Eso significa que a un usuario se le puede engañar para que teclee un código válido en ese momento en un sitio falso convincente.

El ataque es así: recibes un mensaje con un enlace a una página idéntica a la de tu banco o tu proveedor de correo. Introduces tu contraseña; el sitio falso la reenvía al instante al sitio real. El sitio real pide tu código TOTP; el sitio falso también te lo pide. Lees el código en vivo de tu autenticador y lo tecleas. El atacante reenvía ese código al sitio real dentro de su ventana de 30 segundos y ya ha iniciado sesión. Es un patrón de phishing / adversario en el medio en tiempo real, y como el código no lleva información sobre el origen, el humano es la única defensa — y los humanos fallan bajo presión.

Así que TOTP derrota el robo remoto de credenciales y los ataques de red específicos del SMS, pero no derrota a una víctima a la que se puede manipular por ingeniería social para que introduzca un código en el sitio equivocado. Ese es justamente el hueco que el siguiente factor se diseñó para cerrar.

TOTP vs SMS vs Passkeys: Comparación por Modelo de Amenaza

Passkeys y WebAuthn: Resistentes al Phishing por Diseño

Las passkeys son el nombre de cara al usuario de las credenciales construidas sobre el estándar WebAuthn (parte de la familia FIDO2). En lugar de un secreto compartido que ambos lados conocen, una passkey usa criptografía de clave pública. Al registrarte, tu dispositivo genera un par de claves: la clave privada nunca sale del dispositivo (o de tu llavero sincronizado y cifrado de extremo a extremo), y al sitio web solo se le entrega la clave pública. No hay ningún secreto compartido en el servidor que robar, ni ningún código que tú tengas que leer y reteclear.

La propiedad que más importa aquí es el vínculo con el origen. Cuando te autenticas, tu dispositivo firma un reto del sitio, y el navegador incluye el origen real (el dominio verdadero que hace la petición) en lo que se firma. La clave privada solo produce una firma acotada al origen con el que el navegador realmente está hablando. Un sitio de phishing servido desde un dominio parecido es un origen distinto, así que la credencial registrada para tu banco real simplemente no producirá una firma válida para el dominio del atacante. El navegador y el sistema operativo lo imponen — no depende de que el usuario note que la URL está sutilmente mal.

Esta es la diferencia crucial frente a SMS y TOTP. Con esos, el secreto o el código es algo que un humano transfiere, así que a un humano se le puede engañar para transferirlo al lugar equivocado. Con una passkey no hay nada que el humano transfiera, y la propia criptografía se niega a funcionar fuera del origen. A eso se refiere la gente cuando dice que las passkeys son resistentes al phishing por diseño: la resistencia es una propiedad estructural del protocolo, no una conducta que le pedimos al usuario que ejecute correctamente cada vez.

Passkeys Ligadas al Dispositivo vs Sincronizadas

Las passkeys vienen en dos variantes amplias, y la distinción afecta a tu modelo de amenaza:

  • Passkeys ligadas al dispositivo viven solo en un autenticador — normalmente una llave de seguridad hardware, o una passkey que la plataforma mantiene deliberadamente no exportable. La clave privada nunca sale de ese hardware. Da la garantía más fuerte contra el robo remoto, a costa de riesgo de recuperación: pierdes el dispositivo y pierdes esa credencial, así que debes registrar un autenticador de respaldo.
  • Passkeys sincronizadas se respaldan y sincronizan entre tus dispositivos mediante un llavero de plataforma o de gestor de contraseñas, protegido con cifrado de extremo a extremo. Ceden un poco de la garantía de "la clave físicamente no puede salir de este único dispositivo" a cambio de una usabilidad y recuperabilidad muy superiores — si pierdes un teléfono, la passkey sigue disponible en tus otros dispositivos con sesión iniciada. Para la mayoría es el punto óptimo práctico, porque el mayor riesgo real de las credenciales solo ligadas al dispositivo es el bloqueo de cuenta, no la extracción exótica de claves.

Ambas variantes conservan la propiedad de vínculo con el origen que hace a las passkeys resistentes al phishing; la sincronización cambia dónde puede existir la clave privada, no si un sitio de phishing puede usarla.

Lo que las Passkeys No Arreglan por Arte de Magia

Ser ecuánime corta por ambos lados. Las passkeys son excelentes contra el phishing y el robo de secretos del lado del servidor, pero no son una panacea. La adopción sigue incompleta: muchos servicios aún no las ofrecen, los flujos de recuperación y vinculación de cuentas aún están madurando, y un fallback mal diseñado ("¿no puedes usar tu passkey? aquí tienes un código SMS") puede reintroducir en silencio la misma debilidad de la que intentabas escapar. Una passkey además protege el paso de autenticación, no todo lo que viene después: malware ya en ejecución en tu dispositivo desbloqueado, o un token de sesión robado tras el login, es otra clase de problema. Las passkeys elevan drásticamente el suelo para el propio inicio de sesión; no hacen irrelevante el resto de tu postura de seguridad.

Lado a Lado: Qué Resiste Cada Factor

Ayuda alinear los tres factores contra los ataques concretos comentados arriba en vez de una vaga etiqueta de "fuerte/débil".

  • Reutilización de contraseñas / robo remoto de credenciales: SMS, TOTP y passkeys defienden contra esto, porque los tres exigen algo más allá de la contraseña.
  • SIM swapping: el SMS es vulnerable. TOTP y passkeys no se ven afectados — ninguno depende de tu número de teléfono.
  • SS7 / interceptación de red: el SMS está expuesto. TOTP y passkeys nunca envían un código por la red telefónica, así que no hay nada que interceptar.
  • Phishing en tiempo real / adversario en el medio: SMS y TOTP son ambos susceptibles, porque el usuario lee y reteclea un código no ligado al sitio. Las passkeys resisten esto estructuralmente por el vínculo con el origen.
  • Robo de secretos del lado del servidor: un servidor comprometido puede filtrar detalles del flujo SMS y los secretos compartidos de TOTP. Un servidor de passkeys solo guarda claves públicas, inútiles para un atacante por sí solas.
  • Sin conexión / mala cobertura: el SMS puede no entregarse. TOTP funciona totalmente sin conexión. Las passkeys también funcionan localmente, ya que la firma ocurre en tu dispositivo.

Leído de arriba abajo, el patrón es claro: TOTP domina al SMS en prácticamente todos los ejes, y las passkeys añaden lo único que TOTP no puede aportar — resistencia a que se engañe a un usuario en tiempo real.

Cuándo Usar Cada Uno

Nada de esto significa que debas perseguir la opción más nueva en todas partes. Una política sensata y realista es esta:

  • Prefiere passkeys donde se ofrezcan, sobre todo para tus cuentas de mayor valor — correo principal, banca, proveedores de identidad y cualquier cosa que pueda restablecer otras cuentas. Su resistencia al phishing es una mejora categórica genuina, no incremental.
  • Usa TOTP como opción por defecto donde las passkeys aún no estén soportadas. Es el caso común hoy. TOTP es gratis, sin conexión, independiente de la operadora y un gran upgrade de seguridad. Tratarlo como línea base para toda cuenta que ofrezca "app autenticadora" es una elección sólida y duradera mientras el soporte de passkeys sigue expandiéndose.
  • Trata el SMS como último recurso o fallback temporal. Si un servicio solo ofrece SMS, SMS-más-contraseña sigue siendo mejor que la contraseña sola frente a atacantes casuales — así que actívalo. Pero migra a TOTP o passkeys en cuanto cualquiera esté disponible, y desconfía de las cuentas que dejan que un fallback SMS anule en silencio un factor más fuerte.
  • Guarda respaldos sea cual sea el factor. Salva los códigos de recuperación TOTP sin conexión; registra un segundo autenticador de passkey; no dejes que un único dispositivo perdido te deje fuera. El desastre de 2FA más común autoinfligido no es que te hackeen — es quedarte bloqueado de tu propia cuenta.

El hilo conductor es la proporcionalidad: ajusta el factor a lo que la cuenta puede perder. La mayoría puede mejorar su seguridad de forma notable esta misma semana sin comprar nada, simplemente moviendo sus cuentas importantes del SMS a una app autenticadora TOTP y adoptando passkeys de forma oportunista según cada servicio lo soporte. Si configuras TOTP por primera vez, el recorrido por el código QR de 2FA explica exactamente qué estás escaneando, y nuestro generador TOTP te permite verificar códigos por completo en tu navegador.

Una Nota Sobre Combinar Factores

Estas opciones no son estrictamente excluyentes. Muchos servicios permiten registrar más de un método, y una combinación reflexiva puede cubrir distintos modos de fallo: una passkey como login primario resistente al phishing, un autenticador TOTP como respaldo que aun así evita las debilidades de red del SMS, y códigos de recuperación guardados sin conexión para el día que un dispositivo muera. La única combinación ante la que hay que ser cauto es cualquier montaje donde un fallback débil pueda sustituir por completo a un primario fuerte — porque un atacante siempre atacará la ruta activa más débil, no la más fuerte. Audita tus cuentas importantes buscando justo eso: si activar una passkey aún deja un reset por SMS de par en par, has reforzado la puerta principal dejando una ventana sin cerrar.

En Resumen

El 2FA por SMS es mejor que nada pero estructuralmente débil: SIM swapping, interceptación SS7, fallos de entrega y phishing le aplican todos. TOTP elimina por completo los ataques de operadora y de red y es un gran upgrade gratuito — su única debilidad residual real es que sus códigos aún pueden caer en phishing, porque no están vinculados al sitio que los solicita. Las passkeys cierran ese último hueco vinculando la credencial al origen criptográficamente, haciéndolas resistentes al phishing por diseño, tanto en su forma ligada al dispositivo como sincronizada. Usa passkeys donde puedas, TOTP como opción por defecto fiable en todo lo demás, y SMS solo como fallback temporal que planeas abandonar.

← Volver al Blog