Generating Short, Memorable, and Secure Passwords
Passphrases are the state-of-the-art when it comes to generating passwords that are both secure and memorable. But they have a downside: they're annoying to type. If you're going to be entering a password frequently, you may prefer to minimize the number of characters in the password at the cost of taking a little more effort to remember.
It's not that much effort. People regularly memorize dozens or hundreds of digits of pi for fun, and a password is trivial compared to that. To get the optimal balance between entropy and memorizability, we can follow a few rules:
- No special characters. Read the letters "CRNFRL" out loud, then close your eyes and repeat them. You're already memorized them! Now try that with "@/^!$&". We just don't use special characters nearly as often as letters, so our brain isn't as used to working with them.
- Same problem for uppercase vs. lowercase. While "a" and "A" are totally different characters as far as a computer is concerned, to a human they're variants of the same letter, and it's harder to remember the variation than the base letter. (Plus, sticking to digits and lowercase letters means we only ever have to press one key per character.)
- Omit "0", "7", and "w". Not all humans have an internal monologue, but for those of us who do, memorization of a string takes place on a syllable-by-syllable basis, making these three characters particularly annoying.
- Lastly, let the user assemble their own passwords from short random chunks. We're pretty good at coming up with stories and patterns to match what we see; a random jumble like "uflaq3b" can be turned into a mental story like "The University of Florida lacks 3 bees". Not to mention that pronouncable jumbles like "dimgu" are better than unpronouncable ones like "ckxky". Rather than try to make the password generator create strings with such properties, we can let the user pick small chunks that they find memorable, and combine them together.
Generator
Click on the chunks that you find memorable until you have a password of sufficient strength.
If this password is for a security-focused service that uses slow hashing algorithms and key-stretching, like a master password for a decent password manager, 25 bits is likely sufficient.
If you're paranoid and want to be safe from someone with significant resources who's targeting you personally, you'll need more like 70 or 50, respectivly.
Your password:
Bits of entropy: