¿Por qué los sitios implementan el bloqueo después de tres intentos fallidos de contraseña?

101

Sé el razonamiento detrás de no permitir intentos de contraseña infinita: los intentos de fuerza bruta no son una debilidad de meatspace , sino un problema con seguridad informática, pero ¿de dónde obtuvieron el número tres?

¿No es una preocupación la denegación de servicio al implementar una política de bloqueo que se activa fácilmente?

¿Hay alguna investigación exhaustiva que muestre un número o rango óptimo para elegir antes de cerrar una cuenta que equilibre la amenaza de seguridad real con la usabilidad?

Pensándolo bien, no veo ninguna diferencia de seguridad medible entre tres intentos y 20 intentos con la complejidad de la contraseña que generalmente se usa hoy en día.

(Conozco esta subjetividad de las faldas, pero estoy buscando opiniones basadas en medidas)

    
pregunta rox0r 19.11.2010 - 01:45
fuente

13 respuestas

73

Recientemente, en la conferencia OWASP AppSec 2010 en el Condado de Orange, Bill Cheswick de AT & T habló extensamente sobre este tema.

En resumen, no hay suficiente investigación.

En mucho tiempo, aquí están algunas de sus ideas para un bloqueo de cuenta menos doloroso:

  • No cuentes los intentos de contraseña duplicada (probablemente pensaron que la escribieron mal)
  • Haga la sugerencia de contraseña sobre la contraseña principal y no tenga un secundario (débil)
  • Permitir que una parte de confianza responda por el usuario, para que pueda cambiar su contraseña.
  • Bloquea la cuenta en incrementos de tiempo crecientes
  • Recordar al usuario las reglas de contraseña.
respondido por el Zian Choy 19.11.2010 - 07:34
fuente
37

Cualquier sitio web que cumpla con Normas de seguridad de datos PCI tiene que cumplir a secciones

  • 8.5.13 (Limite los intentos de acceso repetidos bloqueando la ID de usuario después de no más de seis intentos)
  • 8.5.14 (Establezca la duración del bloqueo en treinta minutos o hasta que el administrador habilite la ID de usuario).

Lamentablemente, este es el motivo por el que muchos sitios que aceptan tarjetas de crédito tienen políticas draconianas de bloqueo, aunque sus diseñadores no estén necesariamente de acuerdo con lo que han implementado.

Editar: Tenga en cuenta que estos requisitos solo se aplican a los sistemas para "usuarios no consumidores", por lo que no deben afectar a los sitios de clientes que aceptan tarjetas.

    
respondido por el realworldcoder 19.11.2010 - 15:14
fuente
22

Mi experiencia es que los mecanismos de bloqueo están disminuyendo en popularidad (al menos para las aplicaciones web). En lugar de bloquear las cuentas después de una serie de intentos fallidos, comienza a solicitar información adicional para una autenticación exitosa.

    
respondido por el Tate Hansen 19.11.2010 - 02:59
fuente
18

No se sorprendería si se tratara de la regla del béisbol "Three strikes" en lugar de cualquier cosa técnica.

Una justificación (para las contraseñas alfanuméricas de todos modos) es

Normalmente, un intento fallido es un problema de tipo incorrecto o un problema de activación / desactivación de CAPS. Entonces intenta iniciar sesión y ser rechazado (1), inténtalo de nuevo porque crees que escribiste mal (2) y luego te das cuenta de que la clave de CAPS está activada para que puedas iniciar el tercer intento.

Realmente no es válido para desbloquear teléfonos móviles desde una red cuando normalmente se ingresa un código numérico.

Mejores sugerencias son un retraso cada vez mayor entre intentos de inicio de sesión fallidos sucesivos. Primero, permite un reintento instantáneo, luego 1 segundo, 2, cuatro, ocho ... Está esperando rápidamente un minuto entre intentos, lo que es suficiente para simular cualquier ataque de fuerza bruta.

    
respondido por el Gary 19.11.2010 - 03:32
fuente
15

Estoy de acuerdo con el OP. Si piensa en contra de qué lo protege el bloqueo, no hay diferencia entre 3 o 20 intentos (o 100, en realidad). Todo lo que logras con estos bloqueos, además de castigar a los usuarios olvidados, es evitar un ataque de fuerza bruta. También puede usarlo para desencadenar una advertencia de que un ataque está en curso, pero ese no es el propósito principal (si lo fuera, significa que está deliberadamente haciendo a sus usuarios solo para facilitar su propio trabajo de monitoreo. Eso no es un error). muy buena practica).

