U2F is the old standard, it is only meant be used as a second factor.
WebAuthn is the new standard, it has different modes for usage as a second factor, first factor and single factor (usernameless). Only the usernameless mode requires state on the client side.
Usernameless strikes me as the holy grail of authentication, where we don't need to remember any usernames or passwords (or even have them), but I haven't seen any websites that support usernameless authentication, other than demo ones and my own.
If you want to see what a usernameless flow looks like, you can visit https://www.deadmansswitch.net/. You have to log in with an email link first, and then associate your FIDO2 credential with it. You don't need a hardware key, for example on phones you can use your fingerprint reader and it will work fine.
The problem with hardware keys, and which is not mentioned anywhere, is that because usernameless requires storage on the key, Yubikeys only support a maximum of 25 sites you can authenticate with.
In order to further my goal of some day ditching password managers, I also made a Django library for usernameless logins which you can use today on your Django sites:
> Your security key can't be used with this site
> www.deadmansswitch.net may require a newer or different kind of security key
This is with a Yubico Security Key 2 which I thought supported FIDO2.
Disclaimer I have two Yubico keys, and two Solokeys and they all work for me, but I don't need the extra functionality of the more expensive Yubico keys.
You have to keep in mind that attackers want passwords to get access to some resource,not to just collect your password. Evem with a yubikey, an attacker can still get access to session/auth cookies post authentication to get access to a desired resource.
If the cost makes sense to you, they are the best way to do it,but if not there is no shame in other sane factors of authentication like TOTP or software attested webauthn.
I would restate what you said and say FIDO2 and/or WebAuthn need to be ubiqutous. It should be easy for some random guy working on ASP.NET site or something to support them.
right now even if you have it ,you can login to a handful of sites and that's it. For companies,they need to do SSO for everything with a yubi if they go that route.
Aside from the bad form factor (nope, usb "top" isn't necessarily device "top"), it really requires a conscious effort to use them.
That said, theoretically they are awesome.
Auth needs to be able to be decoupled from phones. With the OnlyKey, I've stored the important TOTP keys as well like my email as well as password for my password manager. Being as 'dumb' as they are, I've had it go through the wash still working fine.
https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A...
> Dynamic linking is possible through the generation of authentication codes which is subject to a set of strict security requirements. To remain technologically neutral a specific technology for the implementation of authentication codes should not be required. Therefore authentication codes should be based on solutions such as generating and validating one-time passwords, digital signatures or other cryptographically underpinned validity assertions using keys or cryptographic material stored in the authentication elements, as long as the security requirements are fulfilled.
My bank (Swedbank Latvia) used this regulation as a pretext for removing authentication via passwords + code cards. They didn't do too well on the "technologically neutral" part though – you now have to use proprietary software or hardware to authenticate :-/
I’ve been working on my own saas app to handle authentication for any app using the web authentication framework.
hoping we start seeing more options to login using only hardware (plus pin to be extra safe) on all websites.
Hopefully we'll see even more products -and thus user adoption- of fido2/webauthn.
If anyone is reading, has a hardware project and would like to add fido2 functionality, please reach out!
[1] https://shop.nitrokey.com/shop/product/nitrokey-fido2-55
[2] https://www.crowdsupply.com/nth-dimension/signet-high-capaci...
[3] https://crp.to/2019/10/onlykey-beta8-release-announcement/
[4] https://github.com/solokeys/solo/pull/344
[5] https://medium.com/solokeyssec/solokeys-achieves-fido2-certi...
The one thing I'd love out of a security key is the ability to set up a "Twinned Pair". So I can have one key on my keychain that I use everyday and one I keep in my safe in case something happens to the primary. Yes, I know some services support multiple security keys - but setting up two is more work and not all services do support two.
I have two Yubikeys, one in a safe and one on my person. It saved my butt when I lost access to the one on my person for a few days!
While perhaps not as slick as yubikey, I do have several solo keys and they're great. Only real complaint is I wasn't able to get the NFC working, which I believe is a common issue, and I think they were working on an updated design that should work more widely with a range of devices.
The most basic attack and test is to verify and/or reduce the entropy of secret symmetrical (AES) keys in the SE after personalization.
The challenge with hardware security modules is verifying outputs from the same keys but on different devices, because the key is derived/instantiated in the secure tamper proof environment. The whole point is the key doesn't exist anywhere else.
If your threat model includes the intelligence agencies of super powers, your main problem is more diplomatic than technical.
Dropbox is also an early adopter.
Plus you have all the u2f that are back compat, including facebook, twitter, aws, gitlab... (I may have confuse some u2f that already moved to webauthn, if so, sorry).
Considering that webauthn was standardized last March and that ios still has no in-app support, that’s a pretty good start, I think.
U2F was explicitly designed only as a second factor. ("Universal 2nd Factor") but WebAuthn is not.
Even with U2F you could (it wasn't recommended) just not actually have passwords. Use their second factor as your only factor. In this scenario the user needs to provide their username (email address, whatever you're using) because their FIDO token doesn't know who they are either -- it needs to be presented with a cookie [which it gave the site when the user registered to use this FIDO token], and you've probably got a database table mapping users to cookies and public keys.
In FIDO2 the token is capable of handling resident credentials. No cookie, resident credentials are permanently inside the token itself.
The massive downside of this is that obviously the token has finite storage for such credentials, a Yubikey can store 25. Whereas for ordinary FIDO (all the WebAuthn deployments I've seen outside Microsoft) there's no practical limit.
The upside is that since the token has your credentials it can now do the entire sign-in, no need for even a username so the login flow is much nicer.
Of course while convenient on its own that's arguably worse security - if a bad guy steals your token they're in without even knowing your username, much like the proximity card badges often used for site access. So the fix is that a FIDO2 token in this mode can be (usually will be) set to require a PIN or some other factor. This seems like we're back to passwords again, but it's different because the extra factor is local to your device. Bad guys can't steal PINs from devices in bulk or brute force them, they need to steal your FIDO2 token and then brute force that somehow.
Also Dropbox, Salesforce, Gandi, Namecheap, and a couple cryptocurrency exchanges, according to https://www.dongleauth.info.
- Bitwarden (password manager)
- Dropbox
- Gitlab
- Github
- Nextcloud
The GIDS login for our sysadmin worked wonderfully, but the downside is the reader.