We know that it's possible to come up with a password that no computer on earth
can crack. Use true random data to generate a sequence of 20 characters from the
full ASCII printable set, spend an hour memorizing, and you're good. We also
know that most people don't do that. What we don't know (or at least often
forget) is that people don't need to do that.
We estimate our password strength by the amount of time it would take the
fastest imaginable supercomputer to search through the set of all passwords of
equal or less length and find ours. What we often forget is that the bad guys
don't have those kinds of resources, and they rarely ever crack passwords via
brute-force search.
Why not? Because most bad guys won't build a billion-dollar supercomputer to
crack one password, and most people with billion-dollar supercomputers aren't
willing to rent out their processing power for password cracking. It isn't
profitable, and those supercomputers can be used for better things like
scientific research.
The Bitcoin network is currently computing 11.74 trillion sha256 hashes per
second (see here for current stats). The network will compute 3.702x10^20
hashes in one year if it continues at it the same rate (my guess is that it will
grow, but it's already over 10 times as powerful as the fastest known
supercomputer). That may seem like a lot of hashes, but if you do the math,
you'll see that its not even enough to do a brute-force search through the set
of all 11-character ASCII passwords. log(3.702x1020)/log(95) = 10.40
Read it again: The Bitcoin network is made up of millions of dollars worth of
hardware and is 10x faster than the fastest known supercomputer, but it can not
brute-force guess an 11-character password in a year.
There is no business model that makes brute-force password cracking profitable.
To see why, consider the following argument:
- If the password can't be cracked with good quality dictionaries or rainbow
tables, it is long and complex.
- Since the fastest distributed computing network on earth can barely search
through the set of all 10-character ASCII passwords in a year, the
probability of cracking a long and complex password via brute-force search in
a reasonable amount of time is low.
- Since the probability of successfully cracking a password via brute-force is
low, to make any money, you must charge the customer even if you cannot crack
it.
- Since the probability of successfully cracking a password via brute-force is
low, and the customer must pay even if you cannot crack it, the customer will
not be willing to pay very much.
- A decent brute-force attack requires a lot of time on an expensive
supercomputer, so you must charge a lot.
- (4) and (5) are incompatible with each other, so it is impossible to run
a profitable brute-force cracking business.
Of course (4) may not hold true when the customer is a government and the
password is the key to winning a war, but most passwords don't have that much
value.
What this tells us is that we don't need to worry about brute-force attacks.
They always succeed (by definition), but rarely in a reasonable amount of time
and there is rarely ever a password valuable enough to justify one.
So ironically, the most profitable kind of password cracking requires very
little computational resources (a single 6-core system satisfies
crackstation.net's needs). The key to being profitable in the password
cracking industry is to be clever and do as much as you can without
a supercomputer. That means implementing extremely fast look-up tables and
constructing extremely effective dictionaries -- going after the low-hanging
fruit.
That's exactly what the bad guys do, and that's exactly what my hash cracking
service does. If you want your password to be secure, don't worry about
comparing its strength to a hypothetical supercomputer, just make sure it's not
a low-hanging fruit, and make brute-force search the only option for your
adversary. Then they probably won't even bother trying.
The easiest way to get out of the low-hanging fruit zone is to make your
password long. Take a look at GRC's Password Haystacks page for some good
advice.
Here's a tip: My hash cracking service is backed by the largest known password
cracking dictionary, which has just over 15 billion entries. There are over
7 billion possible 5-character ASCII strings. So if you include 5 random ASCII
characters in your password and pad it out to at least 12 characters with
something memorable (not a word!), you can be pretty sure that your password
isn't a low-hanging fruit.