Password policies have certain requirements for creating a password on a service.
My question is, do password policies make passwords weaker, therefore counterproductive?
Let's give an example:
I'll be using letters to represent charsets:
L = abcdefghijklmnopqrstuvwxyz
U = ABCDEFGHIJKLMNOPQRSTUVWXYZ
D = 0123456789
S = «space»!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
A = L and U and D and S combined
Ok, so a password policy says minimum is 8 characters. Now, using this information, a bruteforcer limits attempts to length >= 8, vastly reducing attack space.
Another common policy is passwords must have at least one upper case letter, one number, and one symbol.
Assuming the password is 8 characters, instead of the password being 8 As,we now know the password is 5 As, 1 D, 1 U, and 1 S. Now instead of (A^8), it is (A^5xDxUxS) possible combinations.
If the policy asks for one lower case letter, we reduce the attack space even further.
If the password policies significantly reduce the attack space, what's the purpose of implementing a policy that extends beyond a minimum length requirement? Wouldn't it be safer to implement a simple policy like minimum length of 10 or something?
By adding required charsets like digits and symbols, we give hackers more information about the contents of the passwords.