Universal 2nd Factor

Universal 2nd Factor (U2F) is an open standard that strengthens and simplifies two-factor authentication (2FA) using specialized Universal Serial Bus (USB), near-field communication (NFC), or Bluetooth Low Energy (BLE) devices based on similar security technology found in smart cards.[1][2][3][4][5] It is succeeded by the FIDO2 Project, which includes the W3C Web Authentication (WebAuthn) standard and the FIDO Alliance's Client to Authenticator Protocol 2 (CTAP2).[6]

While initially developed by Google and Yubico, with contribution from NXP Semiconductors, the standard is now hosted by the FIDO Alliance.[7][8]

Advantages and disadvantages

While time-based one-time password (TOTPs) (e.g. 6-digit codes generated on Google Authenticator) were a significant improvement over SMS-based security codes, a number of security vulnerabilities were still possible to exploit, which U2F sought to improve. Specifically:

Comparison of security issues between TOTP and U2F
Issue TOTP U2F
Shared secret
  • Plaintext or QR code transmission of shared secret between server and user
  • Shared secret may be stored in plaintext on server
  • Transmission of public key challenge / response
  • Private key only stored on user hardware device
Man-in-the-middle attack
  • Plaintext code response vulnerable to interception and MITM attack if user has been phished by malicious website
  • Challenge / response is signed (encoding originating domain/website) to prevent interception and reuse
Convenience / eavesdropping
  • Plaintext code is displayed and typed by user manually, visually
  • Prone to mistyping, error
  • Transmission / creation of authentication code is via USB or NFC between hardware key and computer without manual typing steps

In terms of disadvantages, one significant difference and potential drawback to be considered regarding hardware-based U2F solutions is that unlike with TOTP shared-secret methods, there is no possibility of "backing up" recovery codes or shared secrets. If a hardware duplicate or alternative hardware key is not kept and the original U2F hardware key is lost, no recovery of the key is possible (because the private key exists only in hardware). Therefore, for services that do not provide any alternative account recovery method, the use of U2F should be carefully considered.

Design

The USB devices communicate with the host computer using the human interface device (HID) protocol, essentially mimicking a keyboard.[9] This avoids the need for the user to install special hardware driver software in the host computer and permits application software (such as a browser) to directly access the security features of the device without user effort other than possessing and inserting the device. Once communication is established, the application exercises a challenge–response authentication with the device using public-key cryptography methods and a secret unique device key manufactured into the device.[10]

Vulnerabilities

The device key is vulnerable to malicious manufacturer duplication.[11]

In 2020, independent security researchers found a method to extract private keys from Google Titan Key, a popular U2F hardware security token.[12][13][14] The method required physical access to the key for several hours, several thousand euros-worth of equipment, and was destructive to the plastic case of the key.[12][13][14] The attackers concluded that the difficulty of the attack meant that people were still safer to use the keys than not.[12][13][14] The attack was possible due to a vulnerability in the A700X microchip made by NXP Semiconductors, which is also used in security tokens made by Feitian and Yubico, meaning that those tokens are also vulnerable.[12][15] The vulnerability was responsibly disclosed to the affected manufacturers so that it might be fixed in future products.[12][13][14]

Support and use

U2F security keys are supported by Google Chrome since version 38,[2] Firefox since version 57[16] and Opera since version 40. U2F security keys can be used as an additional method of two-step verification on online services that support the U2F protocol, including Google,[2] Azure,[17] Dropbox,[18] GitHub,[19] GitLab,[20] Bitbucket,[21] Nextcloud,[22] Facebook,[23] and others.[24]

Chrome, Firefox, and Opera were, as of 2015, the only browsers supporting U2F natively. Microsoft has enabled FIDO 2.0 support for Windows 10's Windows Hello login platform.[25] Microsoft Edge[26] browser gained support for U2F in the October 2018 Windows Update. Microsoft accounts, including Office 365, OneDrive, and other Microsoft services, do not yet have U2F support. Mozilla has integrated it into Firefox 57, and enabled it by default in Firefox 60[27][28][29][30] and Thunderbird 60.[31] Microsoft Edge starting from build 17723 support FIDO2.[32] As of iOS and iPadOS 13.3 Apple now supports U2F in the Safari browser on those platforms.

Specifications

The evolution of the U2F protocol standard

