You'd assume that a device as sensitive as a hardware security key would get extensive testing from the vendor, from 3rd parties contracted to the vendor, and from random unauthorized 3rd parties testing out of personal or public interest.<p>But in fact there are almost certainly commercial hardware security keys that receive <i>no testing at all</i> at the level AGL is working at --- which, while impressive and super interesting, isn't as low-level as serious third party specialized crypto validation goes.<p>My takeaway from this is: buy the most popular U2F key (which happens to be Yubico's). This isn't a place where you want to shop around for interesting alternative brands.<p>Nobody pays me to say this and I have no relationship with Yubico of any sort.
Related (but slightly OT) question: has anyone ran into any issues when using either 1) a single Yubikey for both U2F and SSH authentication or 2) multiple Yubikeys simultaneously on the same machine (i.e., one for U2F, one for SSH)?<p>For SSH authentication, I use Yubikeys (and only Yubikeys) everywhere: my workstation at home (I WFH 99% of the time), my primary laptop, and a "backup" laptop. Each of these machines has its own "dedicated" Yubikey that I use to authenticate to remote SSH servers (a "Nano" that is left plugged in 24/7). I also use these (with challenge/response) to unlock encrypted LUKS volumes (containing ZFS pools) at boot, FWIW.<p>I would like to begin using U2F (AFAICT, U2F support should be coming to Firefox soon, if it hasn't already; running FF57 Developer Edition here), preferably with these same Yubikeys I am already using for SSH. If there are any issues, however, I'm fine with using a separate Yubikey just for the U2F side of things (I have a few U2F-only Yubikeys laying around as well).<p>Basically, I want it to be as easy/convenient as possible and, before I begin to attempt this, I'm just curious if anyone else is already doing this and, if so, what their experiences were and any issues they may have encountered. In theory, it should all just work but, in reality, well, who knows. TIA!
A while back I looked into building my own hardware two factor key. I wanted to experiment with the technology. I've since backed off the idea due to several serious challenges with designing secure hardware for this purpose.<p>* By necessity there's a pretty large attack surface, you've likely got a vendor specific bluetooth stack and coprocessor. The same goes for wired solutions with hardware USB peripherals (though atleast significantly less complex). Being sure the hardware peripheral doesn't have any major memory safety issues is a complete bear to test, and that's not even touching on sidechannel analysis.<p>* Running public key crypto on microcontroller (excluding specific hardware crypto support) is a little more novel than a desktop machine, the leading libraries are no where near as extensively battle tested. And there's architectural concerns about sidechannel attacks and often the lack of any memory protection units (bigger chips solve these issues, but power budget concerns are tricky).<p>* And given all software has bugs, how do you update the firmware? Signed firmware patches as part of driver update? Who's to say somebody hasn't already owned your bootloader.<p>I think the solution to all this, is to abandon the idea of additional hardware, what if your smartphone could act as a two factor hardware token over Bluetooth? The big problem is pairing really, and how to make this an easy process for users, I never figured that out. On the other hand I did come up with a scheme that would allow usb based hardware tokens to work without additional drivers / software and on all current major operating systems and browsers. I really ought to work on it, but as above I don't trust embedded hardware (embedded hardware is such an antithesis to, move fast and break things).
I'd be very interested to see the author review how the cryptocurrency hardware wallets Ledger[0] and Trezor[1] compare - they also have U2F functionality. I use my hardware wallet for U2F and I am guessing they are becoming more widely used for consumer users.<p>[0]: <a href="https://www.ledgerwallet.com/" rel="nofollow">https://www.ledgerwallet.com/</a><p>[1]: <a href="https://trezor.io/" rel="nofollow">https://trezor.io/</a>
I'd really like to buy a U2F token, but need to find one that let's me use it mobile (Android) as well as on desktop.<p>I know that Yubico offers an NFC-enabled on, but it doesn't support 4096-bit keys if I understand correctly.
FIDO U2F is just enterprise stuff. My mom will never own one to log in to Facebook. So the market is very difficult for newcomers. That's why we see lots of low quality products which come and go.