One of the biggest impediments to good security is an understanding of what people can and cannot do.
I found one of the best examples of this the other day, when I was asked to review a security plan presented by a potential vendor. Overall, the plan was quite good, but in a number of places the company seemed to forget that humans were going to need to follow the rules. I'll use this company's password rules to make some points about the need for vendors developing security rules to remember the limitations of the people in the loop.
At this company, passwords must be at least six characters long (the vendor is working on a revision that will require 30-character passwords); they must have a reasonable degree of complexity (they must include at least one nonalphabetic character and must not be simple words, names or digit strings); and they must be changed every 90 days. After three failed attempts, accounts are locked out and have to be reenabled by a system administrator.
The basic purpose of a password is that there be a piece of information that in theory is known only by the legitimate user of a particular account. For this to work, passwords should be memorized -- not written down where others can find them. Humans have a hard time memorizing nonsense, so to facilitate memorization, passwords should make some kind of sense to the user, but not so much sense that people who know the user can guess them.
It is very difficult to come up with hard-to-guess but easy-to-memorize, six-character passwords, especially when at least one of the characters cannot be a letter. Most security geeks suggest that the minimum reasonable length for passwords these days is eight characters. It may be far worse to require very long passwords. Most normal users would be hard put to type a 30-character password reliably. So to ensure they do not get locked out, they will choose an easy-to-type password and type it very slowly -- so slowly that it would be easy for someone to watch over their shoulder when they are trying to log on at Starbucks, and find out this "high-security" access control.
The worst part of this company's password plan is the automatic lockout after three failed attempts. Auto lockout is used to make password-guessing attacks hard. If a password is at all well-formed, it will take a lot of guesses to break it by brute force (for some numbers see Microsoft's Web site ).
Setting the auto lockout to 10, for instance, instead of three means there would be an infinitesimally small additional chance that an attacker would guess the right password before being locked out. From the users' point of view, however, a "three tries and you're dead" rule means they must use the same password for all their applications because of the risk involved with not remembering the password. Requiring reset by a systems person provides little if any additional protection compared with an automatic reenable after 30 minutes -- and it irritates the heck out of users.
Finally, the requirement that every 90 days users have to come up with new passwords they can memorize makes life very hard for some and does not solve many security problems.
All in all, these rules would be great if a computer had to follow them. With people in the loop, however, the rules will in general significantly reduce security rather than increase it.
Disclaimer: Harvard does not comment on the record about vendor security plans, so the above critique must be mine.