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:
- Autenticación mediante una llamada telefónica (Google y algunos bancos ...)
- SMS a mi teléfono (Facebook & Google ...)
- Verificar una cuenta a través de la dirección de correo electrónico verificada
- 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:
-
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.
-
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?