3 ms·
One of the greatest problem with login systems currently is not the entropy but the min-entropy [1] of the passwords. This random keyword approach greatly reduc
by darkmighty 12y ago
One of the greatest problem with login systems currently is not the entropy but the min-entropy [1] of the passwords. This random keyword approach greatly reduces this main threat so I'd say It's an acceptable tradeoff to have entropy for your average user and have a reliable system as you suggested.
I don't think your parity method works for error recovery (it would probably work if it were a lot more complicated). If you store words are 10-bit values, each bit is independent from the other. Let's assume if a user makes a mistake the mistaken word value is uncorrelated with the true one. Then parity will only allow error detection, and your method of assuming erasures will simply generate N different correct word hypotheses.
Interestingly, if you don't need permutation reliability (I don't think you'd need it anyway, people create meaning associating the words in the given order), you could use an ECC to achieve M-out-of-N passphrase securely, allowing both erasure and error correction!
For example, with 4096 words, you could do 6-out-of-8 words with two errors (or 5-out-of-8 with erasures) by splitting the words in 4 3-bit groups and using a GF(8) Reed-Solomon [2] error correction ([8,5,4] code). The resulting system would have 5*12 = 60 bits of min-entropy. There's plenty of room to present some 8 choices of combinations to users and let them pick one, leaving 57 bits.
[1] http://en.wikipedia.org/wiki/R%C3%A9nyi_entropy#Min-entropy http://en.wikipedia.org/wiki/R%C3%A9nyi_entropy#Min-entropy
[2] http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_corr...
- twotwotwo 12y agoGetting to this late, but if I hear you right, generating a set of hypotheses was exactly what I was trying for with the parity. If you see a, say, 6-word input where the parity doesn't work out, you "erase" each of the six words and replace it with the parity of the other words, and check if the result is the user's password. It'd mean the user(/attacker) could make you do a 6 hash checks each time they tried to log in, so it'd cost you ~13 bits of security not just 10. And, yes, min-entropy is a really helpful concept here. Captures well that nobody's password is a good crypto key, but at the same time it deals with the attacks trying the really common overused passwords on a lot of accounts. Very cool that you could tolerate 2 errs/3 erasures and still have 60 bits with ECC if you trade off ordering. ECC and coding theory is one of those areas where I wish I had slightly more CS education so I could do more than just gawk at its power.