¿Por qué los sitios no implementan un sistema donde una contraseña incorrecta causa un retraso de 3 segundos?

5

Estoy en Bitcoin en este momento, y las amenazas de contraseña me asustan un poco ...

No tanto para mí, porque uso LastPass y genero nuevas contraseñas de 20 caracteres e incluye símbolos, mayúsculas y minúsculas, así como números. Sin embargo, sé que estamos llegando a un momento en que se pueden intentar 100 mil millones de contraseñas por segundo como fuerza bruta y estaba pensando en la cantidad de personas que usan Teddy567 o qwertyqwerty para las contraseñas y creo que para hacer que Internet sea más seguro deberíamos venir con una forma de detener los ataques de fuerza bruta.

Entonces, ¿puede ayudarme a comprender por qué los sitios no pueden implementar un retraso de 3 segundos o un infierno, incluso un retraso de 1 segundo en cualquier contraseña perdida? Esto, en mi mente, terminaría totalmente con todos los ataques de fuerza bruta. Tampoco sería perceptible por los humanos

    
pregunta Campy 25.09.2014 - 17:21
fuente

3 respuestas

5

Por lo general, bloquear las cuentas como lo propone raz es algo muy malo: conduce a la carga del servicio de asistencia, molesta a los clientes y no es necesario para prevenir ataques de fuerza bruta.

Las suspensiones temporales son utilizadas por más y más sistemas, a menudo cierta demora que frena la fuerza bruta, como 5 o 30 minutos, o mediante el uso de una escala creciente, por ejemplo, duplicando el tiempo de espera en cada intento fallido de inicio de sesión.

    
respondido por el Rory Alsop 25.09.2014 - 17:36
fuente
4

Brute-forcing se usa normalmente en el contexto de un offline-attack , donde el atacante ya conoce los hashes de contraseña y puede usar todo el poder de su sistema (GPU) para encontrar una coincidencia. contraseñas.

Está hablando de ataques en línea , un retraso cada vez mayor haría que el forzoso no sea practicable, aunque no es tan fácil de implementar como parece. Un atacante podría, por ejemplo, bloquear a un usuario de un inicio de sesión exitoso. Forzar de manera brutal un sistema en línea no permite suficientes intentos de todos modos.

    
respondido por el martinstoeckli 25.09.2014 - 17:43
fuente
1

Ataques de fuerza bruta en línea

De hecho, los sitios que no implementan algún tipo de protección contra los ataques de fuerza bruta en línea están filtrando las contraseñas de sus usuarios. Muchos sitios no tienen ningún tipo de protección, y muchos otros lo tienen.

El bloqueo simple tiene problemas:

  • Si bloqueamos la IP del usuario después de x intentos fallidos, una botnet fuerte de 10'000 puede probar las contraseñas x * 10'000. Con 100 000 intentos, muchas de las contraseñas más débiles ya están descifradas.
  • Si bloqueamos la cuenta del usuario después de x intentos fallidos, cualquier atacante puede bloquear la cuenta de cualquier usuario.

Esto implica que la defensa debe ser más sofisticada, o simplemente podemos ignorar la defensa e intentar culpar al usuario cuando finalmente explote, lo que es menos ético. Los esquemas más sofisticados utilizan una combinación de detección de actividades sospechosas y requisitos de inicio de sesión condicionalmente más fuertes.

Para detectar actividades sospechosas, rastreamos signos positivos basados en inicios de sesión exitosos pasados, como los ISP del usuario y algún identificador de los dispositivos con los que el usuario inició sesión anteriormente. También podemos utilizar señales negativas, como IPs de ISP o países "contaminados", o un rápido aumento en los intentos de inicio de sesión.

En términos de requisitos de inicio de sesión más estrictos, podemos utilizar tiempos de espera cortos, captchas, autenticación multifactor e incluso listas negras.

Ataques de fuerza bruta sin conexión

Todas las medidas anteriores son inútiles una vez que nuestro administrador del sistema descontento vende una copia de nuestra base de datos de contraseñas en el mercado negro, porque entonces el atacante solo puede descifrar la contraseña y ver si coincide con la base de datos. Descifrar los hashes puede ser barato y fácil o aún fácil pero muy muy costoso, dependiendo de cómo hemosheado las contraseñas Consulte: ¿Cómo hash seguro de contraseñas?

Sal: para hacer que sea más difícil para el atacante descifrar toda la base de datos, usamos una sal, que hace que cada hash sea un poco único. Cada usuario tiene una sal diferente, que se almacena junto al hash. Esto significa que el atacante no puede simplemente calcular el hash de una contraseña y compararla con el hash de cada usuario, sino que el atacante tiene que calcular un hash nuevo para cada contraseña que intenta contra cada usuario. El uso de un salt no aumenta el costo para obtener la contraseña de un solo usuario.

Hash caro: ningún atacante puede forzar la fuerza bruta 100 mil millones de contraseñas por segundo, a menos que el esquema de hash haya sido creado por un imbécil (lo cual es plausible). Algunos atacantes pueden calcular 100 mil millones de hashes básicos como sha256 por segundo, pero la solución es simplemente no usar un hash básico para codificar la contraseña. Una solución trivial es que nuestro hash no es en realidad hash =sha256(password, salt) , sino que es hash =sha256(sha256(sha256(.......(password, salt)...)password, salt)password, salt) , donde usamos alrededor de 100,000 iteraciones de sha256, lo que hace que cualquier ataque sea 100'000 veces más caro. En realidad, esta defensa es demasiado simple para romperla con un hardware especializado, por lo que en la práctica usamos las Funciones de derivación de claves especiales tike bcrypt y scrypt para mezclar múltiples hashes básicos de formas que son costosas de calcular para cualquier atacante, independientemente del hardware.

    
respondido por el Peter 21.07.2015 - 02:03
fuente

Lea otras preguntas en las etiquetas