Quería publicar mi propio razonamiento en la pregunta ya que lo he pensado un poco y la razón por la que lo publico como pregunta es para verificar mi razonamiento. Por lo que sé, esta respuesta podría ser rechazada :).
Quiero decir, el argumento general, como lo entiendo, es que los requisitos de complejidad de la contraseña requieren que el usuario elija una contraseña de un "espacio" mayor, lo que reduce las posibilidades de elegir una contraseña no segura, ya que muchas contraseñas inseguras son solo alfa en minúsculas (aunque claramente no todos, como Password1!
).
Cuando se marca algo como haveibeenpawned , se trata de una verificación mejorada que elimina la gran mayoría del espacio de "contraseña no segura". En lugar de considerar inseguras todas las contraseñas alfa en minúscula, en su lugar utiliza datos reales para determinar qué contraseñas son o no seguras (se supone que el conjunto de contraseñas comprometidas es extremadamente similar a las contraseñas inseguras). La combinación de ambas reglas de complejidad con una verificación de la base de datos de contraseñas comprometidas elimina principalmente la parte "segura" del espacio alfa en minúsculas, bloqueando las contraseñas seguras que son detectadas por reglas de complejidad de contraseñas como las frases de contraseña (por ejemplo, catwindowlightpencil
).
La figura anterior no abarca todas las contraseñas, en su lugar compara las contraseñas. Las reglas de complejidad de contraseñas están bloqueando con las contraseñas que desea bloquear. El conjunto de contraseñas no seguras es el que desea bloquear, el conjunto de contraseñas comprometidas es un subconjunto que puede bloquear, el conjunto alfa en minúsculas es el que bloquea con las reglas de complejidad de contraseñas.
Nota: Obviamente, se pueden 'crear' nuevas contraseñas 'tontas'. Por ejemplo, un nuevo ídolo pop podría volverse popular durante la semana pasada o Microsoft podría comprar Github, pero aún no aparecer en una base de datos de contraseña comprometida. Del mismo modo, alguien podría usar un nombre de producto como contraseña de un producto que aún no se haya comprometido.