Si alguien tiene su base de datos de contraseñas y puede hackearla fuera de línea, tiene intentos ilimitados. Su límite de 20 conjeturas no es bueno allí.

Si alguien está intentando realizar una fuerza bruta en línea, todo lo que necesita es una contraseña que pueda soportar "el tiempo suficiente": el tiempo suficiente para que su IRT responda, o el tiempo suficiente para que el atacante se rinda.

La base de datos de contraseñas de Conficker está ligeramente por debajo de las 200 contraseñas, IIRC, y está llena de algunas de las contraseñas más tontas del planeta. Ahora supongamos que su contraseña no está en esta lista. Si permites 20 intentos de contraseña, digamos que por 15 minutos, sin bloquear, un atacante tardará más de dos horas en pasar por esa lista.

De hecho, incluso si reduce su lista de adivinanzas a las contraseñas creadas a partir de información relevante sobre ese usuario, como kidsname02, birthday99, etc., terminará con al menos algunas decenas de contraseñas, extendiendo un ataque de diccionario a tal vez una hora o mas Esa constante y errónea adivinación a lo largo del tiempo es lo que debería activar sus alarmas, no un puñado de contraseñas incorrectas en un par de minutos.

Por lo tanto, si puede mantener a sus usuarios alejados de las trampas de contraseña más básicas, puede aceptar muchos intentos de contraseña erróneos.

Personalmente, trazo la línea a los 15 puntos. Totalmente arbitrario, y sobre todo una cosa práctica: encuentro que cualquier usuario real se ha rendido mucho antes de esto. Por lo general, si hay tantos intentos, es un proceso o sesión que se cuelga en algún lugar con credenciales antiguas. Y si ese no es el caso, entonces podemos hablar de buscar ataques.

    
respondido por el itinsecurity 19.11.2010 - 10:57
fuente
11

Es una regla arbitraria tonta que conlleva el riesgo de un tipo extraño de ataque DDOS. Digamos que Marv odia el sitio web X y el sitio web X tiene una política de bloqueo de intento de número Y. Marv podría provocar un infierno serio al tener un script que intente nombres aleatorios y veces con contraseñas falsas. Incluso si una contraseña funcionara, a Marv probablemente no le importaría e ignoraría. Esto efectivamente bloquearía a muchos usuarios para el sitio web X y causaría mucha frustración al usuario, y ayúdelos si son un banco al que necesita llamar para restablecer su contraseña. Me sorprende que nadie haya probado esto.

    
respondido por el AmaDaden 19.11.2010 - 15:36
fuente
10

Creo que llego tarde a este debate, pero espero tener algo útil para agregar aquí.

La política de bloqueo de la cuenta (con el número de intentos no válidos consecutivos, generalmente en el rango de un solo dígito para la mayoría de las organizaciones) no se diseñó únicamente contra ataques automáticos de fuerza bruta.

Es más bien una protección contra la adivinación de contraseñas por parte de atacantes humanos, especialmente por personas que ya conocen una parte de la contraseña. Los atacantes podrían ganar fragmentos de contraseña por

  • surf de hombro
  • adivinando los patrones empleados por un individuo para elegir sus contraseñas. Después de todo, ¿cuántas veces se han utilizado contraseñas con elementos en una secuencia, como password # 01 , password # 02 etc.

La desventaja, por supuesto, es que con un valor de umbral bajo, es probable que haya una denegación de servicio y un costo asociado para las empresas. El Cuenta sobre las mejores prácticas White Paper emitido por Microsoft, proporciona un valor recomendado de 10. También explica cómo estimar la probabilidad de un ataque exitoso, usando los parámetros en la política de bloqueo de cuenta de Windows:

  

Como ejemplo, supongamos que   administrador restablece la contraseña cuando   la cuenta está bloqueada con   Valor de registro LockoutDuration de 0.   Con el registro LockoutDuration   valor establecido en 0 y el   Valor de registro LockoutThreshold establecido en   20, el usuario malicioso tiene 20 conjeturas.   para utilizar contra esa contraseña. Si el   duración del bloqueo es de 30 minutos, el   usuario malicioso tiene 20 conjeturas cada 30   minutos contra esa contraseña hasta que   está cambiado. Esta es una muy significativa.   diferencia en el número total de   conjeturas que están disponibles para el   usuario malicioso.

     

