Late Meditations on XKCD 936
insideofthebox.tumblr.com
insideofthebox.tumblr.com
- We have browserside certificates. Granted they're not sexy.
- We have logins by email tokens. After all, that's how to do password recovery anyway, so why not promoting password recovery to the normal login?
- We could have thousand kinds of SIM or USB passwords, such as YubiKey, which would have features like, you only auth while it's in the slot.
Instead the last gov website I've used to declare my payroll employees takes the birth date as the default password. And so many others accept my mother's maiden name as an authentifying proof.
How did we get there?
Emailing a login token to a user every time they want to log in requires that their email is working and that they can get to their email, and would slow down the login process. It would waste everyone's time. I think it only makes sense as an additional authentication measure for high security applications where logging in at a moment's notice is not a necessity.
Yubikey is okay for one or two sites if you have one[1]. They cost money, and serve no purpose other than improving security of logins. Compare to a smartphone running a TOTP app. Most people already have a handheld device, and a TOTP app and setup for a website is a free one-time install with one-time setup and no ongoing overhead. It also doesn't require working email or even working internet, which doesn't matter in the typical case but matters a lot in edge cases. Email might be down. SMS might be down. You might not have cell coverage at all.
[1] Yubikey only has two slots, and so you can't store unique OATH seeds for more than two sites, right? How many yubikeys do you expect people to carry around? How many sites even implement HOTP rather than TOTP? If every site implementing 2FA implemented challenge/response for yubikey, then yubikey would be great. However, TOTP is the dominant form of 2FA, and that limits the usefulness of yubikey.
Still, I'd like devices to be able to ask my cell phone for authorizations (maybe with a complicated enough UI that the cell phone can limit the valid time of the auth).
That's an example of good security with a bad UI. It's an order of magnitude better than passwords. But history didn't make them sexy and it's too late to start.
In Luxembourg, I had a little hard-printed card with 52 letters. At each login to my bank, I would be asked for 3 of them, plus my password. With this kind of extremely-cheap-and-portable token, I would dare to login even from an untrusted country. Because I never have to type the full 52 letters.
That's only for email. Every other service relies on email security.
The problem is, it's the provider (fb, gmail, ...) who chooses how their authenticate you. I wish a system like Mozilla Persona would gain traction (looking at you Gmail), because it would trigger innovation. There are a lot of better alternatives to passwords and SMS for 2FAs.
Because passwords qua passwords are not the problem. The security skill of the median person is. I honestly don't know how to secure people in general, even making the blindingly optimistic assumption of perfectly secure authentication code.
2FA has the problem that to work properly, you must also print off one-time-use reset tokens and properly keep them. (If you can just reset via an email, well, you've just returned back to auth-by-email-account and the second factor is of dubious utility.) Specialized hardware is problematic because it really ought to be open to be secure, but if it's open, it's hard to make the profit enough to make it work... and users would still have to do something to properly prepare for losing their token which is going to be nontrivial.
(Login by email tokens, BTW, is not a great idea in general; obtaining an email account fraudulently should not grant you access to everything the user has. That's a problem with the current system, not the solution.)
Not possible to blame the people, here's why:
- You can't remember 50 different passwords for each site you're on,
- You can't use password templates because hackers have pattern-matching attacks,
- You can't rely on password managers. Imagine one piece of software that a million people have, which provides access to all their banks and mail and websites? How much is the bug bounty for 1Password? I'll give you the formula: risk occurrence x cost of a leak per user x number of users. That's a hell lot of 0's. Should the bug bounty be under that, it's worth selling your bug to the pirates.
Passwords should have been thrown away in 2005.
It's not blaming the people. That's an entirely different mindset. This mindset is, we have to solve the problem that actually exists, with people that actually exist, with technologies that actually exist.
Further, you read something other than what I wrote. I said that I don't know how to secure people, at all. Explaining why passwords don't work is evidence in my favor, not a reason why I'm wrong. The problem is, it's not as simple as just "throwing away passwords", you have to actually have a solution. After year of people chewing on the problem online and various solutions actually being deployed, I'm not convinced one exists.
It's easy to snipe at deployed technologies and talk about how much better the ones that exist only in your head work. However, the track record on manifesting them is pretty dubious. Those of us with enough technology skills to use things like 2FA are sitting prettier than ever, but frankly we were already the ones that tended to be secure. The evidence that we've successfully pushed this out into the real world is pretty lacking. We can't even get website developers to stop requiring us to use 4-digit pins as passwords on our banking sites.
Oh, and a shining example of good mobile fingerprint reader UX. Soon...
By ignoring human nature and geeking out about the technical side of things? It doesn't matter how technically advanced and theoretically secure an auth solution is. If it has certain kinds of usability problems it will never be willingly adopted by large number of common people. I think to move forward with security we (engineers) need to simply accept this as a fact, and stop bitching about supposed user stupidity.
Pass phrases do nothing to help you manage unique passwords for every site and then expire them when necessary.
Sure pass phrases are great for encrypting your password database, but they are not a substitute for password management.
These people need to be publicly named and shamed, they're deliberately putting their users at risk.
If someone maintained a database of products and how they interfered with the use of a password manager or good password hygiene and there was a way to get off the naughty list then that would be great, but that is a lot more work.
$ cat `which xkcdpass`
#!/bin/sh
perl -MCrypt::XkcdPassword -E 'say Crypt::XkcdPassword->make_password for 1 .. 10' sort -R /usr/share/dict/words | head -n 4 shuf -n 4 /usr/share/dict/words
Somewhat more seriously, Diceware works pretty well too as a low-tech, high-quality password generation method: http://world.std.com/~reinhold/diceware.html
(My only complaint is that a lot of words in the standard wordlist are pretty obscure.)we wrote this one at my company. It uses your mouse movements as a seed for the random number generator.
This style of concocting passphrases (chain dictionary words together) as a whole has a low Kolmogorov complexity, and can easily be imported by attackers through wordlist mangling or using some advanced software features, such as Hashcat's combinator attack.
Finally, humans are fallible. They'll always go for certain predictable combinations, and certain permutations will be more widespread among those.
If an attacker has any suspicion you're using the XKCD algorithm literally, it's trivial for them to make a move.
The expected entropy is derived from "correct horse battery staple", including the spaces, using NIST SP 800-63.
So yeah maybe it is implicit in the comic, but the math is backed by a specific set of assumption on how the words were selected. Or I could be wrong, I haven't verified it personally.
First character is 4 bits: c = 4
The next 7 chars are 2 bits/each: "orrect " = 14
Characters 9-20 are 1.5 bit/each: "horse batter" = 18
Charactes 21-n are 1 bit/each: "y staple" = 8
No bonus for including both upper and non-alpha chars.
No bonus for passwords of length less than 20 chars, not containing dictionary words, because the password is longer than 20 characters.
Total entropy: 4 + 14 + 18 + 8 = 44 bits of entropy.
The NIST entropy estimation is based off of characters that aren't chosen at random (I think?) and it is a heuristic.
For the approach I think Randall intended to describe they aren't really words, just glyphs chosen randomly from a set of glyphs. That these glyphs are easy to memorize and drop right into existing password interfaces is orthogonal.
And pass phrases will tend away from words like perspicacious.
Maybe the author just didn't think of Kolmogorov complexity and thought it was a good idea.
The other message is: stop posting XKCD #936 for the bazillionth time, you assholes.
If it helps, don't think of the words as words, but instead as random numbers. It just so happens that these random numbers are presented in a form that's easier to remember. And 4 random numbers between 0 and 2048 cannot be easily guessed.
What I do is the following:
I have a function that reliably converts the name of a service -> some string, easy to compute in the brain
passwords are salt + f(service)
where salt is a strong string of characters for critical services (financial, personal info, etc)
and a weak string of characters for stuff i don't care about.
Even so, you can bet that for things I really care about that are difficult to reverse (such as, like, say a bitcoin wallet) I'm not going to use this scheme.
Edit: Although the original xkcd was specifically complaining about silly practices that arbitrarily restrict the xkcd scheme.
Face book
a common occurance with narcolepsy
Twitter said the robin, from the obnoxious flock
Hacker News Read all about it - people angry at programming featurePasswords are horrible. I can't wait for the day when we have 2FA with something like a Yubikey (but better) and a short password.
Words can be blended into a single impression or narrative for easy memorization, and giving the user the ability to order them to support that narrative will greatly improve usability. (Besides, if you're consistent, your muscle memory will work just fine.)
I don't know if this is the answer, but I like where the author is going. I like the way PG approaches these things: will we be remembering ridiculous combinations like r@bb1t24 in 50 years? Somehow I doubt it.