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.