En comparación, si el   administrador establece el máximo   contraseña de edad de 42 días, la primera   usuario malicioso tiene solo 20 conjeturas   contra cualquier contraseña dada, mientras que la   segundo usuario malicioso tiene 40,320   Conjeturas (20 intentos para siempre bloqueo,   multiplicado por 48 cierres patronales todos los días,   multiplicado por 42 días antes del usuario   cambia la contraseña). Con el   configuración de contraseña predeterminada, hay   aproximadamente 10 ^ 12 contraseñas posibles.   Esto significa que el usuario malicioso tiene   aproximadamente un .000004 por ciento (%)   posibilidad de adivinar la contraseña. Con   un esquema de adivinación optimizado, este   porcentaje probablemente sería una   mayor porcentaje.

Por supuesto, no es fácil para un lego elegir un número adecuado, y tales decisiones deben ser consideradas cuidadosamente. Por lo tanto, podría asumirse de manera segura que algunas organizaciones no se han esforzado por calcular los efectos monetarios de su política de bloqueo de cuenta y el beneficio asociado de relajar su política al tiempo que conserva el beneficio de seguridad que ofrece.

    
respondido por el Vineet Reynolds 02.06.2011 - 16:11
fuente
8

Hay dos aspectos a esto; El primero, como mencionas, es prevenir ataques de fuerza bruta.

Para este propósito, realmente cualquier número de intentos debería hacer: 3, 5, 20, 2000 ... con una política de contraseña adecuada (longitud + complejidad + ...) que ofrezca un espacio de teclas lo suficientemente grande, cualquiera el tipo de aceleración (X número de intentos por hora) asegurará que la fuerza bruta de todo el espacio lleve varias décadas. (Haz las matematicas).

Incluso si, y esto debería ser un requisito, el bloqueo es solo temporal, y luego de un corto período de tiempo se desbloquea automáticamente.

Por lo tanto, el número de intentos antes del bloqueo es arbitrario.

Sin embargo, hay otro problema más sutil y no matemático en juego aquí:

  

Simplemente no tiene sentido que un solo usuario introduzca repetidamente una contraseña incorrecta 2000 veces seguidas.

Es decir, si elige arbitrariamente 2000, sabe mucho tiempo antes de entonces que este NO es un usuario legítimo. Por lo tanto, realmente se reduce a lo que tiene sentido para el negocio, y a un compromiso de análisis de riesgo centrado en el negocio.

Creo que, históricamente, la compensación fue más inclinada hacia el lado del riesgo, ya que las contraseñas eran más cortas y menos complejas, la diferencia de 3 o 10 era mayor. Además, las personas tenían menos contraseñas, por lo que eran más fáciles de recordar ... Y, los usuarios tenían más conocimientos técnicos en general.

Hoy en día, tres realmente no tienen sentido, considerando el impacto en el negocio. Realmente es una cuestión de qué sentido tiene para su aplicación su , qué tipos de usuarios, con qué frecuencia inician sesión, etc. Por lo general, recomiendo averiguar cuántos intentos fallidos y legítimos es probable, luego duplicarlos.

( Como se mencionó @realworldcoder , PCI eligió seis de forma arbitraria, y si está sujeto a PCI, no tiene mucha decisión aquí. De lo contrario, elige un número que tenga sentido para ti.)

    
respondido por el AviD 22.11.2010 - 12:39
fuente
7

En lo que respecta a las sugerencias de "bloqueos" de incremento de tiempo para retrasar sucesivos intentos fallidos y, por lo tanto, evitar el forzamiento brutal, recuerde que esto solo funciona en ataques de usuarios específicos.

Si el atacante solo se preocupa por ingresar al sistema, podría realizar un primer ataque de gran amplitud (Cicle todos los nombres de usuario conocidos / adivinados antes de pasar a la siguiente contraseña). Agregue que si se hizo correctamente podría provenir de una red distribuida de máquinas, es bastante fácil ver que el sistema de demora tampoco funciona.

Como lo mencionaron otros, es crítico el monitoreo correcto de los intentos fallidos para descubrir ataques tempranamente.

Sí, 3 intentos son bastante arbitrarios y representan un riesgo DoS. Realmente deseo que la gente deje de usar para sistemas públicos ... ¡Por favor!