The U2F standard has undergone two major revisions:

  • U2F 1.0 Proposed Standard (October 9, 2014)[33]
  • U2F 1.2 Proposed Standard (April 11, 2017)[34]

Additional specification documents may be obtained from the FIDO web site.[35]

The U2F 1.0 Proposed Standard (October 9, 2014) was the starting point for a short-lived specification known as the FIDO 2.0 Proposed Standard (September 4, 2015). The latter was formally submitted to the World Wide Web Consortium (W3C) on November 12, 2015.[36] Subsequently, the first Working Draft of the W3C Web Authentication (WebAuthn) standard was published on May 31, 2016. The WebAuthn standard has been revised numerous times since then, becoming a W3C Recommendation on March 4, 2019.

Meanwhile the U2F 1.2 Proposed Standard (April 11, 2017) became the starting point for the Client to Authenticator Protocol (CTAP) Proposed Standard, which was published on September 27, 2017. FIDO CTAP complements W3C WebAuthn, both of which are in scope for the FIDO2 Project.

WebAuthn and CTAP provide a complete replacement for U2F, which has been renamed "CTAP1" in the latest version of the FIDO2 standard.[37] The WebAuthn protocol is backward-compatible (via the AppID extension) with U2F-only security keys[38] but the U2F protocol is not compatible with a WebAuthn-only authenticator.[39][37] Some authenticators support both U2F and WebAuthn while some WebAuthn clients support keys created via the legacy U2F API.

