Verify

OTP vs TOTP vs HOTP: ¿cuál es la diferencia?

OTP nombra un código de verificación de un solo uso; HOTP lo genera a partir de un contador, mientras que TOTP lo genera a partir del tiempo.

Una app de autenticador puede producir un código sin recibir un mensaje. Un código de verificación enviado por texto llega a través de un canal de entrega, así que la configuración y el manejo de fallos son distintos.

¿Qué significa cada término?

OTP describe un código que se acepta una sola vez. HOTP y TOTP describen algoritmos para generar ese código.

TérminoQué proporciona el códigoQué necesita el usuario
OTPLa categoría general, independiente del método de generaciónDepende del método elegido
HOTPUn secreto compartido y un contador incrementalUn token o aplicación inscrita
TOTPUn secreto compartido y el intervalo de tiempo actualUn autenticador inscrito con un reloj funcional

RFC 4226 define el secreto compartido y el contador de HOTP. RFC 6238 usa el tiempo en lugar de ese contador para TOTP.

El autenticador y el verificador necesitan el mismo secreto para calcular códigos coincidentes. Protege ese secreto durante la inscripción y el almacenamiento, ya que poseerlo permite generar códigos.

¿Cómo cambia HOTP su código?

El token avanza un contador cuando genera un código. El verificador avanza su estado correspondiente después de aceptar el código esperado.

Un código HOTP no expira solo porque pase el tiempo. Generar códigos sin enviarlos puede adelantar el token respecto al verificador.

Proporciona la resincronización de contador que exige la especificación de HOTP. Limita la búsqueda de valores de contador posteriores, porque aceptar más candidatos aumenta la oportunidad de adivinar.

Mantén limitados los intentos de autenticación fallidos durante ese proceso. La resincronización no debe convertirse en una vía hacia intentos ilimitados.

¿Cómo cambia TOTP su código?

TOTP genera un código a partir del secreto compartido y el intervalo de tiempo actual, incluso cuando nadie solicita un código nuevo.

RFC 6238 recomienda un intervalo de 30 segundos. El código mostrado cambia cuando el reloj cruza al siguiente intervalo.

Un código ingresado cerca del final de un intervalo puede llegar al verificador durante el intervalo siguiente. Permite un retraso acotado para que la entrada normal no cause fallos innecesarios.

El RFC recomienda como máximo un paso para el retraso de red. Esa recomendación se refiere al retraso de transmisión; no es un límite universal para toda resincronización de reloj.

Mantén alineados los relojes del dispositivo y del servidor. Una ventana de aceptación amplia tolera más desfase. También acepta más códigos candidatos.

Rechaza un código ya aceptado incluso dentro de su intervalo de tiempo. El cambio posterior del reloj no garantiza por sí solo el uso único.

¿Es un código de verificación enviado por Bird un TOTP?

No. Bird Verify genera un código de verificación aleatorio y lo entrega a través del canal seleccionado.

El destinatario no inscribe un secreto de autenticador compartido para recibir ese código. Su validez sigue la expiración y la política de intentos de la verificación, no el contador ni el intervalo de reloj de un autenticador.

Elige la longitud del código, la expiración y el límite de intentos para el flujo de verificación. Mide los intervalos de entrega y finalización cuando los destinatarios reporten retrasos.

HOTP y TOTP generan códigos localmente después de la inscripción, así que no esperan un mensaje al iniciar sesión. Su recuperación, en cambio, debe contemplar la pérdida del autenticador o del secreto compartido.

¿Qué método debo elegir?

  1. Usa un código de verificación entregado cuando el flujo necesite verificar el acceso a un número o dirección alcanzable.
  2. Usa TOTP cuando los usuarios puedan inscribir y conservar un autenticador con un reloj confiable.
  3. Usa HOTP cuando el token no pueda depender del tiempo y puedas mantener la sincronización de contador.
  4. Para cualquier método, limita los intentos, aplica el uso único y define la recuperación de cuenta antes del lanzamiento.

En resumen

  1. OTP es la categoría.

    HOTP y TOTP son formas de generar códigos de un solo uso. Un servidor también puede generar y entregar un código de verificación aleatorio.

  2. HOTP sigue un contador.

    Generar códigos sin usarlos puede adelantar el dispositivo respecto al verificador. Ofrece un mecanismo acotado para resincronizarlos.

  3. TOTP sigue el reloj.

    El intervalo de tiempo recomendado es de 30 segundos. Ten en cuenta el retraso de entrada sin ampliar innecesariamente la ventana de aceptación.

  4. Elige el modelo de inscripción y recuperación.

    Los códigos de autenticador necesitan un secreto compartido previamente. Los códigos entregados necesitan un canal de entrega funcional.

Construye sobre la misma red.

Obtén una clave API de prueba de inmediato. El acceso a producción se desbloquea cuando añades un método de pago y verificas un remitente.

Empieza con un canal.
Añade los demás cuando estés listo.

Una clave API de prueba es tuya de inmediato. El acceso a producción se desbloquea cuando añades un método de pago y verificas un remitente.

¿Usas Claude Code, Cursor o Codex? Copia un prompt de configuración y tu agente instalará el Bird CLI y las habilidades por ti. Elige el tuyo:

Cursor