¿Qué es más seguro para voz y SMS OTP: un número aleatorio o generado similar a HOTP?

3

Muchos proveedores están creando la autenticación OTP para su inicio de sesión. Sin embargo, me di cuenta de que todas las OTP de voz y SMS que he encontrado son una serie de 6 dígitos ... similar al estándar HOTP RFC emitido por Google Authenticator.

Veo estos OTP de seis dígitos cuando:

  1. Autenticación mediante una llamada telefónica (Google y algunos bancos ...)
  2. SMS a mi teléfono (Facebook & Google ...)
  3. Verificar una cuenta a través de la dirección de correo electrónico verificada
  4. Verificación de la dirección de mi casa (Google Business, autenticación fuerte del IRS)

... es decir, cualquier OTP que no use un token o dispositivo inteligente de OTP (YubiKey, Google Authenticator, Gemalto, etc.)

Pregunta

  

Con respecto a la protección del IdP que emite la OTP, ¿cuáles son los beneficios e inconvenientes de usar un número aleatorio frente a una semilla como HOTP?

A continuación se muestra cómo se podrían desarrollar algunos escenarios si la contraseña de un solo uso se almacena en una base de datos. Un escenario se basa en semillas de estilo HOTP, el otro escenario se basa en números aleatorios:

  1. Si la base de datos de contraseñas (con sal) es robada / extraída, es probable que la semilla HOTP se almacene en esa misma ubicación. La seguridad del centro de datos en este escenario se basa exclusivamente en la protección de la base de datos & Semilla HOTP.

    El atacante tendría la semilla HOTP hasta que esa semilla se reinicie, lo que probablemente nunca.

  2. A la inversa, si el número se genera a partir de random () y se escribe en la base de datos, entonces no hay ningún compromiso que comprometer. La única forma de explotarlo es si el atacante tuviera acceso de lectura en tiempo real a la base de datos.

  

A partir de ese resumen rápido, parece que la OTP generada (como HOTP) no debe usarse en estos escenarios (voz y SMS).

     

¿Es esta una conclusión correcta?

    
pregunta random65537 22.02.2013 - 16:20
fuente

1 respuesta

3

El punto complicado es la sincronización previa al uso. Cuando quiera usar una contraseña de un solo uso, el cliente debe "de alguna manera" aprender la contraseña de un solo uso. HOTP es para situaciones donde esta sincronización fuera de banda se realiza a través de un counter que se mantiene tanto del lado del cliente como del lado del servidor.

Si tiene otro mecanismo fuera de banda que puede invocarse por conexión (por ejemplo, un SMS), no necesita la administración de contadores que brinda HOTP. HOTP es también un buen PRNG , pero es más sencillo generar contraseñas aleatorias de una sola vez de las instalaciones del sistema operativo ( /dev/urandom y su ilk). Como señala, HOTP es similar a un PRNG con una clave secreta, y el robo de claves implica un compromiso. Con una nueva contraseña aleatoria para cada conexión, un atacante que puede echar un vistazo a la base de datos del servidor puede aprender la OTP actual para un determinado usuario, pero no sabrá nada sobre la próxima OTP, por lo que el daño está contenido a tiempo.

El uso de HOTP (o su variante basada en el tiempo TOTP ) en el escenario basado en SMS no es muy débil. Este es un buen modelo que admite tokens de usuario. HOTP es el uso sano de la criptografía. Pero si tiene un canal fuera de banda disponible para la transmisión casi inmediata de la OTP (como un SMS), puede usar la generación aleatoria que será aún mejor.

    
respondido por el Thomas Pornin 22.02.2013 - 16:50
fuente

Lea otras preguntas en las etiquetas