¿Cuáles son las implicaciones de seguridad de usar TOTP para la autenticación de un solo factor?

17

(Nota: en realidad no estoy planeando hacer esto. Esta pregunta es estrictamente teórica)

TOTP se usa comúnmente como el segundo factor en la autenticación de dos factores. Es un estándar abierto con implementaciones disponibles en múltiples lenguajes de programación y plataformas. Hay una aplicación cliente fácil de usar para iOS y Android en la forma de la aplicación Google Authenticator.

¿Hay algún problema de seguridad fundamental con el uso de TOTP como método de autenticación de un solo factor en lugar de contraseñas? Ignorar, por supuesto, que la autenticación de un solo factor debería desalentarse.

    
pregunta Ayrx 10.06.2013 - 14:21
fuente

3 respuestas

18

He pensado un poco en este tema y me gustaría presentar mis ideas. Siéntase libre de sacar sus propias conclusiones.

Facts

  1. El secreto utilizado para el algoritmo TOTP es una clave generada aleatoriamente de 80 bits codificada con base32. Probablemente sea más seguro que las contraseñas que usa la mayoría de las personas.

  2. La clave secreta generalmente se presenta en la forma de un código QR para ser escaneado por la aplicación Authenticator. Alternativamente, algunos servicios también proporcionan la clave secreta codificada en base32 para la entrada manual.

  3. En un dispositivo Android, el secreto se almacena sin cifrar en un archivo de base de datos SQLi. El archivo SQLi se encuentra en /data/data/com.google.android.apps.authenticator2/databases/databases . Sin embargo, este archivo no es accesible para ninguna otra aplicación que no sea la propia aplicación Authenticator. Obviamente, esto no se aplica a un dispositivo rooteado. No tengo un dispositivo iOS rooteado, por lo que no puedo comentar los detalles de la versión de iOS de la aplicación Google Authenticator.

Mis conclusiones

En mi opinión, hay algunos beneficios e inconvenientes para reemplazar las contraseñas con una solución de autenticación TOTP.

Benefits

  1. Suponiendo que el dispositivo Android en cuestión no está rooteado, ninguna otra aplicación, además de la aplicación Authenticator, puede acceder al secreto almacenado en la base de datos. Esto elimina un gran riesgo de que el malware se apropie del secreto utilizado para la autenticación. Cualquier keyloggers / screenloggers solo podrá tomar la contraseña temporal que caduca en 60 segundos. Esta es una ventana muy pequeña a menos que sea el foco de un ataque muy específico.

  2. El uso de TOTP elimina la posibilidad de que un atacante realice un ataque en línea de fuerza bruta contra el servicio. La ventana de oportunidad es simplemente demasiado corta.

  3. Para algunas personas, esta es una buena compensación entre seguridad y conveniencia. La mayoría de la gente que conozco lleva un teléfono inteligente alrededor de 24/7. La autenticación es una simple cuestión de acceder a la aplicación y teclear 6 dígitos. Para algunas personas, esto podría ser más fácil que tener que recordar contraseñas relativamente fuertes o llevar una base de datos de contraseñas.

Drawbacks

  1. Un compromiso de la base de datos significa tener que restablecer el secreto. Esto puede ser realmente molesto para los usuarios.

  2. Un usuario que pierde su teléfono inteligente significa perder el acceso al servicio.

Esto es muy interesante para pensar . Sin embargo, en el mundo real, obviamente, debe usar contraseñas regulares y contraseñas de un solo uso juntas para 2FA.

    
respondido por el Ayrx 20.06.2013 - 16:30
fuente
2

Cualquiera que posea la semilla puede generar la misma secuencia de tokens / contraseñas. Creo que esto es lo suficientemente inseguro como para no permitir esto como un token de inicio de sesión único.

    
respondido por el Uwe Plonus 10.06.2013 - 14:24
fuente
-1

Esto es básicamente lo que Twitter está haciendo con su sistema de autenticación de 'dígitos' enlace

La fuerza de este algoritmo es su resistencia a los ataques de fuerza bruta y la incapacidad de reconstruir el secreto a partir de los códigos mismos.

Para la mayoría de los sistemas basados en contraseñas simples, la confianza se establece al garantizar que el usuario conoce el mismo secreto que usted conoce, es decir, la contraseña. Por otro lado, con TOTP, la confianza se establece al garantizar que el usuario tiene posesión del secreto compartido. Por lo tanto, si alguien robara su teléfono, tendrían acceso al sistema sin saber ninguna otra contraseña (el código de desbloqueo podría ralentizarlos brevemente, pero no son difíciles de omitir).

Fundamentalmente, creo que la seguridad del protocolo se basa en el valor que el usuario posee del secreto. Creo que la mayoría de las personas guardan sus teléfonos de cerca, pero a menudo se pierden o se comparten con amigos y seres queridos.

    
respondido por el Paul Alexander 04.02.2015 - 06:44
fuente

Lea otras preguntas en las etiquetas