Choosing Random Passwords

My mom's web site was just hacked, replaced with a virus-spewing redirect. How? They guessed her password (which was "ladybug") then changed it on her. She should have picked a long random password, like "xkh9czixb3".

How do you remember dozens of passwords like "xkh9czixb3"? You can't. Write them down. For each, write down what it's for, what the username is, and what the password is. Preferably on two separate pieces of paper, in case one gets lost. Be sure you can read your handwriting. You don't get any security against people who can read the paper that way, but at least you have security against everyone who can't. It also prevents you from forgetting a site's password, then typing in every password you know trying to guess what it was. Another possibility (besides paper) is to store your passwords encrypted on your computer. I haven't looked into this much. Password Safe is one tool for doing this.

How do you pick a really random password?

If a password is required to use characters that are just letters and numbers, case insensitive, then a character can be chosen by a pair of dice and the table below. For example, if I roll a 5 and a 2, I look up "52 z" in the table, which tells me to add the character "z" to my password. Be careful to shake the dice well between each roll. Be careful not to sort the numbers before reading them.

11 a12 b13 c 14 d15 e16 f
21 g22 h23 i 24 j25 k26 l
31 m32 n33 o 34 p35 q36 r
41 s42 t43 u 44 v45 w46 x
51 y52 z53 0 54 155 256 3
61 462 563 6 64 765 866 9

If a password is case sensitive and may contain funny characters, well, I recommend avoiding the funny characters. Why? For example: I recently changed my HostSave password to */!@a3'". The password changer accepted that. However, when I tried to log on, it wouldn't let me. It let me ask what my password was, so I asked. */!@a3'", it said. I tried it again and it wouldn't let me log on. So I had to write customer support and have them change my password to something that worked. Their site has changed recently, it's more thorough about explaining its password restrictions, but it still gives no clue why my password didn't work. (Then I switched to PowWeb because they, unlike HostSave, do online spam filtering. Now I only have to download 12 messages a day instead of 300.) (Hostsave should not be able to tell me my password, because they shouldn't be storing it. Yikes. They should store just a hash of my password.)

So. Suppose a password is case sensitive and may contain funny characters. You can choose the characters, one at a time, by flipping 6 coins per character. Line up the coins before reading them. I included * and ! because I know HostSave accepts those, but you may wish to use other funny characters, or even just reflip the coins if they say to use a funny character.

HHHHHH 0HHHHHT 1HHHHTH 2HHHHTT 3 HHHTHH 4HHHTHT 5HHHTTH 6HHHTTT 7
HHTHHH 8HHTHHT 9HHTHTH aHHTHTT b HHTTHH cHHTTHT dHHTTTH eHHTTTT f
HTHHHH gHTHHHT hHTHHTH iHTHHTT j HTHTHH kHTHTHT lHTHTTH mHTHTTT n
HTTHHH oHTTHHT pHTTHTH qHTTHTT r HTTTHH sHTTTHT tHTTTTH uHTTTTT v
THHHHH wTHHHHT xTHHHTH yTHHHTT z THHTHH ATHHTHT BTHHTTH CTHHTTT D
THTHHH ETHTHHT FTHTHTH GTHTHTT H THTTHH ITHTTHT JTHTTTH KTHTTTT L
TTHHHH MTTHHHT NTTHHTH OTTHHTT P TTHTHH QTTHTHT RTTHTTH STTHTTT T
TTTHHH UTTTHHT VTTTHTH WTTTHTT X TTTTHH YTTTTHT ZTTTTTH *TTTTTT !

How good is your password? This question really is, how long does an attacker have to work to guess your password? Trying 100,000 passwords (for example all English words and names) takes a few seconds of computing time. Let's say 1 second per 50,000 passwords. So guessing a password that is an English word (like "ladybug") can be done in 2 seconds. Here's a table of how good a random password is:

lengthdigits + lowercase letters digits + lower + upper + two symbols
possibilitiestime possibilitiestime
1 character360 seconds 640 seconds
2 characters1,2960 seconds 4,0960.1 seconds
3 characters46,6561 second 262,1445 seconds
4 characters1,679,61634 second 16,777,2166 minutes
5 characters60,466,17620 minutes 1.074x1095.9 hours
6 characters2.176x10912 hours 6.872x101016 days
7 characters7.836x101018 days 4.398x10122.78 years
8 characters2.821x10122 years 2.815x1014178 years
9 characters1.016x101464 years 1.801x101611,416 years
10 characters3.656x10152,317 years 1.153x1018730,678 years

Now you can see something I couldn't quite explain before. If you pick passwords you can remember (short, with lowercase letters and maybe a number thrown in), your password is guaranteed to be easy to guess. If you want more than a week of computing time worth of security, memorizing passwords isn't going to cut it. Especially if you have to change them regularly. Another thing: if you can help it, never use an alphanumeric password shorter than 8 characters.

On the other hand, if you gear your passwords to be breakable in a week, you can break them yourself if you ever have to. Most hackers are willing to take any account, not just yours, and will go on to easier targets if your password takes more than five minutes of computing time to break. Here is a page giving the hacker's perspective on passwords.