References

  1. ^ Turner, Adam (November 5, 2014). "Google security keys may offer extra layer of online protection". The Sydney Morning Herald. Fairfax Media. Archived from the original on January 15, 2015. Retrieved November 28, 2014.
  2. ^ a b c "What browsers support U2F?". Yubico. Archived from the original on August 18, 2017. Retrieved August 17, 2017.
  3. ^ Bradley, Tony (October 21, 2014). "How a USB key drive could remove the hassles from two-factor authentication". PCWorld. IDG Consumer & SMB. Archived from the original on November 12, 2020. Retrieved November 28, 2014.
  4. ^ "FIDO Universal 2nd Factor". Yubico AB. Archived from the original on March 19, 2016. Retrieved November 28, 2014.
  5. ^ Diallo, Amadou (November 30, 2013). "Google Wants To Make Your Passwords Obsolete". Forbes. Archived from the original on August 18, 2017. Retrieved November 28, 2014.
  6. ^ "An In-Depth Guide to FIDO Protocols: U2F, UAF, and WebAuthn (FIDO2)". Archived from the original on April 22, 2021. Retrieved March 9, 2021.
  7. ^ "FIDO Alliance – download specifications". FIDO Alliance. December 23, 2014. Archived from the original on September 24, 2018. Retrieved October 19, 2017.
  8. ^ Krebs, Brian (October 14, 2014). "Google Accounts Now Support Security Keys". Krebs on Security. Archived from the original on January 21, 2021. Retrieved November 28, 2014.
  9. ^ "FIDO U2F HID Protocol Specification". FIDO Alliance. October 9, 2014. Archived from the original on July 25, 2018. Retrieved July 24, 2018.
  10. ^ "Key generation". Yubico. Archived from the original on August 1, 2018. Retrieved July 31, 2018.
  11. ^ "Making identical U2F hardware security keys". June 27, 2024.
  12. ^ a b c d e "Hackers can clone Google Titan 2FA keys using a side channel in NXP chips". January 8, 2021. Archived from the original on January 27, 2025. Retrieved January 13, 2021.
  13. ^ a b c d Cimpanu, Catalin (January 8, 2021). "New side-channel attack can recover encryption keys from Google Titan security keys". ZDNet. Archived from the original on January 13, 2021. Retrieved January 13, 2021.
  14. ^ a b c d "Researchers Show Google's Titan Security Keys Can Be Cloned". SecurityWeek. January 11, 2021. Retrieved January 13, 2021.
  15. ^ "Google Titan security keys hacked by French researchers". Naked Security. Archived from the original on January 12, 2021. Retrieved January 13, 2021.
  16. ^ J.C. Jones (April 4, 2019). "Backward-Compatibility FIDO U2F support shipping soon in Firefox". Mozilla Security Blog.
  17. ^ "Passwordless authentication options for Azure Active Directory". Archived from the original on April 14, 2021. Retrieved April 14, 2021.
  18. ^ Heim, Patrick; Patel, Jay (August 12, 2015). "Introducing U2F support for secure authentication". Dropbox Blog. Archived from the original on November 8, 2020. Retrieved August 12, 2015.
  19. ^ Olsen, Risk (October 1, 2015). "GitHub supports Universal 2nd Factor authentication". github.com/blog. GitHub. Archived from the original on July 17, 2017. Retrieved October 1, 2015.
  20. ^ Nwaigwe, Amara (June 22, 2016). "Support for Universal 2nd Factor Authentication". GitLab Blog. Archived from the original on May 31, 2019. Retrieved July 9, 2016.
  21. ^ Kells, TJ (June 22, 2016). "Universal 2nd Factor (U2F) now supported in Bitbucket Cloud". Bitbucket Blog. Archived from the original on August 8, 2018. Retrieved June 22, 2016.
  22. ^ "Nextcloud 11 sets new standard for security and scalability". Nextcloud. December 13, 2016. Archived from the original on May 21, 2019. Retrieved December 23, 2016.
  23. ^ "Security Key for safer logins with a touch". Facebook. Archived from the original on April 16, 2021. Retrieved January 27, 2017.
  24. ^ "USB-Dongle Authentication". Josh Davis. Archived from the original on January 23, 2023. Retrieved January 23, 2023.
  25. ^ Ingalls, Dustin (February 13, 2015). "Microsoft Announces FIDO Support Coming to Windows 10". Windows Blog. Archived from the original on October 4, 2015. Retrieved October 3, 2015.
  26. ^ "Microsoft Edge now supports passwordless sign-ins". Engadget. Archived from the original on October 5, 2018. Retrieved October 4, 2018.
  27. ^ "Firefox 57 has native support for U2F". Mozilla. Archived from the original on June 22, 2018. Retrieved November 1, 2017.
  28. ^ "U2F Support Addon". Archived from the original on November 2, 2018. Retrieved May 8, 2016.
  29. ^ "Firefox Nightly enables support for FIDO U2F Security Keys". Yubico blog. September 22, 2017. Archived from the original on September 27, 2017. Retrieved September 27, 2017.
  30. ^ "Firefox 60.0 release notes". Archived from the original on May 9, 2018. Retrieved May 11, 2018.
  31. ^ "Thunderbird 60.0 release notes". Archived from the original on June 22, 2018. Retrieved June 22, 2018.
  32. ^ "Introducing Web Authentication in Microsoft Edge — Microsoft Edge Dev BlogMicrosoft Edge Dev Blog". blogs.windows.com. July 30, 2018. Archived from the original on August 3, 2018. Retrieved August 3, 2018.
  33. ^ "FIDO U2F V1.0 Proposed Standard 2014-10-09". FIDO Alliance. October 9, 2014. Archived from the original on May 3, 2019. Retrieved May 3, 2019.
  34. ^ "FIDO U2F V1.2 Proposed Standard 2017-04-11". FIDO Alliance. April 11, 2017. Archived from the original on May 3, 2019. Retrieved May 3, 2019.
  35. ^ "Download Specifications". FIDO Alliance. December 23, 2014. Archived from the original on May 11, 2023. Retrieved February 13, 2019.
  36. ^ "Submission Request to W3C: FIDO 2.0 Platform Specifications 1.0". World Wide Web Consortium. Retrieved February 12, 2019.
  37. ^ a b Chong, Jerrod (August 1, 2018). "10 Things You've Been Wondering About FIDO2, WebAuthn, and a Passwordless World". Archived from the original on May 1, 2019. Retrieved May 1, 2019.
  38. ^ Balfanz, Dirk; Czeskis, Alexei; Hodges, Jeff; Jones, J.C.; Jones, Michael B.; Kumar, Akshay; Liao, Angelo; Lindemann, Rolf; Lundberg, Emil (eds.). "Web Authentication: An API for accessing Public Key Credentials Level 1 (latest)". World Wide Web Consortium (W3C). Archived from the original on March 14, 2019. Retrieved March 4, 2019.
  39. ^ Salam, Feroz (August 25, 2018). "Why you can't use Firefox to register a U2F key with Google". Padlock. Retrieved May 1, 2019.