¿Inseguro para requerir números en las contraseñas?

4

Anteriormente, fui a un sitio que requería un número y un carácter especial, y me hizo pensar: ¿no haría eso una contraseña más fácil de fuerza bruta? Si asume que la mayoría de las contraseñas tienen alrededor de 12 caracteres, ¿no requeriría un número eliminar aproximadamente el 90% de las contraseñas posibles, haciendo que la fuerza bruta sea mucho más rápida?

    
pregunta tkbx 08.02.2013 - 01:03
fuente

4 respuestas

8

Quita muchas contraseñas solo si considera que todas las combinaciones de 12 letras eran contraseñas posibles. En la práctica, los usuarios no consideran contraseñas aleatorias; quieren usar las contraseñas con un significado y no hay muchas de ellas.

En otras palabras, lo que importa no es el número de contraseñas que caben en el campo de entrada de contraseña, sino el número de contraseñas distintas que el usuario elige entre (el "proceso de generación"). Requerir un dígito adicional amplía ese espacio para la mayoría de los usuarios. Los usuarios para los que el dígito forzado reduce el espacio de las posibles contraseñas son usuarios que eligen contraseñas realmente aleatorias, e incluso con 11 letras y 1 dígito, serán fuertes.

    
respondido por el Thomas Pornin 08.02.2013 - 01:11
fuente
4

Desde un punto de vista puramente teórico, sí. El conjunto de todas las cadenas de una longitud dada será mayor que el conjunto de todas las cadenas con cualquier restricción adicional sobre ellas.

Pero el banco está apostando a que el espacio de contraseñas que el usuario elegiría prácticamente es en realidad mucho más pequeño que el conjunto de todas las contraseñas posibles, y que al asignar un número y un carácter especial son aumentando el conjunto de contraseñas entre las que el usuario elegirá, ya que es posible que el usuario no haya incluido esas restricciones por su cuenta. (Todas las demás cosas son iguales.)

Y aunque un porcentaje razonable de las contraseñas disponibles se eliminará con los requisitos, esto no importa realmente, en la práctica o en teoría, ya que la fortaleza de las contraseñas se mide de forma logarítmica y el 90% no cambia Mucho en la escala logarítmica. Suponiendo que el conjunto de contraseñas con restricciones es solo el 90% * de lo que podría haber sido, esto es solo una diferencia de aproximadamente 3.3 bits de información. Con una longitud de 10 caracteres en total y aproximadamente 72 posibilidades por carácter (52 alfabéticos, 10 números y 10 caracteres especiales), el conjunto de todas las cadenas de caracteres posibles tiene aproximadamente 63 bits de espacio. Así que con las restricciones tenemos 59.7 bits de espacio de contraseña en lugar de 63 bits. No es un gran problema.

(* La estimación del 90% del OP es una sobreestimación muy grande de cuánto se reduce el espacio de la contraseña. Consulte estos comentarios u otras respuestas para obtener mejores aproximaciones de cómo se reduce realmente el espacio de la contraseña).

    
respondido por el B-Con 08.02.2013 - 01:36
fuente
3

Mis respuestas son "tal vez" y "no". Si considera un intento de fuerza bruta que cubre el conjunto completo posible de contraseñas:

  • si el atacante conoce la restricción, entonces se pueden descartar muchas contraseñas, en un sentido, esto no hace que el conjunto sea más pequeño, todavía tiene que iterar desde "" hasta "~~~~~~~~~~ ~ 9 "(por ejemplo), simplemente lo hace escaso
  • la restricción elimina la "parte baja de la fruta", es decir, contraseñas de diccionario directas

Estrictamente, sí, si miras los bits ideales de entropía por personaje, pero en realidad solo quizás. Puede encontrar un análisis más empírico de esto en NIST SP-800 -63-1 (Apéndice A).

Calcular correctamente las permutaciones con restricciones es complicado. Si asumimos 96 caracteres válidos:

 96^12      ~= 2^79   ~= 6.13E+23
 96^11 * 10 ~= 2^75.8 ~= 6.38E+22
 (96^11 * 10 )/96^12  ~= 0.104

Esa relación indica una pérdida de ~ 89.5% (con un conjunto más realista de 64 caracteres, es aproximadamente 85%) - pero ese no es el cálculo correcto , ese es el número de permutaciones para un dígito en una posición específica .

(Aparte: no hago caso de las contraseñas de menos de 12 caracteres por simplicidad, ya que apenas afecta a los números:

96^1 + 96^2 + 96^3 + 96^4 + 96^5 + 96^6 + 96^7 + 96^8 + 96^9 + 96^10 + 96^11
 ~= 6.45E21

que es ~ 1% del total: para las contraseñas de 1 a 12 caracteres, las de 12 caracteres representan ~ 99%. A medida que el tamaño del conjunto de caracteres se reduce, la proporción aumenta, es ~ 1.5% para el conjunto de 64 caracteres, no cambia mucho, ya que la longitud de la contraseña varía en el rango [7-16] en cualquier caso.)

Hay dos formas obvias de calcular el número correcto de permutaciones con una restricción de un dígito:

  1. calcule las permutaciones para un dígito en cada lugar y sumelas
  2. calcule el tamaño del conjunto total, reste los deshabilitados

La opción 1 se sale de las manos rápidamente cuando intenta formar permutaciones sin superposiciones. La opción 2 es casi trivial (al menos para casos simples como "debe tener al menos un dígito"):

96^12 - 86^12 ~= 2^78  ~= 4.49E+23
(96^12 - 86^12 ) / 96^12 ~= 0.73

Esto se muestra para las contraseñas de 12 caracteres elegidas de un conjunto de 96 caracteres que pierdes ~ 27% del número total de permutaciones con la restricción de "al menos un dígito". Repitiendo con un conjunto de 64 caracteres para contraseñas:

