¿Los requisitos de complejidad de las contraseñas reducen la seguridad al limitar el espacio de búsqueda?

11

He leído que los requisitos de complejidad de las contraseñas hacen que las contraseñas sean más fáciles de adivinar a través de un ataque de fuerza bruta. La razón de esto es que el requisito de complejidad en realidad reduce el espacio de búsqueda para la adivinación de fuerza bruta al eliminar las contraseñas posibles. Me gustaría profundizar más en esta idea sugiriendo que las contraseñas generadas por usuarios humanos tienden a cumplir exactamente los requisitos de complejidad. Es decir, si el requisito es que la contraseña debe tener al menos 8 caracteres y contener al menos 1 carácter numérico, entonces las contraseñas que las personas tienden a tener serán exactamente 8 caracteres y contendrán exactamente 1 carácter numérico. Esto tendría el efecto de reducir el espacio de búsqueda hasta el punto de que sea casi trivial adivinar las contraseñas que se crean de esta manera.

Mi pregunta es esta:

¿Es cierto que los requisitos de complejidad de las contraseñas tienen el efecto de hacer que las contraseñas sean más fáciles de adivinar reduciendo el número de contraseñas permitidas y, por lo tanto, reduciendo la seguridad general? Puntos extra para enlaces a análisis detallados y discusión.

Esta es una pregunta importante porque si es verdad, es nuestra responsabilidad como programadores hacer retroceder en la gestión de productos cuando se proponen este tipo de requisitos.

    
pregunta 26.04.2012 - 18:26
fuente

5 respuestas

13

La respuesta corta es sí, pero no realmente. Los requisitos de complejidad de las contraseñas reducen ligeramente el espacio de búsqueda al limitar el número de contraseñas posibles. Sin embargo, los usuarios no seleccionan las contraseñas de manera uniforme sobre el conjunto de todas las contraseñas posibles (están sesgadas hacia palabras, fechas, etc.).

Análisis combinatorio

Para simplificar las cosas, supongamos que le hemos pedido al usuario una contraseña alfanumérica que no distinga mayúsculas y minúsculas (/ ^ [a-z0-9] {8} $ / si lo desea).

Sin un requisito de complejidad, hay 36 ^ 8 contraseñas posibles. Esto es aproximadamente 2.8 billones de posibilidades.

Digamos que luego impone el requisito de que exactamente un carácter sea un dígito. Hay solo diez opciones de dígitos, pero podría aparecer en cualquiera de las ocho posiciones. Esto deja 26 ^ 7 * 10 * 8 posibilidades, o aproximadamente 640 mil millones de posibilidades.

Por supuesto, es poco probable que los usuarios utilicen símbolos extraños en sus contraseñas sin un requisito de complejidad. Si los números son nuestro suplente para los símbolos extraños en este caso, eso significa que cada posición realmente solo tiene 26 opciones posibles. Esto deja 26 ^ 8, o aproximadamente 208 mil millones de contraseñas posibles. La contraseña con el requisito de complejidad es más de 3 veces mejor que la entrada sin restricciones de un usuario parcial.

Summary

Entonces, sí, los requisitos de complejidad reducen el espacio de posibles contraseñas. Sin embargo, ayudan cuando hay un sesgo conocido hacia un subconjunto pequeño de las contraseñas posibles. Los requisitos reales de complejidad no limitan a los usuarios a un único carácter especial, y hay muchos más de diez caracteres especiales posibles. El beneficio de los requisitos de complejidad real (incluidos los requisitos de puntuación, longitud ilimitada y "al menos uno") en comparación con permitir que los usuarios ingresen una contraseña (posiblemente sesgada) es mucho mayor que lo que describí aquí.

    
respondido por el ccurtsinger 26.04.2012 - 18:51
fuente
9

La mejor forma de defenderse contra los ataques de fuerza bruta es una respuesta de autenticación lenta. Si una sola estimación demora entre 1 y 5 segundos en validarse y responder, el tiempo requerido para que un ataque de fuerza bruta tenga éxito rápidamente se vuelve demasiado largo para ser práctico en gran escala.