Otra solución: 2 factores de identificación. Fichas de RSA. Si solo tuviéramos una manera de poseer personalmente un único token RSA con un 'número de identificación'. Luego podríamos registrar este 'número de identificación' en cualquier sistema, lo que requeriría el valor actual del token junto con la contraseña para iniciar sesión.

Pero eso plantea un montón de problemas para la implementación y la confianza ...

    
respondido por el Dan McGrath 19.11.2010 - 14:31
fuente
3

Las compañías que son públicas (venden acciones en bolsas de valores) están reguladas por la Ley Sarbanes-Oxley y son auditadas varias veces al año para verificar su cumplimiento. Las aplicaciones de software críticas deben cumplir con ciertas características de seguridad, una de ellas para bloquear cuentas después de intentos fallidos de contraseña.

La mayoría de estas aplicaciones lo que hacen es integrarse en el Active Directory de la empresa que ya tiene las funciones habilitadas.

    
respondido por el Jose 20.11.2010 - 01:18
fuente
3

Aquí está una lectura muy buena que repasa lo que creo que estás buscando. Tomaron datos de estudiantes universitarios que utilizan una política de tres huelgas, una política de diez huelgas y una política de huelgas infinitas para sugerir que aumentemos el número de tres a diez (ya que triplica el éxito de inicio de sesión).

Volviendo a una vista subjetiva aquí ...

¿Por qué la mayoría de los lugares utilizan una política de tres ataques? Ciertamente es solo una heurística que se desarrolló con el tiempo. Tres intentos son más o menos un término medio para los administradores y usuarios, ya que tres posibilidades son más que suficientes.

La idea detrás de una contraseña es que se supone que la conozca. Realmente no deberías necesitar más de un intento. Entiendo que se cometen errores, pero en una guerra ... realmente solo tienes una oportunidad de demostrar que eres un aliado, ¿no?

    
respondido por el user124863 20.09.2016 - 19:34
fuente
2

Deben haber elegido 3 al azar. Esto es extremadamente bajo. Tal vez hayan tenido problemas de seguridad en el pasado y hayan elegido un número de bloqueo bajo en lugar de abordar o solucionar el problema correctamente.

Prefiero el método de bloquear al usuario en incrementos de tiempo crecientes. Sin embargo, no lo borraría del nombre de usuario, sino que usaría la dirección IP de la persona, ya que la persona podría estar intentando varios nombres de usuario. Establecí el tiempo de bloqueo en (número de intentos de inicio de sesión no válidos) ^ 2 segundos, una vez que el usuario ha alcanzado 5 intentos no válidos. Si el usuario no conoce su contraseña en un número relativamente bajo de intentos, usará principalmente una herramienta de recuperación de contraseña si el sitio proporciona una. Si es un verdadero intento de pirateo, se volverá tan frustrante para el pirata informático que eventualmente se rendirán. Los bots intentarán tantas veces que casi nunca se les permitirá iniciar sesión ... por ejemplo, si intentaran 1000 contraseñas (lo cual llevaría mucho tiempo para hacerlo) tendrían que esperar 11 1/2 días antes de poder hacerlo. prueba la contraseña 1001. Podrías aumentar fácilmente la capacidad de disuasión aumentando el multiplicador a ^ 3. Cualquier cosa superior que pueda ser demasiado alta para usuarios humanos válidos.

    
respondido por el Rush Frisby 19.11.2010 - 12:49
fuente
2

No hace mucho implementé un esquema de seguridad de inicio de sesión que seguía estas reglas básicas:

  1. El primer intento fallido da una respuesta inmediata. Probablemente lo hayan gordo.
  2. Los intentos fallidos del segundo al quinto hicieron que la respuesta se retrasara un segundo por cada intento fallido. por ejemplo. 2 segundos, 3 segundos, 4 segundos ...
  3. Si el quinto intento falló, la sesión se terminó y se les mostró un mensaje que indicaba que tendrían que cerrar su navegador e intentarlo de nuevo.

Para mí esto fue más que adecuado para prevenir ataques de fuerza bruta; sería como mucho un inconveniente para los usuarios finales, y no creó ningún trabajo adicional para soporte.

    
respondido por el Josh 19.11.2010 - 14:37
fuente

Lea otras preguntas en las etiquetas