With the recent flaw (though very small flaw) in 1Password, I decided to do a little research into the tools that password crackers use today. The first big tool is the cracker itself. John The Ripper and HashCat are 2 popular ones today, but I've focused my reading on hashcat.<p>Hashcat is a tool who's goal is to do various hashing functions as fast as possible in both CPU and GPU (depending on what the user has available). Where the tool gets interesting is the attack modes[1] it has. Each of the attack methods has different use cases, but I would say Rule-based and table-lookup are both fairly interesting (allow for smart generating of test passwords so things it's not a full character set brute-force).<p>Now, you have other groups that are going out and doing analysis on database password leaks[2]. This site tries to crack as many passwords as it can from publically leaked password databases (such as Gawker ane EHarmony), then do an analysis of the passwords they have cracked thus far. People can then use this data to write rules for Hashcat or other tools to possibly crack passwords a lot faster.<p>As rules for passwords change and people change their password habits, the crackers will adjust their methods. While this article does bring out some interesting points about passwords, it can still be good to know what tools the crackers have at their disposal so you can think about how to craft a password that won't be easily cracked.<p>[1] <a href="http://hashcat.net/wiki/#attack_modes" rel="nofollow">http://hashcat.net/wiki/#attack_modes</a><p>[2] <a href="http://www.adeptus-mechanicus.com/codex/hashpass/hashpass.php" rel="nofollow">http://www.adeptus-mechanicus.com/codex/hashpass/hashpass.ph...</a>
A myth I'd like to dispel is that when login fails <i>not telling whether username or password was wrong</i> improves anything.<p>Please <i>do</i> tell clearly when username was wrong. It won't disclose anything new, because you're already disclosing this information by validating registration form (and reg form will even disclose existence of registered e-mails by forbidding duplicate registration), existence of profile URLs, all kind of "add a friend" APIs, etc.<p>If you're really concerned about somebody compiling list of usernames by brute force (and you've patched all other places where you disclose it) then put rate limiting on the login form (you should have it anyway to prevent brute forcing of passwords).
Saying that using random words is better than using a string of unrelated characters assumes that password crackers don't know how to combine words.<p>There are about 180000 words in English (but don't assume everybody knows 180000 words). That means that for three words, you have at most 5.8<i>10^15 options.<p>For a password with mixed case and numbers, you have 62 different characters. With, 9 characters, you have 1.3</i>10^16 options.<p>I can understand that people would prefer common words to remember them, but they are not that much stronger.<p>The best password is the password I don't need to remember: generate long random passwords, and store them in your browser, in Keepass, LastPass or whatever system of your choice.
I'd say jjjjjjjjjjjjjjjjjjjjjjjjjjjj, from a human-interpetation standpoint, has very low entropy, since there is very little uncertainty as to what will come next... This would be evident if password security checkers tried to compress passwords and compare them to the original message.<p>i.e. "jjjjjjjjjjjjjjjjjjjjjjjjjjjj" is 224 bits as a string. Huffman-encoded, you only need 0=j as a code to convert it into 28 bits, a compression of 87.5%. So this is a good way of actually checking the security of a password, if it <i>seems</i> to have high entropy.
>Simply put, adding length increases entropy more efficiently than replacing letters with symbols.<p>I don't like this meme. Because it's not necessarily "more efficient." Like most things, it depends. If I have a password made of 10 lowercase characters, it's much better to replace with an upper case character rather than add another lower case one.<p>Option 1) Add a lower case character. Password is <i>26</i> times stronger.<p>Option 2) Replace 1 upper with 1 lower case character. Password is <i>1024</i> times stronger.
This is a bit of a fluff piece, isn't it? All five points are "true", to some degree, but not when you consider the details.<p>Take point #4:<p>> "4. MYTH: Two-Factor Auth Means Any Password Will Do"
>
> <i>This is absolutely not a dismissal of multi-factor auth. Use it when it’s available! Two factor is on the Stormpath roadmap, and we use it for many backend systems. Just don’t consider it a substitute for strong passwords.</i><p>The example that the OP blithely cites is Cloudflare's incident in 2012, when CloudFlare's CEO explained how his GMail account got compromised despite activating 2-factor authentication. However, if you actually click through the post, you see that CloudFlare's problem had nothing to do with a weak password, but a flaw in AT&T's authentication procedures which allowed a hacker to bypass GMail's password/auth requirement with a little social engineering. It had nothing to do with the CF CEO's password, which he says was strong and 20-characters long. In his case, it wouldn't matter if the password was 8 characters long and a dictionary word, if 2-factor auth worked as it was supposed to.<p><a href="http://blog.cloudflare.com/post-mortem-todays-attack-apparent-google-app" rel="nofollow">http://blog.cloudflare.com/post-mortem-todays-attack-apparen...</a><p>And that's kind of the whole dilemma of security, isn't it? That certain maxims ("Your password should be x characters long and contain y different kinds of characters") do not universally apply, and that the implementation of security protocols is extremely important into understanding your potential to be hacked. The OP's mythbusting is somewhat counter-productive here.
Fist myth is that passwords provide security. The human brain is crappy rng so it cannot create proper high entropy passwords. No way getting around that - whatever your password is if it is "derived" from something - someone else is using it too.<p>The only viable security I can think of is if we have distributed public key infrastructure. Bitcoin style wallets. And securing the "PK wallets" is up to the end user. Persona is close I think - so if the app fad/insanity finally dies we will be on a good track.
<i>Complexity Trumps Length</i><p>Question for the smarter people out there. If everyone started using passwords like "donkey computer watch" would this mean that this format would then be much easier to crack as opposed to xy7*hdkSD<p>Security is a bit of game theory right?
With advice like this seemingly contradicting other seemingly sound advice and the debate taking place here at HN it's no wonder regular people (and geeks) have trouble deciding what is and isn't a secure password.
I like how Myth 1 tells us long passwords are better than complex passwords then Myth 3 complains that Microsoft rate the long but non-complex password "jjjjjjjjjjjjjjjjjjjjjjjjjjj" highly