This isn’t strictly a privacy question as a security one, so I’m asking this in the context of individuals, not organizations.
I currently use OTP 2FA everywhere I can, though some services I use support hardware security keys like the Yubikey. Getting a hardware key may be slightly more convenient since I wouldn’t need to type anything in but could just press a button, but there’s added risk with losing the key (I can easily backup OTP configs).
Do any of you use hardware security keys? If so, do you have a good argument in favor or against specific keys? (e.g. Yubikey, Nitrokey, etc)
I have used them and they can give good security but most everyone these days uses phone apps. From an organizational perspective you might use tokens to make it harder for your staff to exfiltrate keys by rooting their phones. For an individual, carrying a FIDO token is potentially more convenient and private than carrying a phone, but the ease of pressing a button vs typing 6 digits isn’t that big a deal unless you do it constantly.
I guess there is another virtue, if you’re using the phone itself as a login device, with a password manager accessible from the phone. In that case, a 2fa app on the same phone is no longer truly a second factor. A token fixes that. I have a to-do item of setting up my phone to use a token to unlock the TOTP app. So that wouldn’t eliminate typing 6 digits. It would just make the TOTP app use real 2FA.
I am very confused what you mean that a phone doesn’t count as a 2nd factor.
Your password is factor one.
An OTP is factor 2, whether it is on a phone or a yubikey makes literally 0 difference practically. It is a “something you have”.
If you need biometric unlock to get into your 2fa app or on the yubikey itself, that is a 3rd factor of “something you are.”
If you are very worried about someone compromising your phone app and already knowing your password, (which is not how 99% of intrusions are done) then put a pin or fingerprint on your 2FA app and it is back to being a secure 2nd factor.
The probability of someone breaking into your phone, hacking your bitwarden password, and having a fingerprint exploit that allows them to break into your 2FA app is like 1 in 1 billion unless you are like top 1000 most important people in the world. But as a thought exercise, a dongle indeed has the potential to be more secure because it is an additional “something you have” to your phone.
The idea is that your passwords are stored on the phone. You want a separate long random password for each account, so it’s unfeasible to remember them. It’s also a big pain to type every one such password on a screen keyboard. Thus, the password and the phone are the same factor.
I have avoided having important passwords on my phone because of this, but some people use their phones more heavily than I do. My more important accounts are only accessed via my laptop, using a TOTP phone app as 2nd factor. I rarely take the laptop out of the house.
But this is only the case if you store your passwords in a plaintext file on your phone. Something that I hope nobody would be dumb enough to do, but I guess many people would.
If you have an encrypted password manager like Bitwarden or so where you have a single long password to open and get at your other long secure passwords, then it is essentially a different factor than your phone, right? Since having the phone unlocked would do nothing to help the attacker get to your password vault.
If you don’t mind, maybe you can answer this question for me. I finally jumped on the Yubikey train recently, added a couple accounts, no problem. But then I noticed apparently I can connect my key to any random install of the authenticator app on any device, and it will show the accounts I have protected with that key.
To me, this means if I lose my key someone can learn a fair bit about who owned that key just from looking at the accounts on their own phone when they find it on the street. Now someone knows I have the account myname@someemailprovider.com (among others) when they didn’t know that before. Etc.
I have googled unsuccessfully to find out if for some reason this is less of a problem than I feel like it is, or if it can be masked somehow, but my keyword choices must have been poor.
Do you have any opinion on this? I googled specifically if it would allow you to set a PIN to unmask that info or similar, but the PIN articles I found seemed to relate to something else.
I’m unfamiliar with how Yubikey works but I thought the FIDO2 protocol was designed to prevent that sort of association. Anyway it doesn’t sound good. Cryptographer’s saying (by Silvio Micali): “A good disguise should not reveal the person’s height”.
Oh yeah it clearly seems a bad idea to me, which is why I’m assuming error on my part. 100% though I took an unrelated phone, installed the yubico app, slapped my nfc yubikey up to it, and could see my accounts listed.
Oh I misunderstood what you were describing but yeah, it doesn’t sound good. It sounds like the key is supposed to be an SSO credential for multiple phones? Maybe there’s a way to set it up differently. You might ask their support.
I probably described it poorly.
It’s nothing that exotic. I use it as MFA for a few different accounts as I assume anyone who has one does. :)
Using one easy example, I have myname@anemailprovideryou’veheardof.com set up and I can clearly see “myname@anemailprovideryouveheardof.com” as a linked account on my yubikey on any device. I can’t do anything with it, but I see my username in the format shown above, and the one time code counting down.
I don’t actually know why I haven’t gone to their support - hadn’t thought about it for awhile until reading this thread, so that’s a good suggestion and will do.
I think y’all are talking about different things. Some sites (like google) have direct yubikey support where you plug the key into the device and what you’re talking about isn’t an issue
Other sites don’t have direct support, but allow you to use any authenticator app which is what you’re talking about with using the yubico authenticator app/key combination. Plugging it into a yubico authenticator app on any device will show the codes
Unfortunately I don’t have an answer for a way to protect those other accounts. I guess the hope is that if you lose it, it can’t be tied to your accounts, just the websites themselves
Yeah it would be preferable IMHO if you had to enroll a newly installed app with username and password in addition to the key.
Would a passcode (different from phone, of course) or biometric unlock for the 2FA app count? For example, I have bitwarden and Aegis, both have fingerprint unlock when opened with a reasonably short timeout. So, even if my phone pin was compromised, both would still require biometric unlock to access.
Fingerprint might count though I’ve considered fingerprint sensors to be a bit dubious. There was a famous incident in Germany(?) where some government muckymuck called for fingerprint based biometrics in a panel discussion at a security conference. Someone nabbed his water glass afterwards, lifted his fingerprints from it, and fooled a fingerprint reader. You can also duplicate your own fingerprints with Elmer’s glue. Just spread it on your fingertip, let it dry, and peel it off.
Password to unlock the totp app might count. Auth methods include knowledge such as passwords, objects such as tokens, and physical characteristics like fingerprints. 2fa means one thing from each of two categories. So the phone with the app and stored password is one factor, and the memorized app password is the second. But, remembering and entering complex passwords is a pain, and a lockout in the app for too many wrong passwords is a DOS vector (in the event that you get your phone back after such an attack). So it sounds annoying, idk.
I guess you might already have a similar lock on your whole phone anyway, so another one on the app might be redundant.
Right, so fingerprint on everything wouldn’t be the best practice, because it’s all in one category and everything can be unlocked by a compromise of that one thing.
That’s a good point. I might look at removing that from my totp app and using a passcode instead.
Yeah and if your fingerprint is compromised, you can’t update it.
I worry most about the phone, since they get stolen all the time and they are full of software vulnerabilities. For my own phone I’m hoping to use a token to unlock. So that’s two objects from one category but the token should be harder to steal, if the thief even knows about it.
I expect high security stuff like banking ops is done only from on-premises terminals and not from someone’s phone. I will try to ask my buddies in that field.
Physical location can be an auth factor too: you could have a token permanently installed at your desk, so it activated only when you are there.
You will probably like the book “Security Engineering” by Ross Anderson if you’re not already familiar with it. PDFs of the full 2nd edition and part of the 3rd are here:
https://www.cl.cam.ac.uk/~rja14/book.html