¿Por qué no se ha convertido en la norma para inhibir las repeticiones de contraseña repetidas?

42

Todos están conscientes de la convención / necesidad de contraseñas seguras. Con el número de diferentes tipos de pistas que las personas pueden usar en sus contraseñas, además de las diversas permutaciones de mayúsculas y de sustitución de letras de dígitos, un pirata informático tendría que hacer muchos intentos en promedio, para obtener la contraseña correcta.

Este enlace: Ralentizar los ataques de contraseña repetidos discute algunos esfuerzos para desalentar todas esas conjeturas, aunque no es la misma pregunta que tengo: ¿por qué no se ha convertido en la norma interferir con las conjeturas repetidas? Un tiempo de espera cada vez mayor después de cada suposición errónea es una forma, y otras han sido discutidas.

He visto muy pocos intentos de inhibir tales adivinanzas en sistemas Linux o cualquier autenticación basada en web. Me quedé bloqueado de un sistema cuando lo hice mal 3 veces.

La gente de TI impone más y más restricciones, como el recuento de caracteres, letras, dígitos, mayúsculas y la exclusión del nombre de usuario de la contraseña. Pero eso simplemente aumenta el número de intentos necesarios en una situación donde el número no está realmente restringido.

    
pregunta donjuedo 31.01.2017 - 23:02
fuente

6 respuestas

114

Me gustaría cuestionar su suposición de que esto no se está haciendo .

[advertencia: aproximaciones salvajes a seguir]

Recuerde que un ataque de fuerza bruta exitoso requerirá millones o miles de millones de conjeturas por segundo para hacer el crack en un tiempo razonable (por ejemplo, de un par de horas a un mes, dependiendo de la fortaleza de su contraseña). Incluso un límite de velocidad de 100 intentos de contraseña por segundo aumentaría el tiempo de crack de un mes a cientos de miles de años. Tal vez mis estándares sean bajos, pero eso es lo suficientemente bueno para mí, y ningún usuario humano que intente ingresar a su cuenta legítimamente lo notará. Aún mejor si el límite de velocidad fue por IP en lugar de por nombre de usuario solo para evitar algunos tipos de ataques de Denegación de Servicio.

Además, no sé qué distribución de Linux está utilizando, pero en mis sistemas Ubuntu y CentOS, cuando escribo mal mi contraseña en la GUI o en las pantallas de inicio de sesión del terminal, se bloquea durante 1 segundo antes de volver a preguntarme .

Incluso si el servidor no está activamente limitando los intentos de inicio de sesión (lo que realmente deberían ser), solo el tiempo de ping por sí solo es suficiente para reducir la velocidad a millones de años. Probablemente DDOS sea el servidor antes de llegar a casi mil millones de conjeturas por segundo. El dinero real está en obtener una copia de la base de datos de contraseñas con hash y enviarla a una plataforma de GPU donde son posibles miles de millones de conjeturas por segundo.

TL; DR: si va a esforzarse en fortalecer su servidor de inicio de sesión, obtendrá más por su dinero al mejorar el hashing de su contraseña y hacer que su base de datos sea más difícil de robar que implementando una limitación de velocidad en su pantalla de inicio de sesión.

ACTUALIZACIÓN : como esto se hizo viral, extraeré algo de los comentarios:

Esta lógica solo se aplica a los servidores de inicio de sesión. Para los dispositivos físicos como teléfonos o computadoras portátiles, un tipo de "3 intentos y se bloquea" o "10 intentos y las toallitas del dispositivo" aún tiene sentido porque alguien podría navegar al mismo tiempo mientras escribe su contraseña o ver el patrón de borroneado. en su pantalla, o sepa que un PIN de 4 dígitos solo tiene 10,000 combinaciones de todos modos, por lo que el número de conjeturas que necesitan hacer es muy muy mucho más pequeño.

    
respondido por el Mike Ounsworth 31.01.2017 - 23:08
fuente
59

Hay un problema importante con el bloqueo de personas tras repetidos intentos no válidos: en realidad se convierte en un vector de ataque para un tipo de ataque de denegación de servicio. Piense en lo que podría suceder en una mesa de soporte o en un sitio de servicio al cliente si un par de cientos de miles de cuentas terminan bloqueadas de manera consistente por alguien que intenta interrumpir un servicio.

Incluso hay un sitio web que uso que me envía un correo físico cada vez que cambio mi contraseña, alguien particularmente desagradable podría crear problemas si encuentra una lista de cuentas y las suspende repetidamente.