Sin embargo, las bases de datos de contraseñas robadas han demostrado que algunas contraseñas son mucho más probables que otras. El uso de ataques basados en contraseñas comunes o palabras comunes también constituye un ataque efectivo.

Algunas reglas de complejidad pueden reducir la efectividad de estos tipos de ataques de contraseña al eliminar palabras comunes y contraseñas, pero a menudo los mismos sitios tienen utilidades de recuperación de contraseña fáciles de violar.

Y, por supuesto, los usuarios pueden usar la misma contraseña en otros lugares y tener la otra cuenta comprometida. La seguridad de la contraseña no es un problema simple con una solución simple. El elemento más débil de un sistema de seguridad define la seguridad de todo el sistema, y los sistemas de software tienen muchos elementos, incluidos los elementos humanos, que son vulnerables.

    
respondido por el Plastic Sturgeon 26.04.2012 - 18:35
fuente
4

La respuesta es que no es tan simple. Es importante comprender todos los enfoques para atacar contraseñas antes de poder decir que lo complejo es bueno o malo, ya que los diferentes requisitos están destinados a disuadir diferentes tipos de ataques.

Como usted señala, dadas dos contraseñas igualmente largas del mismo conjunto de caracteres, los requisitos de complejidad de las contraseñas reducen el espacio de búsqueda general. Por ejemplo, dada una contraseña ASCII de 1 carácter que debe incluir una letra vs una contraseña ASCII de 1 carácter que puede ser cualquier cosa, es más fácil adivinar la primera contraseña.

Sin embargo, los requisitos de caracteres de contraseña no deben utilizarse en exclusión de longitud. Considere la siguiente fuerza mínima de los conjuntos de requisitos de contraseña:

  1. 8 caracteres ASCII imprimibles = aproximadamente 100 ^ 8 = 10 ^ 16 valores posibles
  2. 16 dígitos ASCII imprimibles = 10 ^ 16 valores posibles
  3. 9 caracteres ASCII imprimibles con al menos 1 número, 1 letra (en cualquier caso) y 1 símbolo = ((10 números) (52 letras) (30 símbolos) * 100 ^ 6) = 10 ^ 16

[NOTA: Sé que 100 no es el número verdadero, solo facilita las matemáticas]

Así que vemos que tres requisitos de contraseña diferentes son igualmente fuertes, en términos de requisitos de fuerza bruta. Pero no hemos hecho nada acerca de los ataques de diccionario. En un ataque de diccionario, simplemente probamos una lista de palabras conocidas y vemos si alguna de ellas es la contraseña. Haz cualquiera de ellos por más tiempo y lo has hecho más fuerte que los demás.

El requisito de contraseña 1 no hace nada para evitar los ataques de diccionario, y 3 hace poco. Puede usar la palabra "evita", que es muy probable que se encuentre en un diccionario. Puede ver listas de contraseñas reales que se han filtrado en Internet (o crear su propio servicio popular y recopilar contraseñas) y descubrir contraseñas populares para optimizar su ataque para los valores más probables (por ejemplo, si todos en Nueva York eligen una variación de "Yankee1!", Entonces tu ataque comenzará probando variaciones de "Yankee1!").

Por lo tanto, la siguiente cosa natural es evitar las contraseñas que son palabras de diccionario. Esto reduce el número de contraseñas válidas, pero también elimina una optimización disponible para el atacante. Haga que la contraseña sea un poco más larga y puede mantener la contraseña sin palabras del diccionario igual de fuerte o más fuerte.

Pero esto no hace nada para que las contraseñas no sean habladas. No encontrará P4 $$ w0rd en un diccionario, pero es una variación bastante estándar que prueban las herramientas de fuerza bruta. Tome cada palabra en el diccionario, ejecútela a través de leet speek, prepénd, postpend e inserte uno o dos caracteres más en cada ubicación.

