Capítulo 1 de 5 · 11 min de lectura
Qué verifica un OTP
Un código de un solo uso no prueba identidad: prueba posesión de un canal en un momento dado.
2FA en producción · 0/5 completados
- Qué verifica un OTP
- Tu primera verificación
- Estados del ciclo de vida
- Expiración y reintentos
- Métricas que importan
En este capítulo
Cuando un usuario escribe los seis dígitos que le llegaron por SMS, lo que realmente demostró es acotado: en este instante controla el canal asociado a ese número. No demostró que es la persona que abrió la cuenta, ni que nadie más ve sus mensajes, ni que el número sigue siendo suyo desde la última vez. Entender ese límite es el primer paso para diseñar verificación que no te engañe.
Posesión, no identidad
Los marcos de autenticación separan los factores en tres familias: algo que sabes (contraseña), algo que tienes (dispositivo, línea telefónica) y algo que eres (biometría). Un OTP enviado a un teléfono pertenece a la segunda familia. Su valor aparece cuando se combina con otro factor, o cuando el número ya fue vinculado a la persona por un proceso más fuerte, como una validación de RUT o un enrolamiento presencial.
La guía NIST SP 800-63B clasifica al OTP por red telefónica como autenticador restringido: aceptable, pero con riesgos conocidos —portabilidad fraudulenta, SIM swap, interceptación en la red de señalización— que obligan a ofrecer alternativas y a monitorear. En LATAM, donde el SMS sigue siendo el canal con mayor alcance, la respuesta no es abandonarlo, sino rodearlo de controles.
Un caso típico en Chile: un cliente porta su número de Movistar a WOM un viernes por la tarde. Si tu sistema sigue confiando en que ese número identifica al mismo titular sin revalidar nada, un atacante que ejecuta portabilidad fraudulenta hereda, además de la línea, todas las sesiones que dependían de ella. El OTP solo confirma quién tiene el chip hoy, no quién lo tuvo ayer.
Por eso conviene combinar el OTP con una segunda señal cuando la acción es sensible: un correo de confirmación adicional, una pregunta sobre el historial de la cuenta, o simplemente una ventana de espera de 24 horas antes de habilitar transferencias grandes tras un cambio de número. El código por sí solo es rápido y barato, pero su garantía es la de un candado de bicicleta: disuade, no detiene a quien se lo propone en serio.
Qué debe cumplir un buen código
- Imprevisible: generado con un CSPRNG, nunca con
Math.random()ni derivado del timestamp. - De un solo uso: se invalida al primer acierto, aunque no haya expirado.
- Atado a un contexto: el código vale para ese teléfono, esa acción y esa sesión; no para otra.
- De vida corta: entre 3 y 10 minutos según el canal y el riesgo de la acción.
- Con intentos limitados: seis dígitos son un millón de combinaciones, no infinitas.
Dónde encaja en tu producto
Los usos más comunes son tres: confirmar un número en el registro, actuar como segundo factor en el login y aprobar una acción sensible (transferencia, cambio de correo, nueva dirección de despacho). Cada uno tolera fricción distinta. En el registro, el usuario espera el código; en un checkout de CyberDay con miles de compras por minuto, cada segundo extra cuesta conversión. Por eso en esta serie vas a ver el mismo mecanismo configurado de tres maneras.