Todos hemos usado ese código de seis dígitos que aparece en una app, cambia cada medio minuto y sirve una sola vez. Tiene nombre: OTP, de One-Time Password (contraseña de un solo uso). Y detrás de algo tan cotidiano hay un mecanismo elegante que vale la pena entender, aunque sea por el placer de saber cómo funciona la magia que usas a diario. Este es el spoke técnico del cluster de MFA.
El problema que resuelve
Una contraseña normal es fija: la misma hoy y mañana. Eso significa que si alguien la ve una vez —por encima del hombro, en una filtración, capturada en tránsito—, la puede reusar. Un OTP le da la vuelta a eso siendo de un solo uso y efímero: cada código sirve una vez y caduca en segundos. Aunque alguien lo vea, para cuando lo intente usar, ya no vale. Es una contraseña que se autodestruye, y por eso es un segundo factor tan útil.
La pregunta interesante: ¿cómo saben app y servidor el mismo código sin hablarse?
Aquí está lo bonito. Tu app genera el código y el servidor espera exactamente el mismo, pero tu app no le "manda" nada al servidor para acordarlo, y de hecho funciona aunque tu teléfono no tenga internet. ¿Cómo? Con dos ingredientes que ambos comparten:
- Un secreto compartido. Cuando configuras la app (ese código QR que escaneas al activar la MFA), el servidor y tu app acuerdan una clave secreta común. Es lo único que se comparte, y solo una vez, al inicio.
- La hora actual. Ambos miran el reloj. Cada intervalo de 30 segundos, combinan el secreto compartido con la hora actual mediante el mismo cálculo matemático, y obtienen el mismo resultado: el código de seis dígitos.
Como los dos tienen el mismo secreto y ven la misma hora, calculan el mismo código de forma independiente, sin comunicarse. Por eso tu app no necesita internet: no está recibiendo el código de ningún lado, lo está calculando. Y como el cálculo incluye la hora, el código cambia cada 30 segundos. A esta variante, la más común, se le llama TOTP (OTP basado en tiempo).
Por qué es seguro
Tres propiedades lo hacen fuerte. El secreto nunca viaja después de la configuración inicial, así que no hay nada que interceptar en cada login. El código es de un solo uso y efímero, inútil si se captura tarde. Y del código de seis dígitos no se puede deducir el secreto (el cálculo va en un solo sentido). Su punto delicado es esa configuración inicial —el secreto— y que, como cualquier código, un usuario podría teclearlo en un sitio de phishing; por eso las llaves físicas son un paso más allá. Pero para el uso cotidiano, el OTP es un enorme salto de seguridad, elegante en su simplicidad.