Cualquier cosa que restrinja el conjunto de contraseñas posibles lo hace más vulnerable a un ataque de fuerza bruta. La única razón para prohibir algunas contraseñas es si la restricción al espacio de contraseñas es compensada por la alta propensión de los usuarios a elegir contraseñas que puedan adivinarse fácilmente.
Supongamos que desea contraseñas con al menos 38 bits de entropía (eso ya es muy alto para una contraseña que solo puede ser atacada en línea en circunstancias normales). Eso requiere un espacio de contraseña de al menos 274877906944.
Prohibir contraseñas que sean demasiado cortas es razonable. Suponiendo que el conjunto de caracteres está restringido a los 94 caracteres imprimibles sin espacio ASCII, el mínimo es 6 caracteres aleatorios (689869781056). El hecho de prohibir contraseñas más cortas (≤5 caracteres) apenas marca una diferencia: solo hay 7417954634; las contraseñas de longitud 5 o longitud solo constituyen el 1.1% (un poco más de 1/94) de las contraseñas de longitud hasta 6. Y Debido a que los usuarios rara vez escogen secuencias de caracteres completamente aleatorias, tiene sentido tener una longitud mínima aún mayor. Una longitud mínima apenas hace mella en el espacio de la contraseña, ya que crece exponencialmente.
Por el contrario, prohibir un carácter, a la inversa, hace que cada vez sea más importante a medida que las contraseñas se hacen más largas. Supongamos que selecciona una contraseña con 8 letras aleatorias y un dígito aleatorio al final (y no confíe en el carácter de puntuación para la entropía). Eso ofrece 2088270645760 posibilidades, más de 2 41 , que cumplen con el requisito de 38 bits. Si prohíbe tan poco como una letra, el espacio de la contraseña se reduce a 1525878906250, es decir, el 27% del espacio de la contraseña se desperdicia allí. Con 6 letras prohibidas, el espacio de la contraseña se reduce a 256000000000, que es menos de 2 38 .
Las letras aleatorias son difíciles de memorizar, por lo que hay mejores métodos para generar contraseñas buenas más largas pero más útiles. %código%? No, no puedo usar eso. Tomemos la popular Diceware de 7776 palabras en inglés y memorables secuencias de letras y dígitos. 3 elementos aleatorios en la lista satisfacen el requisito de 38 bits (7776 3 = 470184984576). ¿Pero 3 elementos aleatorios que no contienen ninguna letra de mi nombre de usuario? Solo 2130 elementos se ajustan a la cuenta, lo que lleva a 9663597000 posibles contraseñas, solo 33 bits. Todavía decente, pero menos que nuestro objetivo. Y la lista de Diceware tiene un número molesto de caracteres especiales si vas a escribir esa contraseña en un dispositivo móvil. Tengo una lista de 4172 palabras cortas en inglés común y puedo elegir 3 palabras aleatorias para obtener 37 bits de entropía, que con un dígito adicional proporciona los 38 bits necesarios (726160964480 posibles contraseñas). Si excluyo las letras en mi nombre de usuario, eso se reduce a 787 palabras, para solo 29 bits sin dígitos o 33 bits con un dígito.
Prohibir caracteres comunes para usuarios que deliberadamente escogen contraseñas buenas es malo, y te he aburrido con los cálculos para mostrarlos. ¿Qué pasa con los usuarios a los que se dirigen realmente las restricciones de contraseña: el 99% que no elige aleatoriamente?
nombre de la novia? No. ¿El apellido de soltera de la madre? No. ¿Ciudad natal? ¡Maldición, esto es difícil, la restricción debe estar funcionando! %código%? %código%? %código%? Ah, corrEct horSE battEry StapLE
funciona para mí, qué suerte.