Dictionary passwords are the way to go. Wikipedia suggests that making a strategy predictable may not be the best route, but in this case it is.
From Wikipedia Information Theory/Entropy:
For instance, the entropy of a coin toss is 1 shannon, whereas of m tosses it is m shannons. Generally, you need log2(n) bits to represent a variable that can take one of n values if n is a power of 2. If these values are equally probable, the entropy (in shannons) is equal to the number of bits. Equality between number of bits and shannons holds only while all
outcomes are equally probable
So if everything is equally probable, I'm as likely to put 'a' or '2' or '<' for a value, then options and length are all that matter. That considered, there are far more words than letters+digits+symbols in any language. Enough so that a 4 word password easily trumps a 10 character one.
To show how much of a difference:
26 letters in alphabet, 10 digits, maybe 15 symbols = ~50 options.
10 character password = 9.76 x10^16 options.
If our computer's guessing 4 million a second, a rough, generous guess, we're at about 775 years to guess the password. Pretty secure. And, we can remember comfortably about 7 characters, 10 is doable, especially through password-style repetition.
This is with 10 characters, all equally weighted in probability, which is reasonable since it's likely to be gibberish that we'll have to right on the back of our hand to remember initially.
1) Length of the password is important in this case. Every character increases safety considerably. A longer password is always better. If for example we chopped our password down to 7 characters then we're at a meager max time of 2.25 days to crack with 50 options for each character.
2) But say if I make a password as the XKCD comic describes, nothing is stopping anyone from throwing a dictionary at a password like "remember elephant lost woods". Say if I use john the ripper, which has ~3000, with an option to make each plural or to chop off an s if it ends with one, then maybe ~6000 words. If there are 4 words in my password then 6000^4 possibilities = 1.3 x10^15, 10 years
Pretty secure. And, John the Ripper wouldn't actually crack the password:
correct horse battery staple
John the ripper is using common passwords. So common that only 'horse' actually shows up in there. Say if I use uncommon enough words that cracker dictionaries don't anticipate, then the last option is a legitimate dictionary-attack.
If I use fedora's default dictionary, with a very-comprehensive 500 000 words, for a 4-word password there are 6.25 x10^22 possibilities we're at about .5 billion years cracking time. But it's not farfetched to say that this could be cut down to at most 25% of its size, especially if common words like 'correct horse battery staple' are being used. So, 125 thousand possibilities. Still, 2.44 x10^20, which is about 2 million years.
What if we could cut it down to %1? So 5000 words. That's 6.25 x10^14 possibilities, nearly the same number as with the john the ripper attack, about 5 years max. Is it really feasable to cut it down to 1%? Probably not if the most common words aren't used.
But this also depends on whitespace delimiters. If I have
Then we've destroyed the first equality of bits in the shannons conversation, but added an insurmountable amount of variables even if the attacker completely anticipates this tactic.
Also, if a smaller dictionary of say 200 000 could be used, reducing that to 1% is still maximum 45 days, and avoiding the most common words and using varying word delimiters would increase this duration drastically, and throwing in a word or two in another language if that's easy.