Estás en una videollamada compartiendo pantalla, o alguien está mirando por encima de tu hombro, y tienes que meter el código de seis dígitos de la app del móvil. Y te asalta la duda: ¿acabo de enseñar algo que permita a esa persona generar mis códigos futuros?
La respuesta corta es no, y no es una cuestión de suerte: es matemáticamente inviable. Ver un código —o cien— no permite deducir el siguiente. Vamos a ver exactamente por qué.
Pero esa tranquilidad tiene dos peros importantes, y son justo los que casi nadie tiene claros:
- Ese código concreto vale durante unos segundos, y en esa ventana sí es peligroso si la persona ya tiene tu contraseña. De hecho es la base de una estafa telefónica muy común.
- Hay algo que sí puede hundirte del todo si aparece en una pantalla compartida, y no es el código: es el código QR de configuración. Quien lo fotografíe genera tus códigos para siempre y tú no te enteras nunca.
En esta guía vas a ver cómo se fabrica ese número de seis dígitos (que funciona sin internet, y hay una forma sencilla de comprobarlo), por qué observar códigos no sirve para predecirlos, qué sí pueden hacer con uno que acaban de ver, y contra qué no te protege una app de códigos por muy bien que la uses.
Cómo se fabrica ese número de seis dígitos
Lo primero que sorprende a casi todo el mundo: tu app no recibe los códigos de ningún sitio. Los calcula ella sola, en el móvil, sin conexión. El servidor hace exactamente la misma cuenta por su lado, y por eso coinciden.
Para ese cálculo solo hacen falta dos ingredientes:
- Un secreto compartido, una cadena larga de letras y números que se genera una sola vez, cuando activas la verificación en dos pasos. Es lo que esconde el código QR que escaneas. Se queda guardado en dos sitios: el servidor y tu app. En ningún momento vuelve a viajar.
- La hora, que no es un secreto para nadie.
El sistema parte el tiempo en bloques de 30 segundos y, para cada bloque, mezcla el secreto con el número de bloque actual mediante una función criptográfica llamada HMAC. De ese revoltijo se recortan seis dígitos. Cambia el bloque, cambia el revoltijo, cambia el código.
Este mecanismo tiene nombre y está publicado en un estándar abierto, el TOTP (Time-based One-Time Password, RFC 6238). No es propiedad de nadie: por eso puedes guardar la misma cuenta en Google Authenticator, Aegis, 2FAS, Ente Auth o Bitwarden y las cinco apps enseñan el mismo número al mismo tiempo.
La prueba de que no hay internet de por medio
Es un experimento de diez segundos que deja el concepto claro para siempre: pon el móvil en modo avión y abre la app. Los códigos siguen cambiando cada 30 segundos, con normalidad. No hay nada que descargar porque no hay nada que descargar: el número sale de una cuenta local.
De ahí salen dos consecuencias prácticas que conviene entender:
- Si la hora de tu móvil se desajusta, los códigos dejan de funcionar. Es la causa número uno de “mi app ha dejado de servir”: el teléfono va desfasado varios minutos y calcula el bloque de tiempo equivocado. La solución es activar la hora automática de red (algunas apps traen su propia sincronización horaria interna).
- El secreto es la joya, no el código. El código de seis dígitos es un producto desechable que caduca solo. El secreto es la fábrica. Toda la seguridad del sistema consiste en que ese secreto no salga de tu móvil — y volveremos sobre esto, porque es la parte que se filtra en las videollamadas.
¿Pueden deducir tus códigos futuros si ven uno? No, y esta es la razón
Esta es la pregunta que trae a mucha gente hasta aquí, así que vamos con ella de frente.
Para predecir tus códigos futuros habría que conocer el secreto. Y el atacante que ha visto un código en tu pantalla tiene solo eso: seis dígitos y la hora a la que aparecieron. La pregunta real, entonces, es si se puede ir marcha atrás — del código al secreto.
No se puede, por dos motivos que se refuerzan:
1. La función va en un solo sentido
El HMAC del capítulo anterior pertenece a la familia de funciones de un solo sentido: calcular hacia delante es trivial e instantáneo, pero no existe una operación inversa. No hay una fórmula que, dado el resultado, te devuelva la entrada. Es la misma propiedad que hace que una web pueda comprobar tu contraseña sin guardarla en claro.
Así que la única vía es adivinar el secreto y comprobar si produce el código que se vio. Es decir: fuerza bruta.
2. El espacio de búsqueda es absurdo
Y aquí es donde los números se vuelven ridículos. El estándar recomienda secretos de 160 bits. Eso son unas 2¹⁶⁰ combinaciones posibles: un 1 seguido de 48 ceros, aproximadamente. Para que se entienda la escala, es un número mucho mayor que la cantidad de granos de arena de la Tierra; ni siquiera se acerca a lo que puede probar todo el cómputo del planeta junto durante la edad del universo.
Alguien podría pensar: «ya, pero si ven muchos códigos, se van acumulando pistas». Es un razonamiento sensato y aun así no ayuda. Cada código de 6 dígitos aporta unos 20 bits de información sobre el secreto. Ver diez códigos aporta unos 200 bits de restricciones… pero no hay forma de usarlos para acortar la búsqueda: no existe atajo conocido, y el propio estándar reconoce que el mejor ataque conocido contra este algoritmo es la fuerza bruta. Sigues teniendo que probar los secretos uno a uno.
Conclusión sin letra pequeña: que alguien vea tu código —en una videollamada, en una foto, mirando por encima del hombro— no le da absolutamente ninguna capacidad de generar los siguientes. Puedes seguir usando la misma cuenta y la misma app sin cambiar nada.
Y no, tampoco hace falta “regenerar” el 2FA por haber enseñado un código. Solo hay un caso en el que sí hay que rehacerlo entero, y es el del capítulo siguiente.
La única excepción teórica: secretos mal generados
Por rigor: todo lo anterior asume que el servicio generó el secreto con un buen generador aleatorio y de la longitud recomendada. Un servicio chapucero que usara un secreto ridículamente corto o predecible sí sería atacable — pero eso ya no es un problema de que te vean el código, es un problema de que ese servicio hace mal su trabajo, y afectaría a tu cuenta igual aunque nunca enseñaras nada.
Lo que sí pueden hacer: la ventana de un minuto
Que no puedan predecir los futuros no significa que enseñar un código sea inofensivo. El riesgo existe, pero es de otra naturaleza: no es criptográfico, es de reloj.
Ese código es válido durante su bloque de 30 segundos y, por el margen que dan casi todos los servidores, a menudo hasta minuto y medio. Durante ese rato es una llave que funciona. Y aquí está el matiz que lo decide todo:
Un código robado no sirve de nada por sí solo. El segundo factor es segundo: hace falta tu contraseña también. El peligro aparece únicamente si quien ve el código ya tiene tu contraseña — y entonces es un peligro inmediato y real.
La estafa que explota exactamente esto
Es, con diferencia, la forma más común de que a alguien le vacíen una cuenta pese a tener 2FA, y funciona así:
- El atacante ya tiene tu usuario y contraseña, normalmente de una filtración de otra web donde reutilizabas la misma.
- Te llama haciéndose pasar por tu banco, por soporte técnico, por la plataforma de turno. El tono es de urgencia: un cargo sospechoso, un acceso raro, una cuenta que van a bloquear.
- Mientras habla contigo, está metiendo tu usuario y contraseña en la web real. El servicio, lógicamente, pide el segundo factor.
- Entonces te dice la frase clave: «te va a llegar un código / mira el código de tu app y me lo confirmas para verificar tu identidad».
- Se lo dices. Él lo teclea en la web de verdad. Está dentro.
Fíjate en que la víctima no ha sido hackeada en ningún sentido técnico: ha leído seis dígitos en voz alta. Por eso este capítulo importa más que toda la criptografía de antes.
La regla que anula esta estafa entera, y no admite excepciones: ninguna empresa legítima —ningún banco, ninguna plataforma, ningún «soporte»— te va a pedir jamás el código de tu app. Ese código es para que tú lo escribas en su web, nunca para que se lo dictes a nadie por teléfono, chat, correo o videollamada.
Si alguien te lo pide, la conversación se ha terminado: es una estafa, sin más análisis. Cuelga y, si te ha quedado la duda, llama tú al número oficial de la entidad.
¿Y si simplemente lo vieron de refilón?
El caso normal —una videollamada de trabajo, un compañero al lado— es mucho menos dramático. Para que hubiera problema, esa persona tendría que tener ya tu contraseña y actuar en el minuto siguiente. Si es un contexto de confianza, no ha pasado nada y no tienes que hacer nada.
Aun así, la higiene barata: tapa o mueve la ventana al teclear el código, y si compartes pantalla, comparte una ventana concreta y no el escritorio entero — que además te ahorra enseñar notificaciones y pestañas que no venían a cuento.
Lo que no debes enseñar jamás: el QR de configuración
Si de este artículo te llevas una sola cosa, que sea esta.
Todo el mundo se preocupa por el código de seis dígitos, que es el desecho del sistema. Casi nadie se preocupa por la pantalla donde de verdad está el secreto: la de activación, esa que sale una única vez, con un código QR y —debajo, en pequeño— una clave larga de letras y números para meterla a mano.
Ese QR es el secreto. Literalmente: es la cadena que hace de semilla, envuelta en cuadraditos.
| Qué ha visto | ¿Puede predecir códigos futuros? | ¿Riesgo inmediato? | Qué tienes que hacer |
| El código de 6 dígitos | No: es matemáticamente inviable | Solo si ya tiene tu contraseña, y solo durante ~1 minuto | Nada. No hace falta rehacer el 2FA |
| Varios códigos a lo largo del tiempo | No: no hay atajo, siguen sin poder invertir la función | Igual que el anterior | Nada |
| El QR de configuración | SÍ: es el secreto entero | Permanente y silencioso | Desactivar y reactivar el 2FA desde cero |
| La clave larga de letras y números | SÍ: es el mismo secreto en texto | Permanente y silencioso | Desactivar y reactivar el 2FA desde cero |
| Tus códigos de respaldo | No genera códigos, pero cada uno vale para entrar una vez | Sí | Regenerar los códigos de respaldo |
Por qué es tanto peor que ver un código
Tres razones, y las tres son graves:
- No caduca. El código dura un minuto; el secreto vale mientras no rehagas la configuración, o sea, potencialmente años.
- Es silencioso. Quien lo copia añade tu cuenta a su app y a partir de ahí genera exactamente tus mismos códigos, a la vez que tú. No hay ninguna señal: no te llega ningún aviso, no aparece ninguna sesión rara, tu app sigue funcionando igual. Es indetectable desde tu lado.
- Convierte tu segundo factor en el suyo. Con tu contraseña más ese secreto, tu 2FA deja de protegerte: puede entrar cuando quiera, tantas veces como quiera.
Cuándo se filtra esto en la vida real
No es un escenario rebuscado. Pasa así:
- Compartiendo pantalla mientras configuras el 2FA — el caso clásico: alguien de soporte te está guiando y tú vas enseñando lo que ves.
- Pidiendo ayuda con una foto: «no me deja, ¿ves algo raro?», y en la foto sale el QR.
- Guardando el pantallazo del QR en la galería del móvil, que a su vez está sincronizada con la nube. Si esa nube cae, cae el secreto.
- En un tutorial o un directo donde alguien enseña “cómo activar la verificación en dos pasos” con su cuenta real.
Si sospechas que alguien ha podido ver tu QR o tu clave de configuración, la reparación es esta y no admite atajos: entra en la cuenta afectada, desactiva la verificación en dos pasos y vuelve a activarla desde cero. Eso genera un secreto nuevo y el antiguo deja de valer al instante, esté donde esté. Aprovecha para regenerar también los códigos de respaldo, que son el otro juego de llaves. Y cambia la contraseña si tienes cualquier duda sobre ella.
Cambiar solo la contraseña no arregla nada aquí: el secreto viejo seguiría generando códigos válidos.
Contra qué NO te protege una app de códigos
Una app de códigos es una mejora enorme frente a no tener nada, y bastante mejor que los SMS —que sufren el fraude del duplicado de SIM—. Pero conviene saber dónde está su techo, porque se vende como una defensa más completa de lo que es.
El phishing moderno se la salta entera
Este es el límite serio, y no es teórico: es hoy la forma habitual de vaciar cuentas que tienen 2FA.
Funciona así: caes en un enlace y llegas a una web que es una copia perfecta porque, en realidad, es un intermediario que va retransmitiendo en directo lo que pasa entre tú y la web auténtica. Metes tu usuario: se lo pasa a la web real. La web real pide el código: la copia te lo pide a ti. Tú lo escribes, él lo reenvía al instante. Y cuando el servicio da por buena la sesión, el atacante se queda con la cookie de sesión, que es el pase que te mantiene dentro sin volver a autenticarte.
Resultado: tu código era correcto y reciente, tú hiciste todo “bien”, y aun así están dentro. Peor: como se llevan la sesión ya iniciada, cambiar la contraseña después no siempre los echa — hay que cerrar todas las sesiones activas.
Esto no es artesanal: existe un mercado de kits que hacen esto por unos 100 a 1.000 dólares al mes, con campañas que alcanzan a cientos de miles de organizaciones. Y afecta igual a los códigos TOTP, a los SMS y a las notificaciones push de aprobar/rechazar.
Lo que sí lo detiene: las passkeys y las llaves físicas
La razón por la que las passkeys y las llaves de seguridad FIDO2 sí resisten este ataque es elegante: la llave comprueba criptográficamente el dominio de la web antes de responder. En una web intermediaria el dominio no coincide, así que se niega a firmar. No depende de que tú detectes el engaño — es la propia llave la que no pica.
Si te interesa el salto, lo contamos en passkeys, el futuro de la autenticación sin contraseñas. Y el terreno donde nace todo esto, en qué es el phishing y cómo evitarlo.
Los otros dos límites
- Malware en tu móvil. Si un programa malicioso tiene acceso a tu teléfono, puede leer los códigos según aparecen o robar el almacén de la app. La app no puede protegerte de un dispositivo comprometido.
- La recuperación de cuenta. De poco sirve un 2FA fuerte si el servicio te deja recuperar la cuenta contestando “el nombre de tu primera mascota” o mandando un enlace al correo. La seguridad real es la del eslabón más débil, y muchas veces ese eslabón es el formulario de “he perdido el acceso”.
El riesgo que más gente sufre: perder el móvil
Dejando aparte a los atacantes, el desastre más frecuente con las apps de códigos no lo provoca nadie: te lo provocas tú al cambiar de teléfono o al perderlo. Como el secreto vive en el móvil, un móvil perdido sin preparación es un juego de cuentas al que ya no puedes entrar.
Los códigos de respaldo, que casi nadie guarda
Cuando activas el 2FA, el servicio te ofrece entre 8 y 10 códigos de un solo uso. Son tu salida de emergencia y la única que funciona con el móvil perdido y sin copia.
Guárdalos fuera del móvil: impresos en un cajón, en una nota del gestor de contraseñas, en un papel en la cartera. Lo que no vale es un pantallazo en la galería del propio teléfono que puedes perder, que es exactamente lo que hace todo el mundo.
Copia de seguridad: la decisión que hay que tomar con los ojos abiertos
Las apps modernas ofrecen sincronizar los secretos en la nube. Es cómodo y evita el drama del cambio de móvil, pero significa poner tus secretos en un servidor de alguien. La pregunta que decide es una: ¿van cifrados de extremo a extremo?
Es decir: ¿se cifran en tu dispositivo con una clave que solo tienes tú —de modo que el proveedor no puede leerlos aunque quiera—, o simplemente viajan por un canal seguro pero descifrables en el servidor?
El caso más comentado fue el de Google Authenticator: cuando estrenó la sincronización en la nube en 2023 lo hizo sin cifrado de extremo a extremo, y los investigadores se le echaron encima con razón. Google prometió añadirlo y ha ido desplegándolo después. La lección no es “esta app es mala”, sino que hay que mirar esta casilla concreta en la que uses.
| App | Copia en la nube | Exportar tus cuentas | Notas |
| Google Authenticator | Sí, ligada a tu cuenta de Google. Estrenó sin cifrado de extremo a extremo (2023) y se añadió después | Sí | La más extendida; comprueba que tienes la versión con cifrado extremo a extremo |
| Aegis (Android) | No: copia local que exportas tú, cifrada | Sí | Código abierto. Control total a cambio de gestionarlo tú |
| 2FAS | Opcional, en tu propio iCloud o Google Drive | Sí | Código abierto y sencilla |
| Ente Auth | Sí, cifrada de extremo a extremo | Sí | Código abierto y multiplataforma |
| Microsoft Authenticator | Sí, ligada a tu cuenta Microsoft | Limitada | Cómoda si vives en el ecosistema Microsoft |
| Gestor de contraseñas (Bitwarden/1Password) | Sí, con el cifrado del propio gestor | Sí | Muy cómodo, pero mete los dos factores en la misma caja |
¿En el mismo gestor de contraseñas o aparte?
Los gestores de contraseñas modernos guardan también los códigos TOTP, y ahí hay un debate legítimo.
A favor de juntarlo: es tan cómodo que hace que la gente active el 2FA en muchos más sitios, y una cuenta con 2FA cómodo protege más que un 2FA perfecto que nunca activas. La comodidad no es un capricho: es lo que determina si el sistema se usa.
En contra: metes los dos factores en la misma caja. Si esa caja cae, caen los dos a la vez y el “dos” del dos factores desaparece.
Mi criterio, y es una opinión razonada, no un dogma: para el grueso de tus cuentas, júntalo — el beneficio de que estén todas protegidas supera al riesgo. Para el correo principal y el banco, sepáralo: app distinta, o mejor aún, passkey o llave física. Son las cuentas desde las que se puede reconstruir todo lo demás.









