Why aren't PGP and SSH keys popular as a second factor for authentication?
security.stackexchange.com
security.stackexchange.com
The main reason is a (maybe not on HN) little known scenario where the user has SSH key forwarding enabled, and the host they SSH to takes that forwarded identity and uses it to, say, fetch your private repos on github and the like.
https://news.ycombinator.com/item?id=9425805
https://www.reddit.com/r/netsec/comments/3frnxb/my_ssh_serve...
I'd have _no problems at all_ signing a pgp message the likes of "I'm proving I am myself, and that you requested me to sign also with token QIMdoV76LIvymGvTxXEB8LkIIqfM4nEm5W"
But in both cases, you can have a single published key you can use to sign the site-specific shared keys.
Or an interactive key selection on the command-line? With a 'Remember my choice' option. These could be relatively easy UI enhancements for a command-line SSH agent.
You then must maintain different agents, one for each distinct set of keys you want to use. The ssh-ident package helps do this.
Or, you must insert a filter proxy between the real agent and the ssh client. The ssh-agent-filter package helps do this.
The key question for all of these solutions is usability.
If you meant some other notion of 'client certificates', that's called a password manager.
I assume by Web API you meant some functionality hook exposed in the browser which the website/webapp can access, like WebRTC [1], or web workers and others [2][3].
The sort of API you entertain would be useful for application-level authentication, but from the perspective of the end-user, it would fulfill a similar purpose to password managers. Bootstrapping this identity to contain useful data is the biggest issue. There is a similar proposal by security researcher Steve Gibson called SQRL [4], which sends a site-specific public key to a website generated from a master key the app keeps. This scheme is pretty good but it's designed to mint uncorrelatable, anonymous identities, so you're not 'jdc' at HN and other places, but [RANDOM STRING] at HN, and [DIFFERENT RANDOM STRING] at some other site.
I am, however, curious how you'd envision a web app would hook into such an API, and what functionality it would offer.
[1] https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API [2] https://docs.webplatform.org/wiki/apis#List_of_all_APIs [3] https://developer.mozilla.org/en-US/docs/WebAPI [4] https://www.grc.com/sqrl/sqrl.htm
Check out http://telehash.org
Though, amusingly enough, you could use a Google Voice number and there was no limit to the number of accounts one number could activate (at least not that I noticed).
1 http://timesofindia.indiatimes.com/tech/tech-news/Google-Yah...
ot. I guess you are downvoted because the element of truth in your comment (e.g. 2FA is data collection) hit some nerve. Just yesterday a similar 'questioning 2FA panacea' comment was downvoted, even though it was just arguing about the security aspects.
If you lose your phone you call your carrier to block that sim card and request a new one anyway, so you're not locked out.
About my previous reply, that is if I recall correctly, I remember being able to cancel numbers of lost phones providing the number and the name of the owner (in this case, one time I lost my number, other times my dad lost his')
https://www.grc.com/sqrl/sqrl.htm
Read the "What happened behind the scenes" box for the details. I think it's pretty clever.
Presumably similar apps available for Android Wear and Apple Watch, but those are too smart for my tastes.
1: https://play.google.com/store/apps/details?id=com.mufri.authenticatorplus&hl=enEDIT: RSA SecurID[0]
Here's the famous Blizzard authenticator in the manufacturer's original branding [2], from a competitor. There are others like this.
[1] https://en.wikipedia.org/wiki/Time-based_One-time_Password_A... [2] https://www.vasco.com/products/two-factor-authenticators/har...
But in the event our phone was stolen, it can get pretty tough to recover some accounts once you've set up 2fa. If it's not, then there's really no point in having 2fa on the account at all.
EDIT: Also of note, If you don't have a second device, a yubi key will store all the codes on the key. So any phone/laptop with the yubico auth app will be able to show the codes if you wanted to use that for a backup.
But yeah, I think there are probably a variety of 2fa nightmares that we'll only start encountering/discovering in the near futre, some amount of time after 2fa reached critical mass.
Paper codes are the same as having a second device with TOTP, you probably won't carry them with you everywhere (both should be an offsite backup).
There was a window to make this stuff standard 20 years ago and we, as technologists, totally whiffed on it.
The "these are not web technologies" quip at StackExchange made me cringe for some reason. As if this has anything to do with web protocols.
For the sordid history: https://en.wikipedia.org/wiki/Pretty_Good_Privacy
For yet another sadly ignored, co-opted, would-be-standard: https://tools.ietf.org/html/rfc4880
If you look at things like WhatsApp and iMessage, they give you the same kind of security in a completely transparent way. And I believe Whisper/WhatsApp also give you a cool way to verify keys in person (I believe they use QR codes?)
So public key crypto is here, and it's widespread. It's just not in the form of PGP, and that's because of the UX shortcomings of PGP.
On a side note, Keybase really is awesome – I have setup keybase and am hopeful for it, but I feel even in that case, if you try to do PGP, it feels a bit odd.
Unfortunately, it can't really be fixed with UX, IMHO. I think we need to learn from Open PGP and design something that doesn't make people's heads (even programmers) explode.
I know the keybase devs lurk around here.
Is there perhaps a way to use the Signal Protocol instead of PGP?
Note: Keybase with with their own PGP implementation. Idk what its security is going to be like. I see why they'd use tech that's had years of auditing and attacks, though.