What's the risk from fake Yubikeys?
shkspr.mobi
shkspr.mobi
In theory this is enough to prove it's genuine because they are supposed to be tamper-proof, i.e even if you buy indirectly or it's intercepted in transit.
The only thing I can see this failing to detect is an intermediate layer that intercepts USB and has access to the physical button... e.g If an attacker embedded a genuine small form-factor key into a larger package that mimics a larger form factor. This would be useful to an attacker which could get a target to trust the key, believe it's genuine and start associating it with services, and then be able to remotely activate it once they have gained the users trust... still a tough challenge to pack all of that with wifi etc into a small enough package with a micro yubikey or something inside.
I don't think this is a very realistic possibility currently, but if you are concerned, you could simply buy the smallest possible yubikey form factor.
And as far as I understand he's now describing his methods there rather than particular attempts?
Choosing a random new key invalidates all your existing credentials enrolled with that Yubikey, since your Yubikey will no longer be able to decrypt the identifier provided and sign proof that it knows the associated private key (in practice what it decrypted was your private key for that account, and now it can't do that)
This "reset" operation is supported on Yubikeys, and you perhaps should do it when you get the key (Don't do it now! It invalidates your credentials as I described!), although most users probably don't. However, even if you do this if your key is fake why would the initialisation actually work? The same adversary could modify it to just ignore this reset attempt and use a symmetric key they know. So there is no benefit from hypothetically requiring you to perform this initialisation step, nor from having the device do it when first used.
Hiding such symmetric keys (typically AES) from adversaries with fairly large budgets who have physical access to your device is already a thing. Would I bet my life on it if I was Edward Snowden? Maybe not. Am I comfortable with this for securing a bank account with my life savings in it? Yes.
Another potential attack (for those who use them to store keys created on another device), would be to have a way, for an attacker that would steal your (fake) Yubikey, to get back the secret key (which is normally impossible/hard on a genuine Yubikey).
Doesn't even have to stored securely if it is protected with a strong passphrase. You can keep it anywhere. ... and with contemporary versions of GPG that might only have to be 4 diceware words.
For PGP stuff, the advantage of something like a Yubikey is that the unencrypted private key is never exposed to a possibly insecure end device. The actual cryptography is done on the Yubikey. This is a somewhat different situation than with other uses where the Yubikey only protects the secret information.
That means the key has existed in RAM, which largely defeats the point of it being HW based.
The point of HW based is that no matter what, if a key is not connected then it is not used to auth. If it requires touch then all the hackers in china cannot auth using it, without getting on a plane and breaking in.
You should have a backup hardware device, and for GPG subkeys or something.
I have a set of dead Yubikey 4s that are blacklisted from GitHub because the onboard key generation code generated insecure keys (nevermind that I didn't use that feature, but wygd).
If you need to be able to recover from a destroyed key, you should either (a) repeat your initial trust process, or (b) prematurely attest to a second key using your first one.
As tomxor said elsewhere here, though, batch attestation allows you or relying parties to check that the key is a “real” Yubico key.
I wonder where it would make sense though?
To be clear: Things you can do with FIDO2 include:
* Just a "second factor". The authenticator has no memory of who it is, RPs (Relying Parties, e.g. web sites) basically provide prompts, which they derive from looking up a username you entered. The RP says if this is tialaramex, you'll recognise this arbitrary ID you gave me when enrolling and sign this freshness proof. The authenticator checks if it recognises the ID and if so retrieves the private key and signs the message, voila.
* "Passwordless". The authenticator is behaving the same, but now the RP is only taking a username first, there may be no second factor. This is more secure than most passwords today, but is only a single factor.
* "Usernameless". The authenticator now needs to remember every RP it has enrolled with, because the RP won't prompt it. Given the name of an RP (e.g. "news.ycombinator.com" the authenticator needs to replay the ID it gave when enrolling, and sign a freshness proof "I'm still, uh, tialaramex apparently".
In a corporate environment, or perhaps banking, you can insist (via a thing called "Attestation") that the authenticator provides proof it is a real authenticator made by, e.g. Yubico and based on that claim trust it to do multi-factor authentication itself.
Yubico's cheaper products do PIN auth, so you touch the sensor and type in say, "MyFuckingSecret" as PIN, the PIN is not sent to the Relying Party, they just get a message saying "Here's proof I'm that Yubico Yubikey which enrolled, and I say this is still the same human who enrolled me, I checked using a method my vendor says is suitable".
Yubico's most expensive product, and the Google Pixel series, and some iPhones, use a fingerprint as their additional factor. Again though, the authenticator just says "I promise I checked, this is who made me, trust or don't" it doesn't send fingerprints anywhere.
1. WebAuthn (current spec) is also implemented by Android, iOS macOS and Windows 10/11 (natively); that makes your device a possible "passwordless factor holder". You then essentially tie your authentication with your device passcode and/or biometric ID, similar to what a password manager would do, except there's no password to steal.
2. YubiKey BIO supports biometric authentication (I presume with on-board fingerprint verification) to use the device's keys. So it's essentially a biometric-protected private key.
3. IIRC some hardware crypto wallets can act as WebAuthn devices and display the website domain when asking you to touch it. Maybe they support passcode protection?
4. Even if you were to use a "raw" WebAuthn key stored on your computer (on TPM, Secure Enclave, or even filesystem) -- if you protect it with a password, you essentially have pubkey authentication with a second factor of password.
So if this isn't a risk ("it's useless") then doesn't that automatically imply that there are no benefits of using a Yubikey?
edit: To add, this comment is in reply to the final question of the article "What's the worst thing that can be done with a compromised Yubikey?".
My answer being, the risk would be that you think you are using 2FA but you "aren't".
Any attack on 2FA requires the same attacker to compromise your password and your physical device. If one adversary phishes your password and someone else finds the YubiKey you dropped on the train, you're almost certainly still OK. You need to ask whether there's a reasonable threat model where the same guy gets your password and also gets you to use his own fake key.
The article started from an event happening at a conference. I haven't been at many, but I assume: 1) at some you have a badge identifying you; 2) even if you don't, depending on who you are, it could be easy to identify you from other sources. At that point, if your identity is revealed and you're using the fake token, you're no longer using 2FA. This is not the same as "some guy finding your lost token on a train", unless, of course, that person saw you losing it and knows who you are, but even then - if you lose your token, you wouldn't/shouldn't keep using your spare...
I mean, if you get a notification from HIBP that some password has been compromised on some account, I assume you'd change it, you wouldn't just go "meh, I have 2FA, why bother". Why would you ever keep on using a (potentially) fake Yubikey?
>A cloned device might let an attacker have a duplicate key. But that's useless unless they also have your username and password.
That even in case there is a cloned device, it's not an issue because you still have your password.
And for enterprises that want to make sure people enroll with genuine keys (as they sometimes also use these keys as physical access tokens), they can already use the factory-set OTP slot (the one with the cc instead of vv code) to check if a token is actually from Yubico.
Yubikeys on the other hand are split into old ones that did have smartcard functionality unlocked so you could upload your applets into and newer ones which are locked. Locked ones are only marginally easier to tamper with than proper smartcards, nearly impossible to be worth it for anyone than state actors.
If you have any proof of it happening anywhere, then show me a source. Closest I have is this https://ninjalab.io/wp-content/uploads/2021/01/a_side_journe..., which is about Google Titan aka reskinned FEITIAN ePass NFC with some functionality turned off
If it can send arbitrary keystrokes, it's not just a "way in" (trying to download malicious software): it's also a way to exfiltrate the data (for example keylogged inputs) it collected.
As for being fairly obvious to the user: what about waiting for command+t (or whatever the command is) plus something looking a website to be typed, then wait for 4 minutes of user inactivity (no keyboard input, no mouse input) before sneakily opening a tab and quickly closing it? Sure, some user may notice it but many won't for after 4 minutes of inactivity they won't be looking at their screen (and the screensaver won't have kicked in already).
A USB HID device cannot listen on what other keyboards typed, except for NumLock/CapsLock/ScreenLock indicator.
Windows users in particular have been conditioned to not react to evil things like autoplay when inserting USB devices. "Don't mind me, I'm just installing drivers". I've seen USB headphones (!) launch programs on first insert. By the time you click "cancel", any number of things could have happened.
It’s obviously a risk factor and one that should be considered - especially if you consider a targeted attack against a particular person.
One laptop contains more e-waste than dozens (hundreds?) of Yubikeys, so there's much lower hanging fruit on that tree.
I'd break the OnlyKey within a few weeks.
Yubikeys are exceptionally bad targets to intercept and modify if someone wants to send you an implant. It's more likely they'll get you with the next mass storage device or data cable you buy on Amazon.
The other features like using it to store PGP keys are a bit more fiddly to set going and you may need to read instructions specific to FreeBSD for those.
What’s the point of a hardware key then, if email also works?
It also helps I don't do anything that would be on their radar crime-wise, at least compared to the general populus.
But also don't put steel bars on my windows, sleep with a gun under my pillow, or put ring security cameras around my house.
It's all about threat modeling.
Can someone compare these?
https://www.buybitcoinworldwide.com/dongle-auth/dongles/
Personally:
- NFC Yubico with my car keys. I can't remember ever using NFC to authenticate directly on mobile, but I like having a hardware backup for time-based one-time password (TOTP) codes. (Google Authenticator / Android)
- Tiny Solos (Somu[1]) live in my keyboard, laptop ports for "touch to login" (universal 2nd factor, U2F). - Open hardware a plus. Pre-order fundraising is 100% legit. Hotplug works well in Debian. - Original Solo was a bit loose in a USB-A port. It was tricky to press the button without pins losing contact.
- Pixelbook power button can act as U2F, which is neat.
[1] https://solokeys.com/products/somu-tiny-security-key-two-fac...
My most cited paper was used by the original BitCoin paper, so I can attempt to listen to a security argument. I have yet to hear anyone justify external USB key security when computers have security chips. I also follow the progress in provably correct programming; saying we're too stupid to allow the computer to handle it isn't a compelling argument. Write some provably correct secure code for this!
I would so love to see Duo and YubiKey go out of business. However, if they had been more respectful of my time, I wouldn't have this thought.
My college and university both require multifactor authentication for logins required by my daily work. They have chosen Duo Two Factor Authentication, preferring that I find my phone and launch Duo's app for each login. YubiKeys are supported as an alternative. I have a YubiKey in each of five machines; I'm no more willing to move around a single YubiKey than I am willing to find my phone.
Duo's implementation requires numerous extraneous mouse clicks. They don't autodetect if a registered YubiKey is already present. Rather, they present a global default choice of YubiKey, and force a click for the dialog that supports then tapping a YubiKey. If one doesn't change the selection, one gets an error message that the YubiKey isn't registered, when it is; it's there on the original menu. Duo doesn't accept direct user feedback, further ingratiating me with my IT department when I file reports about this.
I'm starting to feel that this is all deliberate obfuscation, to draw attention away from having to tap the YubiKey, which is security theater a company like Apple cold put out of business in a heartbeat. I'd go to prison for life for kidnapping, but when a corporation dilutes this same harm, stealing five seconds each daily from many users, it gets excused as incompetence. The kind of incompetence Steve Jobs would never tolerate if he were alive.
Most people are extraordinarily clumsy with computers, expecting random mouse work. I embrace agility tasks while cooking, but I take extreme umbrage at this clumsy interface being forced on me every day. My first memory of school was a student teacher leaving the classroom in tears after I taught half the class to play Simon Says backwards. I didn't take the time to customize QMK firmware for my keyboards, only to have some CEO I've never met force me to play Simon Says.
If one wanted to automate tapping a YubiKey, it just needs a connection to ground while it flashes, which would be a cute Arduino-class project.