Los requisitos de complejidad de la contraseña se pueden introducir para restringir estos tipos de ataques: varios símbolos, múltiples números y una contraseña (una vez más) más larga. Algo que requiere una herramienta de gestión de contraseñas para realizar un seguimiento. Es difícil usar la fuerza bruta (porque es cada vez más larga) y es difícil de optimizar porque no está en un diccionario o algo parecido en un diccionario).

¿Pero qué sucede cuando se rompe una contraseña en particular y el usuario cambia a una nueva? Los usuarios a menudo intentan hacer lo fácil y eligen una contraseña fácil de recordar, una muy similar a la anterior. P4 $$ w0rd1 se convierte en P4 $$ w0rd2. Pero el atacante simplemente agregará P4 $$ w0rd1 a su diccionario, y probará automáticamente para P4 $$ w0rd2. Por lo tanto, la reutilización de contraseñas a menudo no está permitida.

Pero el meollo del problema es: "¿Es adecuado para las necesidades de la organización?" Necesita una contraseña que sea lo suficientemente fuerte como para que sea segura durante el tiempo que sea útil (por ejemplo, se modifique o la cuenta esté deshabilitada), dado todos los demás controles de compensación de los que ni siquiera hemos empezado a hablar. Si la velocidad de fuerza bruta es lenta, o solo tienes algunas oportunidades, las contraseñas más débiles están bien (por ejemplo, IronKey permite algo como 17 intentos y requiere acceso físico, por lo que una contraseña de 10 ^ 16 es más que suficiente). >     

respondido por el atk 26.04.2012 - 18:58
fuente
1

Lo que me gustaría agregar a tu pregunta es: ¿Los requisitos de complejidad de las contraseñas reducen la seguridad al limitar el espacio de búsqueda teóricamente o prácticamente?

Quiero decir,
Por lo que yo sé, de un técnico y amp; Las políticas de complejidad de contraseña de punto de vista práctico NO excluyen los juegos de caracteres, pero obligan a usar algunos de ellos. Al usar las políticas de complejidad de contraseña, obliga a los usuarios a usar al menos, por ejemplo, 4 caracteres de diferentes juegos de caracteres; al menos tres números (conjunto de caracteres del número), una letra mayúscula (conjunto de caracteres de las mayúsculas), dos símbolos (conjunto de caracteres especiales) y amp; una letra pequeña (letra pequeña, conjunto de caracteres).

No está aplicando exclusiones, como: "No debe usar espacios en sus contraseñas" o "No puede usar números en su contraseña". Así que no estás reduciendo el espacio del personaje.

En conclusión, creo que la complejidad de las contraseñas no reduce el espacio de búsqueda.

Pero desde una práctica y amp; punto de vista del mundo real el hecho es:
Estamos trabajando con Humans & la mayoría de ellos son demasiado perezosos para pensar, generar & memorizar una buena o al menos una contraseña estándar.
En la práctica, la CONTRASEÑA USADA real pertenece a un espacio de búsqueda muy limitado: Letras pequeñas y amp; Números (pensando en una contraseña generada al azar), pero ni siquiera el espacio completo, el espacio de búsqueda real es mucho más pequeño en el mundo real.
El espacio de búsqueda real es la suma de las bases de datos de contraseñas comunes + la pereza de sus usuarios.
nombres de equipo + 123, nombre de servicio que se ejecuta en el host + 12345 & muchas más contraseñas estúpidas!
No tiene idea de los lugares en los que podría realizar pruebas de escritura con estas contraseñas en sus escritorios remotos, FTP, Roots, administradores de dominio, etc. & No estoy hablando de SOHO, estoy hablando de organizaciones empresariales, proveedores de dispositivos de firewall, etc.
Para un ejemplo global, COMODO. Una de las principales cosas que ayudó al intruso a alcanzar su objetivo fue una contraseña débil.

Lo que quiero decir es que sin las políticas de complejidad de las contraseñas, el espacio real no se usa, le remito a un ejemplo que leí hace mucho tiempo en "Contraseñas perfectas".

  

