There are all kinds of password strength meters on the Internet and for what most of them do, they’re pretty good. However, nearly all of them assume a brute force attack where the algorithm has to try all possible combinations of characters. In the real world, hackers have learned to use rainbow tables and pattern-matching as their first attempts; the first thing they usually try, of course, is a systematic dictionary attack. This is usually sufficient to guess anywhere from 20 – 50 percent of passwords on a given site. We all know to avoid dictionary words, our names, etc., but what about other password practices that may be risky, assuming all of us use some sort of mnemonic or pattern to remember passwords?
I came across a nifty site called PassFault, a project sponsored by The Open Web Application Security Project (OWASP). It has a nifty application you can use to test passwords: “Passfault evaluates the strength of passwords accurately enough to predict the time to crack. It makes creating passwords and password policies significantly more intuitive and simple.” What I found most interesting is the types of patterns Passfault looks for and how it is done:
Passfault identifies patterns in a password, then calculates the number of passwords that could exist in those patterns. This is the measurement of password complexity. It is more academic and much more accurate than existing password analysis tools.
According to the site, you want to avoid these patterns:
- Dictionary Word Insertion – putting random characters in between letters in a dictionary word
- Dictionary Word Substitution – substituting letters with random characters
- Dictionary Word Misspelling – “werd” instead of “word,” for example
- Dictionary Leet Substitution – 137m31n (letmein)
- Dictionary Word Backwards – “drow” instead of “word”
- Repeated Pattern – 123123123
- Random Latin & Cyrillic Characters – PasЛуни, or PasΦΘo®d
- Horizontal, Diagonal & Repeated Key Sequences – asdf, cgybfe, rrrrr, etc.
I decided to test some of this by intentionally violating the guidelines and generally playing around. Note that the tool gives you some options of what kind of cracking hardware and password protection you can specify. I just used the defaults of “a $900 password cracker” and “Unix SHA1-based Crypt.” Here are the results in time to crack:
- antidisestablishmentarianism – less than 1 day
- 137M31n – less than 1 day
- Password…….. – less than 1 day
- …password… – less than 1 day, but a weird result in that it said “Repeated – Russian”
- %^password^% – 1 day
- %^wordpass^% – 2 months, 4 days
- passwordwordpass – 1 year, 8 months
- %^word^%pass!! – 2 centuries, three decades
- Wo&rd – less than 1 day
- Wo&rdw*rd – 2 months
- Wo&rdw*rdwerd – 13 centuries
- Wo&rdw*rdwerd1337 – 450,556 centuries
- Wo&rdw*rdwerd1337drow – 7,788,860,117 centuries
- [21 random keyboard characters] – 3.74068l0448019244e+21 centuries
Conclusion: it’s a fun tool to play with, but no Earth-shattering revelations here. Longer is better and mix it up. Steve Gibson’s Password Haystacks, which presents the concept of password padding, is still the most recent innovation in password theory.