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érmino | Qué proporciona el código | Qué necesita el usuario |
|---|---|---|
| OTP | La categoría general, independiente del método de generación | Depende del método elegido |
| HOTP | Un secreto compartido y un contador incremental | Un token o aplicación inscrita |
| TOTP | Un secreto compartido y el intervalo de tiempo actual | Un 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?
- Usa un código de verificación entregado cuando el flujo necesite verificar el acceso a un número o dirección alcanzable.
- Usa TOTP cuando los usuarios puedan inscribir y conservar un autenticador con un reloj confiable.
- Usa HOTP cuando el token no pueda depender del tiempo y puedas mantener la sincronización de contador.
- Para cualquier método, limita los intentos, aplica el uso único y define la recuperación de cuenta antes del lanzamiento.
En resumen
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.
HOTP sigue un contador.
Generar códigos sin usarlos puede adelantar el dispositivo respecto al verificador. Ofrece un mecanismo acotado para resincronizarlos.
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.
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.