I am really not an expert, just a (hopefully) well-educated layman when it comes to computer security. Everything I know comes from articles like the one I linked, and semi-regular reading of experts like Brian Krebs and Bruce Schneier.
Still, as I understand it:
Any website where you have to sign in needs to store your password somehow. Rather than storing your password as plain text, any responsible website will store password “hashes”. A hashing algorithm transforms your password into a long string of characters in a way that is practically impossible to reverse. Thus, to log in, you type in “P(ett4R0se”, and your computer computes the hash “2fa5411230d2972868267a1f0f46dd1f1f552205” (using the SHA-1 hash function). Your computer sends a username and password hash to the website, which checks it against their list of usernames and password hashes.
A malicious hacker somehow obtains access to a websites server, and downloads all the account information they can, including lists of usernames and password hashes. This has happened on the Straight Dope Message Boards! (If the website was run by idiots, the hacker now has a list of usernames and plain-text passwords).
With a list of usernames and password hashes, the hacker has all the time they want to try to guess each password with their own computers. The ArsTechnica article I mentioned above describes this process. Since hashes can’t easily be reversed, the hacker has to essentially guess by brute force, computing the hash for many many candidate passwords and seeing if any match. Again using the linked example, the hackers tried (1) all 1-6 character passwords, (2) dictionary words including common substitutions (i.e. “3” for “E”), (3) dictionary words plus a handful of random characters, and (4) more sophisticated guessing methods which learn and use common combinations of characters (i.e. “q” followed by a “u”, or a “1” followed by “9”). This approach plausibly could have identified P(ett4R0se.
At the end of this process, the hacker now knows the actual password for a large majority of accounts, along with the username and email. They can use those to log into the hacked website, or try to use them to log into associated accounts.
Or, they can add these new usernames and passwords to the accumulated millions of known usernames and passwords and try them on any website they like. I believe most websites will block lots of rapidly repeated login attempts from a single computer. However, the hacker can use botnets (armies of hacked desktop computers) to automatically do the dirty work, allowing them to potentially try thousands of logins per second.
If the hackers break into an email account, they can easily find and reset the password for many other accounts. If they break into an online store or banking account, they can straight up take your money or buy valuable stuff and have it shipped elsewhere. If they break into a social media account, they can post links to malware or direct fraudulent ad clicks to generate revenue for a website.
Finally, when I talk about “the hacker”, it’s really a network of organized crime. The password crackers sell their lists of passwords to the person running the botnet. The botnet owner gathers lots of working account information for all sorts of sites, and sells it to someone else. Finally, a criminal group buys (say) your Amazon login, or your credit card info, and uses it to buy iPads, which are then sold on Craigslist.
So, after all of that, what should the ordinary shlub do? I honestly am not completely sure. But my advice is:
-
Never ever re-use passwords between websites.
-
Set up two-factor authentication for really critical accounts - e.g. if you log into your email or bank account from an unknown computer, you’ll need to provide something like a code texted to your phone.
-
Use lots of long, unique and truly random passwords.
-
Since random passwords are hard to memorize, use a password manager.
-
For the master password on your password manager and any others you wish to remember, use a string of random words as a passphrase. This is far easier for our chattering monkey brains to memorize than 16 random characters.