( 64^12 - 54^12 ) / 64^12 ~= 87%

Así que solo pierdes un 13% en ese caso.

que requiere dígitos y amp; la puntuación es un poco más complicada, mi cálculo (96 caracteres, longitud 12, > = 1 dígito, > = 1 puntuación) es 4.46E + 23 o ~ 73% de 96 ^ 12, aunque sea un poco menos que el caso del dígito.

La fuerza bruta no es "mucho más rápida", solo un 25% más rápida, lo cual es bastante aceptable dados los beneficios.

    
respondido por el mr.spuratic 08.02.2013 - 14:18
fuente
0

Este tipo de reglas son sensatas, principalmente porque previenen muchas contraseñas débiles en la práctica y requieren que considere el uso de símbolos especiales / de números al generar su contraseña. Cualquier contraseña, como una palabra del diccionario, se excluye automáticamente y requiere al menos la adición de un número y un símbolo en algún lugar de la contraseña. Sí, aún puede construir contraseñas débiles siguiendo las reglas, pero ha aumentado considerablemente el espacio para hacerlo.

Hagamos algunos cálculos matemáticos suponiendo que estaba creando aleatoriamente una contraseña de 12 caracteres que se generó aleatoriamente . Digamos que está escogiendo símbolos al azar de un conjunto de símbolos de tamaño N; por ejemplo, N = 26 si solo permite letras en minúsculas (también 26 si solo permite letras en mayúsculas); N = 52 si permite letras mayúsculas y minúsculas; N = 95 si permite todos los caracteres ASCII etc. imprimibles, es decir, hay 26 letras en minúsculas, 26 letras en minúsculas, 10 números y otros 33 símbolos ASCII imprimibles.

Puede encontrar fácilmente que el número de contraseñas disponibles es N ^ 12 para una contraseña de 12 caracteres (hay N opciones para la primera letra; N para la segunda / tercera / cuarta, etc.) por lo que el número es% código%. La entropía de una contraseña se relaciona con el logaritmo base-2 del número de contraseñas posibles (es decir, N*N*N*N*N*N*N*N*N*N*N*N = N^12 ).

Type of password   |  N |   number of 12-char passwords   | Entropy
--------------------------------------------------------------------
number only        | 10 |               1 000 000 000 000 | 39.9
lowercase only     | 26 |          95 428 956 661 682 176 | 56.4 
symbol only        | 33 |       1 667 889 514 952 984 961 | 60.5    
lower+number       | 36 |       4 738 381 338 321 616 896 | 62.0
number+symbol      | 43 |      39 959 630 797 262 576 401 | 65.1
lower+upper        | 52 |     390 877 006 486 250 192 896 | 68.4 
lower+symbol       | 59 |   1 779 197 418 239 532 716 881 | 70.6 
lower+upper+num    | 62 |   3 226 266 762 397 899 821 056 | 71.4 
lower+symbol+num   | 69 |  11 646 329 922 777 311 412 561 | 73.3 
lower+upper+sym    | 85 | 142 241 757 136 172 119 140 625 | 76.9 
lower+upper+num+sym| 95 | 540 360 087 662 636 962 890 625 | 78.8 

Ahora, si requirió que debe tener al menos una minúscula, mayúscula, número y símbolo en su contraseña de 12 caracteres, excluye efectivamente las posibilidades anteriores. Imagine el escenario simplificado, en el que originalmente solo permitía contraseñas en minúsculas, y luego decidió requerir al menos un número y una letra en minúsculas en las contraseñas (y aún prohibir símbolos / mayúsculas), el número de contraseñas de 12 caracteres no sería 36 ^ 12 contraseñas, pero ahora serían 36 ^ 12 - 26 ^ 12 - 10 ^ 10 contraseñas, aunque esto solo reduce el espacio efectivo de contraseñas en 2.01 por ciento. Sin embargo, la entropía de la contraseña apenas cambia de 62.04 a 62.01. Cuando la bruta de forzar contraseñas es importante, no importa el factor constante, como un 2% más rápido de tiempo para la fuerza bruta.

En nuestro caso, al requerir al menos uno inferior + superior + num + sym en nuestros resultados de contraseñas:

95^12 - 85^12 - 2*69^12 - 62^12 - 2*59^12 - 52^12 - 43^12 - 2*36^12 - 33^12- 2*26^12 - 10^12
 = 367598836933644823317658 possible passwords

La multiplicación por dos para algunos valores explica cómo mi tabla solo consideró los casos en minúsculas solamente; También hay que tener en cuenta solo en mayúsculas. Esto reduce la entropía de 78.8 bits a solo 78.3 bits. Sí, eliminó el 31.9% de las contraseñas posibles (y un 26% de ellas provino de la necesidad de un número), pero hizo una mella mínima en la entropía intrínseca. Ahora compárelo con un esquema en el que su contraseña original se generó al azar a partir de letras minúsculas y símbolos. Eso tiene una entropía de 62 bits en lugar de 78.3 bits, lo que significa que es aproximadamente 65000 veces más fácil de fuerza bruta.

Por supuesto, casi siempre es mejor simplemente aumentar la longitud de la contraseña que aumentar el tamaño de su conjunto de símbolos. Por ejemplo, una contraseña aleatoria de 17 dígitos en minúscula tiene ~ 80 bits de entropía (por ejemplo, lg(N^12) ) superando ligeramente una contraseña de 12 dígitos con 95 símbolos ajctzdtrtenwutuxc , lo que puede ser más difícil de recordar / escribir y tener algunos símbolos en la lista negra.

    
respondido por el dr jimbob 08.02.2013 - 19:18
fuente

Lea otras preguntas en las etiquetas