it-swarm-es.com

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

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

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

¿Existe alguna investigación exhaustiva que muestre un número o rango óptimo para elegir antes de bloquear 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 en la actualidad.

(Sé que esto evita la subjetividad, pero estoy buscando opiniones basadas en mediciones)

107
Bradley Kreider

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 resumen, estas son algunas de sus ideas para el bloqueo de cuentas menos doloroso:

  • No cuente los intentos de contraseña duplicada (probablemente pensaron que la escribieron mal)
  • Indique la contraseña sobre la contraseña principal y no tenga una secundaria (débil)
  • Permita que una parte de confianza responda por el usuario, para que pueda cambiar su contraseña.
  • Bloquee la cuenta en incrementos de tiempo crecientes
  • Recordar al usuario las reglas de contraseña.
75
Zian Choy

Cualquier sitio web que cumpla con Normas de seguridad de datos PCI debe cumplir con las secciones

  • 8.5.13 (Limite los intentos de acceso repetido 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).

Desafortunadamente, esta es la razón por la cual muchos sitios que aceptan tarjetas de crédito tienen políticas de bloqueo draconianas, aunque sus diseñadores no necesariamente estén 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 deberían afectar a los sitios de los clientes que aceptan tarjetas.

37
realworldcoder

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

22
Tate Hansen

No se sorprendería si viniera de la regla de béisbol "Tres golpes" en lugar de algo técnico.

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

Por lo general, un intento fallido es un problema de tipo incorrecto o de activación/desactivación de CAPS. Por lo tanto, intenta iniciar sesión y ser rechazado (1), vuelve a intentarlo porque crees que escribiste mal (2) y luego te das cuenta de que la tecla MAYÚS está activada para que entres en el tercer intento.

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

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

18
Gary

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

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

Si alguien intenta una fuerza bruta en línea, todo lo que necesita es una contraseña que pueda resistir "el tiempo suficiente": el tiempo suficiente para que su IRT responda, o el tiempo suficiente para que su atacante se dé por vencido.

La base de datos de contraseñas de Conficker está ligeramente por debajo de 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 permite 20 intentos de contraseña, digamos por 15 minutos, sin bloqueo, al atacante le tomará más de dos horas completar esa lista.

De hecho, incluso si reduce su lista de adivinanzas a contraseñas hechas de información relevante sobre ese usuario, como kidsname02, birthday99, etc., terminará con al menos unas pocas decenas de contraseñas, extendiendo un ataque de diccionario a tal vez una hora o más. Esa constante y errónea suposició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 los errores de contraseña más básicos, puede aceptar muchos intentos de contraseña erróneos.

Personalmente, trazo la línea en 15. Totalmente arbitrario, y sobre todo algo práctico: creo que cualquier usuario real se ha rendido mucho antes. 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 sobre la búsqueda de ataques.

15
itinsecurity

Es una regla arbitraria tonta que conlleva el riesgo de un extraño ataque DDOS. Digamos que Marv odia el sitio web X y el sitio web X tiene un número Y de política de bloqueo de intento. Marv podría provocar un infierno serio si un script intenta automáticamente nombres aleatorios Y veces con contraseñas falsas. Incluso si una contraseña funcionara, a Marv probablemente no le importaría e ignorarla. Esto bloquearía efectivamente a muchos usuarios para el sitio web X y causaría mucha frustración a los usuarios, y que Dios los ayude si son bancos a los que debe llamar para restablecer su contraseña. Me sorprende que nadie haya intentado esto.

11
AmaDaden

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

