* The word is out of context.
* There is usually a time delay on each side of the word.
Also, you usually have them typing in their username/account number near the password, another dead giveawaySo, even requiring that the user make it a straight forward english word provides little (no) defense against keyloggers. On the flip side, when the vendor's hash files (we are presuming at the _very_ least the passwords aren't stored in plaintext, or, the marginally better, "encrypted file") are compromised, having a broad keyspace makes cracking the passwords by brute force more difficult.
If you read the Amex email, they actually require _only letters_ - And, it's not even clear they require capitalization.
I'd love to see how quickly that hash file would fall apart. :-)
Making your password:
http://google.com
would be pretty sneaky.And if you think it's unlikely that AmEx will ever lose control of their user database, you clearly have not been paying attention the last few years.
So longer strings have their own vulnerabilities, but these may not weigh as much as the reduced keyspace of using a shorter string. You can pretty much assume that anything 6 characters or shorter has been entered in to a dictionary.
I disagree. If a password is lost on the user side, it's probably going to be due to a keylogger, phishing, or a trojan.
Requiring short passwords doesn't make the user any more vulnerable to phishing, and it may make it harder for keyloggers or trojans to identify the password. And since the bank locks your account after three wrong guesses, there is no vulnerability from brute force attacks, especially with an RSA token.
The number of people who lose their bank password from shoulder surfing or people noticing keyboard wear is probably virtually zero, so optimizing your system to prevent against these scenarios makes no sense.