Si el espacio de posibilidad de contraseña es el mundo entero, ¡el 98% de las contraseñas están en el área de 1 metro cuadrado de su patio trasero!

En mi opinión, la complejidad de la contraseña no reduce el espacio de búsqueda porque no excluye ningún conjunto de caracteres , pero en realidad AUMENTA la búsqueda espacio mediante la aplicación del uso de otros conjuntos de caracteres que no se utilizan normalmente.

P.S: para una sugerencia sobre la complejidad de la contraseña, una buena Política de cumplimiento de la complejidad de la contraseña DEBE tomarse en serio la ENTROPÍA de la contraseña.

    
respondido por el Sam 28.12.2012 - 08:59
fuente
1

Sí, los requisitos de complejidad de las contraseñas reducen el espacio de búsqueda y, por lo tanto, facilitan la adivinación de las contraseñas más sencillas , pero al mismo tiempo puede también aumenta la seguridad . ¿Por qué? Para comprender esto, es necesario comprender que no existe una contraseña segura (o insegura). Una contraseña solo es segura / insegura en relación con nuestras suposiciones en el método de ataque del atacante.

Para entender esto, considera el siguiente ejemplo. Si elige al azar una cadena de letras de 0 <= length < n de un alfabeto de tamaño d , hay exactamente

d^0 + d^1 + ... + d^{n-1} = (d^n - 1)/(d-1)

posibilidades. Si ha seleccionado una cadena de longitud l < n , y el atacante elige una cadena de longitud n uniformemente al azar , con probabilidad (d-1)/(d^n - 1) elegirá su contraseña. Tenga en cuenta que esta probabilidad no depende de la longitud de su contraseña, sino de la longitud máxima que el atacante considera.

Por lo tanto, tenemos una aparente paradoja: cuantas más contraseñas compruebe el atacante, más segura estará tu contraseña . Por supuesto, eso es una tontería. De hecho, si un atacante intenta descifrar su contraseña, no solo elegirá una al azar, sino que las revisará todas en una secuencia.

Entonces, la forma correcta de solicitar la seguridad de su contraseña es: ¿Qué tan probable es que un atacante adivine su contraseña dentro de las conjeturas k?

Si asume que su atacante pasa por todas las contraseñas en orden lexicográfico, la contraseña zzz...z es objetivamente las contraseñas más seguras, y debe ser utilizada por todos los usuarios. Esto es ridículo, pero tan ridículo como nuestra suposición.

Un enfoque más razonable es asumir que el atacante recorre todas las cadenas de longitud < n en un orden aleatorio. Con una probabilidad de

1 - (N-1)/N * (N-2)/(N-1) * ... * (N-k)/(N-k+1) = 1 - (N-k)/N

habrá encontrado su contraseña (asumiendo que el atacante sigue adivinando incluso si la ha encontrado), donde

N = (d^n - 1)/(d-1)

es el número de todas las cadenas de longitud < n .

Nuevamente, este número no depende en absoluto de la longitud l de su contraseña. Por lo tanto, la contraseña vacía es tan segura como cualquier otra contraseña .

Una vez más, esto es ridículo: el atacante probablemente no será tan estúpido como para probar todas las posibilidades de una manera aleatoria uniforme. Probablemente pasará por un pequeño subconjunto de casos especiales primero (contraseña de longitud pequeña, contraseñas de la misma letra, ...) y luego probará el resto de ellos en un orden aleatorio uniforme.

Para resumir: 'La seguridad de una contraseña' es solo una cantidad subjetiva que le asignas, según tus creencias sobre el atacante. Dado que la mayoría de los usuarios creen que los atacantes deben comprobar primero las "contraseñas simples", éstas son subjetivamente inseguras. Tan inseguro de hecho, que es razonable disminuir un poco el espacio de búsqueda al excluir estas contraseñas.

    
respondido por el BlenderBender 05.04.2017 - 14:07
fuente

Lea otras preguntas en las etiquetas