La política de bloqueo de cuenta (con el número de intentos invá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 una protección contra la suposició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 obtener fragmentos de contraseña al

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

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

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

En comparación, si el administrador establece la antigüedad máxima de la contraseña en 42 días, el primer usuario malintencionado tiene solo 20 conjeturas contra una contraseña determinada, mientras que el segundo usuario malintencionado tiene 40.320 conjeturas (20 intentos por bloqueo, multiplicado por 48 bloqueos todos los días, multiplicado por 42 días antes de que el usuario cambie la contraseña). Con la configuración de contraseña predeterminada, hay aproximadamente 10 ^ 12 contraseñas posibles. Esto significa que el usuario malintencionado tiene aproximadamente un .000004 por ciento (%) de posibilidades de adivinar la contraseña. Con un esquema de adivinanzas optimizado, este porcentaje probablemente sería un porcentaje mayor.

Por supuesto, no es fácil para ningún laico elegir un número adecuado, y tales decisiones deben considerarse cuidadosamente. Por lo tanto, se podría suponer con seguridad 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 mientras retienen el beneficio de seguridad que proporciona.

10
Vineet Reynolds

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

Para este propósito, realmente cualquier número de intentos debe hacer - 3, 5, 20, 2000 ... con una política de contraseña adecuada (longitud + complejidad + ...) dando un espacio clave lo suficientemente grande, ¡cualquiera tipo de estrangulamiento (X número de intentos por hora) asegurará que la fuerza bruta de todo el espacio llevará unas pocas décadas. (Haz las matematicas).

Incluso si, y esto debería ser un requisito, el bloqueo es solo temporal, y después 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 ponga repetidamente una contraseña incorrecta 2000 veces seguidas.

Es decir, si elige arbitrariamente 2000, sabe mucho tiempo antes de eso que NO es un usuario legítimo. Por lo tanto, realmente se reduce a lo que tiene sentido comercial y a una compensación de análisis de riesgo centrada en el negocio.

Creo que históricamente, la compensación estaba más inclinada hacia el lado del riesgo: dado 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, en general, los usuarios tenían más conocimientos técnicos.

Hoy en día, tres realmente no tiene sentido, considerando el impacto comercial. Realmente es una cuestión de qué tiene sentido para la aplicación your, qué tipos de usuarios, con qué frecuencia inician sesión, etc. Por lo general, recomiendo averiguar cuántos intentos legítimos fallidos son probables, luego duplicar eso.

( Como mencionó @realworldcoder , PCI eligió arbitrariamente seis, y si está sujeto a PCI no tiene mucha decisión aquí. De lo contrario, elija un número que tenga sentido para usted).

8
AviD

En lo que respecta a las sugerencias de incrementos de tiempo de 'bloqueos' para retrasar los intentos fallidos sucesivos y, por lo tanto, evitar el forzamiento bruto, recuerde que esto solo funciona en ataques dirigidos a usuarios.

Si el atacante solo se preocupa por obtener acceso al sistema, podría realizar un primer ataque amplio (Ciclo de 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 retraso tampoco funciona.

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

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

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

Pero eso plantea otros problemas para la implementación y la confianza ...

7
Dan McGrath

Las empresas 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 compañía que ya tiene las funciones habilitadas.

3
Jose

Aquí está una lectura realmente agradable que repasa lo que creo que estás buscando. Tomaron datos de estudiantes universitarios utilizando una política de tres huelgas, una política de diez huelgas y una política de huelga infinita para sugerir que aumentemos el número de tres a diez (ya que triplica aproximadamente el éxito del inicio de sesión).

Volviendo a una vista subjetiva aquí ...

¿Por qué la mayoría de los lugares utilizan una política de tres huelgas? Ciertamente es solo una heurística que se desarrolló con el tiempo. Tres intentos es más o menos un término medio para 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, ¿verdad?.

3
user124863

Deben haber elegido 3 al azar. Esto es extremadamente bajo. Quizás 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 cada vez mayores. Sin embargo, no lo quitaría del nombre de usuario, sino que usaría la dirección IP de la persona, porque la persona podría estar probando múltiples 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, utilizará principalmente una herramienta de recuperación de contraseña si el sitio proporciona una. Si se trata de un verdadero intento de pirateo, será 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 que en realidad tomaría mucho tiempo de todos modos) tendrían que esperar 11 1/2 días antes de poder prueba la contraseña 1001 Puede aumentar fácilmente la capacidad de disuasión aumentando el multiplicador a ^ 3. Cualquier cosa anterior que sea demasiado alta para usuarios humanos válidos.

2
Rush Frisby

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

  1. El primer intento fallido brinda retroalimentación inmediata. Probablemente gordo lo tocó.
  2. El intento fallido del segundo al quinto hizo que la respuesta se retrasara un segundo por intento fallido. por ejemplo, 2 segundos, 3 segundos, 4 segundos ...
  3. Si el quinto intento fallaba, la sesión finalizaba y se les presentaba un mensaje que indicaba que tendrían que cerrar su navegador e intentar nuevamente.

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

2
Josh