Decius: I was skeptical about this cartoon at first but after doing a lot of back of the napkin calculations I endorse this idea. BUT, you MUST use four words, and the stranger the word the better.
See also, from 2007, A Secure In-Browser JavaScript Password Generator, (*) referenced on the Cryptography list thread about this comic. Can you explain your advice that "the stranger the word the better" in the context of this password generation scheme? To my mind, if you follow it to its logical conclusion, you end up with this: 1. Make a list of all the words in the dictionary. 2. Sort the list in descending order of strangeness, such that the "strangest" word in the dictionary is at the top of the list. 3. Select the first four words on the list. These are the strangest words you could possibly choose. The problem is that everyone has the same password! Is there an objective function for measuring the strangeness of a word? One option is inverse frequency across a large corpus in the target language. Even if you relax the constraints a bit -- say, by using a slightly different objective function -- you're still reducing strength when you eliminate dog-sky-house-job from the space of possible passwords. My advice is to have a trusted computing base choose four words randomly, without being biased by the relative frequency of words in the target language. The average person is probably not very good at unbiased recall of random words from the dictionary. For starters, I'm unlikely to recall a word I've never seen before. Among words I've seen, the probability of recalling a given word will be correlated with the frequency of that term within a large corpus. I'll apply a conscious filter to suppress the most obvious words that come to mind, but I'm still far more likely to recall words from the high-frequency end of the spectrum. (*) The dictionary in this demonstration has 13k words, and dog, sky, house, and job are all included. If the dictionary is public, then swapping 'job' for 'jawbone' accomplishes nothing. If the dictionary is itself a secret, then filling your dictionary with 13k obscure words may add a few bits of entropy, if the adversary has to brute-force using a bigger dictionary of, say, 52k words. Of course, now you have a (relatively) huge secret to protect, in addition to your password. |