Definitivamente, se debe hacer un juicio entre la seguridad y la facilidad de uso, y personalmente no creo que haya una respuesta fija o sencilla.

    
respondido por el Ken Whitesell 01.02.2017 - 01:22
fuente
5

La complejidad suficiente hace que sea tecnológicamente poco práctico para la fuerza bruta, reducirla no haría mucho más.

"Pero eso simplemente aumenta el número de intentos necesarios" es una forma extraña si se dicen miles de millones de años más.

    
respondido por el Slava Knyazev 31.01.2017 - 23:08
fuente
4

Usted asume que las contraseñas solo se pueden verificar utilizando el inicio de sesión. Pero muy a menudo hay una fuga de datos / hackeo que permite a alguien obtener las tablas hash de la contraseña. Si los tiene, puede hacer fuerza bruta para los hashes, que es varias veces más rápido que con el inicio de sesión. Y ahí es donde realmente necesitas buenas contraseñas.

    
respondido por el Kami Kaze 02.02.2017 - 10:48
fuente
2

Un concepto muy importante que no veo mencionado en las otras respuestas hasta ahora es la diferenciación entre la fuerza bruta fuera de línea y en línea.

En la fuerza bruta sin conexión, el atacante tiene acceso a las contraseñas de hash y aquí la defensa principal está usando un algoritmo de hashing de contraseña adecuado (por ejemplo, bcrypt). los puntos relacionados con algoritmos de hash, cracking de GPU, etc., solo se relacionan con la fuerza bruta sin conexión

Supongo que esta pregunta relacionada con la fuerza bruta en línea donde el atacante está intentando iniciar sesión en el sistema probablemente sea remota.

Con los inicios de sesión remotos para servicios como SSH, como se ha mencionado, la detección remota de contraseñas generalmente se inhibe a través de fail2ban o similar.

Donde no es común es en aplicaciones web (lo sé porque les doy a los propietarios de las aplicaciones web resultados por la falta de esta característica con bastante frecuencia).

En algunos sistemas se configura un bloqueo directo, pero esto conlleva el riesgo de una denegación de servicio por parte de los atacantes, y también algunos inconvenientes para el usuario según el mecanismo para reactivar las cuentas.

Una mejor solución es forzar un retraso cada vez mayor en los intentos de inicio de sesión para hacer que el ataque sea menos factible, sin embargo, es importante tener en cuenta que en algunos casos, un atacante puede querer comprometer una cuenta (y realmente no importa quién sea la cuenta que recibe). en cuyo caso solo pueden intentar un pequeño número de contraseñas comunes en la base de usuarios, con la expectativa de que alguien las haya utilizado.

    
respondido por el Rоry McCune 02.02.2017 - 14:48
fuente
1

La forma fácil de ver esto es con otra pregunta. ¿Por qué el SHA-1 / MD5 todavía está en uso cuando hay fallas / problemas conocidos con él?

En pocas palabras, la evaluación de riesgos de la persona / corporación considera que esos problemas no son de mayor preocupación. Al igual que en el caso de los tiempos de espera de rodadura.

Cuando hice alguna administración para una escuela local, era bastante común que los maestros "adivinaran" sus propias contraseñas. Forzar a los maestros a esperar fue mucho más inconveniente, simplemente bloquear una cuenta después de 4 o 5 contraseñas incorrectas y hacer que me llamen para desbloquearla.

Los tiempos de espera de rodar también son un gran dolor al tratar. Para un sistema local, esto podría no ser un problema, pero tome el ejemplo de mi escuela (tal como se mencionó anteriormente), o una gran empresa con más de 1,000 empleados. Ya no se puede trabajar porque alguien está sentado ante un mensaje de contraseña, esperando la oportunidad de ingresar la contraseña correcta. Tal vez alguien pensó que sería gracioso que alguien se sentara en un aviso durante unas horas, o que un atacante quisiera ralentizar la producción. Tenga en cuenta que debe haber una manera de administrar cuánto tiempo duran los tiempos de espera, cuánto aumentan y una manera de restablecerlos.

Yo diría que un sistema de bloqueo, como el permitido por Windows, es en realidad más seguro. Requiere intervención administrativa, y puede ser mucho más rápido de deshacer (más el tiempo necesario para mirar los registros). En un sistema basado en la web, un tiempo de espera de activación podría ser más beneficioso, pero como ya hemos visto, los hashes de contraseñas se filtrarán y los tiempos de espera de activación no servirán de nada.

    
respondido por el dark_st3alth 31.01.2017 - 23:20
fuente

Lea otras preguntas en las etiquetas