John Burroughs’ Post

View profile for John Burroughs, graphic

Software/services architect and development manager.

I'm writing a password generator, in that many of my passwords haven't been changed in ages. So let's talk a moment about security. You may as well assume that an attacker knows my system, or has guessed it. Maybe there are ten possible systems, or 100, and the attacker tries them all. My system therefore is only secure if disclosing its details would not compromise it. Okay, here it is. I have a list of 1000 words. Got it by downloading the Scrabble word list and cherrypicking ones that I liked. Assume that my word list is public. Passwords are seven words long. Each word starts with a capital letter, and "35%" is appended to the end to satisfy 'strong password' requirements. Now I have lg(1000)*7=70 bits of entropy. That is, 1000^7 possible passwords with no preference within that set. That's why it would be okay for an attacker to know my word list, and the system for password construction. For every word, I have to choose at random from the list. Really at random, and that's harder than it sounds. I do it with dice. Yeah, the old polyhedral d20 to the rescue. Three tosses of a d10 and I have a 1000x choice that you cannot crack. This does not scale. But whatever - I don't need millions of passwords. All the attacks that get me to type a password into a compromised site are still valid. But none of the attacks based on cracking a downloaded database are. Oops, that assumes the site at the other end does things right. Essentially, they need to store the hash value of my password and not the password itself. Any site storing raw passwords needs to be taken out back. How did I arrive at 'seven words long'? Well, that's questionable. With a 1000-word dictionary, that's 70 bits of entropy. If an attacker can analyze a certain number of trials per second, and is willing to wait perhaps 1 year for a result, then how many bits of entropy do I need? Every time I add a word to the pasword length, I multiply the cracking time by 1000. Hey, why am I using words at all? Simple number sequences would produce entropy just fine, and are easy to type. That's a possibility. Replace every word from my list with 3 decimal digits and you have the equivalent security. I think that's harder to work with. Easier to mistype, for instance. The scheme's not original, in that I couldn't patent it. I heard this approach somewhere, somewhen. And it's fairly obvious once you start thinking about how to defend against crackers. But here it is.

To view or add a comment, sign in

Explore topics