4 ms·
Haddock seems like a brilliant way to generate passwords with a great memorability to length ratio, but it's not clear to me that they have a great memorability
by pingswept 18y ago
Haddock seems like a brilliant way to generate passwords with a great memorability to length ratio, but it's not clear to me that they have a great memorability to security ratio.
Haddock uses the UNIX wordlist with a known algorithm for password generation: words = %W(#{random_word} #{random_symbol}#{random_word}) if I'm reading the source right. It seems like it's reducing the search space drastically for a gain in memorability that is difficult to quantify. Might be a win, but might be a loss.
But I don't really know this stuff so well-- any real crypto folks care to comment?
- stephencelis 18y agoThis first version is really just a quick emulation of Apple's version. There are a few simple security improvements that could be made without reducing memorability too much (dropping vowels, toggling case, swapping vowels for numbers that resemble them, randomizing where the symbol comes in, and perhaps making the number of symbols variable, as well), all of which I may put into the next version. In the end, though, these passwords should be "secure enough" for most purposes, and should be generally more secure than the password of your average user. Using haddock to generate temporary passwords will hopefully just encourage users to be better about passwords in general.
- pingswept 18y agoYeah, a good point. For a lot of web services, the security doesn't need to be all that good. Also, it may be that giving users memorable passwords beats letting them make their own, whereupon many of them choose weak ones.
- RossM 18y agoI'm no security guru but with a little sensibility on the website itself could lessen the security risk from dictionary attacks. If you allow 3 login attempts before requiring a captcha, or set a maximum number of attempts per hour, giving your users more memorable passwords shouldn't be too much of a risk.
- stephencelis 18y agoA very good point, though I would encourage something closer to 25 or 100 login attempts. Don't punish clumsy users for having a secure password, but prevent brute-forces by all means.
- nx 18y ago25 or 100? First attempt: quick typing, conscious mistake. Second attempt: quick typing, wrong password again. Third attempt: okay, I'll type it in carefully now. Wrong password. Fourth attempt: oh, yes, that was my Yahoo! password. Remembers password and enters it cautiously, because he/she knows that he has a maximum of 5 login attempts. Five are enough for me. Or at most 10. 100 seem ridiculous. How often does it happen that you mistype your password 99 times and get it right on the one-hundredth, before you're tired of being shown the "wrong password" message and click the "forgot password" link?
- stephencelis 18y agoI'm only suggesting an implementation that is transparent for the user. 10 would probably be just fine, but 25 would be closer to an impossible situation without significantly increasing the odds of a successful attack.
- nx 18y agoYes, that's the best way to prevent account hijacking, in my opinion. Or block the IP for 30 minutes after 5 failed logins, that renders any dictionary attack terribly inefficient.
- eru 18y agoBetter to switch to a captcha. Banning might provoke DoS attacks.
- deleted 18y ago[deleted]
- nx 18y agoIt is reducing the search space drastically: Word (about 30% of the total length, and might be capitalized) + number (15%) + symbol (1 character) + word (50%). The search space for a length n is: 2 x 26^(n/3) x 10^(n/6) x 30 x 26^(n/2) = 60 x 26^(5/6 x n) x 10^(n/6) = 60 x 10^(5/6 x n x log10(26)) x 10^(n/6) =~ 6 x 10^(1.17914n) x 10^(0.16666n) = 6 x 10^(1.34581n) So that's about a 6 followed by 1.5n zeroes of search space for length n, approximately. Using only 100 characters of the ASCII code tables, you have a search space of 10^(2n) possible passwords, which is about n/2 orders of magnitude larger than Haddock's search space. Disclaimer: I'm a HS student, no crypto folk, so the above might be wrong, but it's basic combinatorial stuff. And that's just theory, in practice, with just "password1", "letmein" and "123456" for a dictionary attack, you can hack into like 3% of the accounts of a site that doesn't use Haddock. Edit: Oh, I didn't even think of this: THE WORDS ARE ALL VALID ENGLISH WORDS! That makes hacking in a lot easier.