WebAuthn: Difference between revisions

m →Support: Present tense
→top: removed ref-less sentence on hardware authenticators – a more thorough discussion is needed, as the hardware needs to be unconnected to the net and other devices, and doesn't help if the authentication is on fake logins/transactions; also changed phishing attacks → some phishing attacks for much the same reason: you might authenticate on the right site, but be presented with bogus information
Line 47: Line 47:
To use WebAuthn, users require a compatible authenticator. The standard does not specify how to store the [[private key|keys]] required for signing, so a variety of authenticator types can be used. The most common authenticator type is a platform authenticator, which is built into the [[operating system]] of the device. Common platform authenticators include [[Android (operating system)|Android]], [[Apple Keychain]] and [[Windows Hello]]. These make use of hardware security features (such as [[trusted execution environment|TEE]] and [[Trusted Platform Module|TPM]]), and often sync credentials between devices for ease-of-use. Another common authenticator type is a roaming authenticator, where a separate hardware device authenticates the user by connecting over [[USB]], [[Bluetooth Low Energy]], or [[near-field communications]] (NFC). Most [[smartphones]] can be used as roaming authenticators, and dedicated physical [[security token|security keys]] are also used. WebAuthn is effectively backward compatible with [[FIDO Alliance|FIDO]] [[Universal 2nd Factor]] (U2F) as they both use the [[CTAP]] protocol.<ref>{{cite web |title=WebAuthn / CTAP: Modern Authentication |url=https://www.w3.org/Security/201812-Auth-ID/05_-_Day_1_-_Understanding_WebAuthn,_CTAP,_EAT,_FIDO_and_Authenticators.pdf |publisher=[[World Wide Web Consortium]] |access-date=11 March 2019 |date=10 December 2018 |archive-date=4 December 2020 |archive-url=https://web.archive.org/web/20201204162731/https://www.w3.org/Security/201812-Auth-ID/05_-_Day_1_-_Understanding_WebAuthn,_CTAP,_EAT,_FIDO_and_Authenticators.pdf |url-status=live }}</ref> [[Password manager|Password managers]] can also be used as an authenticator, often with cloud sync.<ref>{{Cite web |date=2023-06-01 |title=Will Passkeys Kill Password Managers? |url=https://www.corbado.com/blog/passkeys-vs-password-managers |access-date=2025-09-18 |website=Corbado |language=en}}</ref> Where credentials sync is not viable or possible, WebAuthn Hybrid Transport can be used to access credentials stored on another authenticator such as a smartphone.<ref name="Corbado-HybridTransport">{{Cite news |date=2023-11-08 |title=WebAuthn Passkey QR Codes & Bluetooth: Hybrid Transport |url=https://www.corbado.com/blog/webauthn-passkey-qr-code |access-date=2025-09-18 |work=Corbado |language=en}}</ref>
To use WebAuthn, users require a compatible authenticator. The standard does not specify how to store the [[private key|keys]] required for signing, so a variety of authenticator types can be used. The most common authenticator type is a platform authenticator, which is built into the [[operating system]] of the device. Common platform authenticators include [[Android (operating system)|Android]], [[Apple Keychain]] and [[Windows Hello]]. These make use of hardware security features (such as [[trusted execution environment|TEE]] and [[Trusted Platform Module|TPM]]), and often sync credentials between devices for ease-of-use. Another common authenticator type is a roaming authenticator, where a separate hardware device authenticates the user by connecting over [[USB]], [[Bluetooth Low Energy]], or [[near-field communications]] (NFC). Most [[smartphones]] can be used as roaming authenticators, and dedicated physical [[security token|security keys]] are also used. WebAuthn is effectively backward compatible with [[FIDO Alliance|FIDO]] [[Universal 2nd Factor]] (U2F) as they both use the [[CTAP]] protocol.<ref>{{cite web |title=WebAuthn / CTAP: Modern Authentication |url=https://www.w3.org/Security/201812-Auth-ID/05_-_Day_1_-_Understanding_WebAuthn,_CTAP,_EAT,_FIDO_and_Authenticators.pdf |publisher=[[World Wide Web Consortium]] |access-date=11 March 2019 |date=10 December 2018 |archive-date=4 December 2020 |archive-url=https://web.archive.org/web/20201204162731/https://www.w3.org/Security/201812-Auth-ID/05_-_Day_1_-_Understanding_WebAuthn,_CTAP,_EAT,_FIDO_and_Authenticators.pdf |url-status=live }}</ref> [[Password manager|Password managers]] can also be used as an authenticator, often with cloud sync.<ref>{{Cite web |date=2023-06-01 |title=Will Passkeys Kill Password Managers? |url=https://www.corbado.com/blog/passkeys-vs-password-managers |access-date=2025-09-18 |website=Corbado |language=en}}</ref> Where credentials sync is not viable or possible, WebAuthn Hybrid Transport can be used to access credentials stored on another authenticator such as a smartphone.<ref name="Corbado-HybridTransport">{{Cite news |date=2023-11-08 |title=WebAuthn Passkey QR Codes & Bluetooth: Hybrid Transport |url=https://www.corbado.com/blog/webauthn-passkey-qr-code |access-date=2025-09-18 |work=Corbado |language=en}}</ref>


Like legacy U2F, WebAuthn is resistant to [[phishing|phishing attacks]]<ref>{{cite web |last1=Kan |first1=Michael |title=Google: Phishing Attacks That Can Beat Two-Factor Are on the Rise |url=https://www.pcmag.com/news/367026/google-phishing-attacks-that-can-beat-two-factor-are-on-the |publisher=PC Magazine |access-date=8 March 2019 |date=7 March 2019 |archive-date=8 March 2019 |archive-url=https://web.archive.org/web/20190308035745/https://www.pcmag.com/news/367026/google-phishing-attacks-that-can-beat-two-factor-are-on-the |url-status=live }}</ref> as the authenticator only offers credentials that were registered on the [[same-origin policy|same website]]. However, unlike U2F, WebAuthn can be implemented in a [[passwordless authentication|passwordless]] manner.<ref>{{Cite web |date=2018-04-10 |title=Practical passwordless authentication comes a step closer with WebAuthn |url=https://arstechnica.com/gadgets/2018/04/practical-passwordless-authentication-comes-a-step-closer-with-webauthn/ |access-date=2024-10-16 |website=[[Ars Technica]] |language=en-US |archive-date=1 January 2025 |archive-url=https://web.archive.org/web/20250101102456/https://arstechnica.com/gadgets/2018/04/practical-passwordless-authentication-comes-a-step-closer-with-webauthn/ |url-status=live }}</ref> Moreover, a roaming hardware authenticator resists malware, since the keys are stored on a separate device, which prevents the malware from accessing them directly.
Like legacy U2F, WebAuthn is resistant to some [[phishing|phishing attacks]]<ref>{{cite web |last1=Kan |first1=Michael |title=Google: Phishing Attacks That Can Beat Two-Factor Are on the Rise |url=https://www.pcmag.com/news/367026/google-phishing-attacks-that-can-beat-two-factor-are-on-the |publisher=PC Magazine |access-date=8 March 2019 |date=7 March 2019 |archive-date=8 March 2019 |archive-url=https://web.archive.org/web/20190308035745/https://www.pcmag.com/news/367026/google-phishing-attacks-that-can-beat-two-factor-are-on-the |url-status=live }}</ref> as the authenticator only offers credentials that were registered on the [[same-origin policy|same website]]. However, unlike U2F, WebAuthn can be implemented in a [[passwordless authentication|passwordless]] manner.<ref>{{Cite web |date=2018-04-10 |title=Practical passwordless authentication comes a step closer with WebAuthn |url=https://arstechnica.com/gadgets/2018/04/practical-passwordless-authentication-comes-a-step-closer-with-webauthn/ |access-date=2024-10-16 |website=[[Ars Technica]] |language=en-US |archive-date=1 January 2025 |archive-url=https://web.archive.org/web/20250101102456/https://arstechnica.com/gadgets/2018/04/practical-passwordless-authentication-comes-a-step-closer-with-webauthn/ |url-status=live }}</ref> Moreover, a roaming hardware authenticator resists malware, since the keys are stored on a separate device, which prevents the malware from accessing them directly.


The WebAuthn Level&nbsp;1 and 2 standards were published as [[W3C recommendation|W3C Recommendations]] on 4 March 2019 and 8 April 2021 respectively.<ref name="W3C-WebAuthn-Level-1">{{cite web |editor1-last=Balfanz |editor1-first=Dirk |editor2-last=Czeskis |editor2-first=Alexei |editor3-last=Hodges |editor3-first=Jeff |editor4-last=Jones |editor4-first=J.C. |editor5-last=Jones |editor5-first=Michael B. |editor6-last=Kumar |editor6-first=Akshay |editor7-last=Liao |editor7-first=Angelo |editor8-last=Lindemann |editor8-first=Rolf |editor9-last=Lundberg |editor9-first=Emil |title=Web Authentication: An API for accessing Public Key Credentials Level&nbsp;1 (latest) |url=https://www.w3.org/TR/webauthn-1/ |publisher=[[World Wide Web Consortium]] |access-date=4 March 2019 |archive-date=14 March 2019 |archive-url=https://web.archive.org/web/20190314015005/https://www.w3.org/TR/webauthn-1/ |url-status=live }}</ref><ref name="W3C-WebAuthn-announce">{{cite web |title=W3C and FIDO Alliance Finalize Web Standard for Secure, Passwordless Logins |url=https://www.w3.org/2019/03/pressrelease-webauthn-rec.html.en |publisher=[[World Wide Web Consortium]] |access-date=4 March 2019 |date=4 March 2019 |archive-date=4 March 2019 |archive-url=https://web.archive.org/web/20190304132257/https://www.w3.org/2019/03/pressrelease-webauthn-rec.html.en |url-status=live }}</ref><ref name="W3C-WebAuthn-Level-2">{{cite web |editor1-last=Balfanz |editor1-first=Dirk |editor2-last=Czeskis |editor2-first=Alexei |editor3-last=Hodges |editor3-first=Jeff |editor4-last=Jones |editor4-first=J.C. |editor5-last=Jones |editor5-first=Michael B. |editor6-last=Kumar |editor6-first=Akshay |editor7-last=Lindemann |editor7-first=Rolf |editor8-last=Lundberg |editor8-first=Emil |title=Web Authentication: An API for accessing Public Key Credentials Level&nbsp;2 |url=https://www.w3.org/TR/webauthn-2/ |access-date=27 November 2022 |publisher=[[World Wide Web Consortium]] |publication-date=8 April 2021 |edition=Latest |archive-date=4 June 2019 |archive-url=https://web.archive.org/web/20190604093843/https://www.w3.org/TR/webauthn-2/ |url-status=live }}</ref> A Level 3 specification is currently a ''First Public Working Draft'' (FPWD).<ref name="W3C-WebAuthn-Level-3">{{Cite web |editor1-last=Balfanz |editor1-first=Dirk |editor2-last=Czeskis |editor2-first=Alexei |editor3-last=Hodges |editor3-first=Jeff |editor4-last=Jones |editor4-first=J.C. |editor5-last=Jones |editor5-first=Michael B. |editor6-last=Kumar |editor6-first=Akshay |editor7-last=Lindemann |editor7-first=Rolf |editor8-last=Lundberg |editor8-first=Emil |title=Web Authentication: An API for accessing Public Key Credentials Level 3 |url=https://www.w3.org/TR/webauthn-3/ |publisher=[[World Wide Web Consortium]] |access-date=24 December 2021 |publication-date=4 April 2021 |edition=First Public Working Draft |archive-date=25 February 2022 |archive-url=https://web.archive.org/web/20220225104428/https://www.w3.org/TR/webauthn-3/ |url-status=live }}</ref>
The WebAuthn Level&nbsp;1 and 2 standards were published as [[W3C recommendation|W3C Recommendations]] on 4 March 2019 and 8 April 2021 respectively.<ref name="W3C-WebAuthn-Level-1">{{cite web |editor1-last=Balfanz |editor1-first=Dirk |editor2-last=Czeskis |editor2-first=Alexei |editor3-last=Hodges |editor3-first=Jeff |editor4-last=Jones |editor4-first=J.C. |editor5-last=Jones |editor5-first=Michael B. |editor6-last=Kumar |editor6-first=Akshay |editor7-last=Liao |editor7-first=Angelo |editor8-last=Lindemann |editor8-first=Rolf |editor9-last=Lundberg |editor9-first=Emil |title=Web Authentication: An API for accessing Public Key Credentials Level&nbsp;1 (latest) |url=https://www.w3.org/TR/webauthn-1/ |publisher=[[World Wide Web Consortium]] |access-date=4 March 2019 |archive-date=14 March 2019 |archive-url=https://web.archive.org/web/20190314015005/https://www.w3.org/TR/webauthn-1/ |url-status=live }}</ref><ref name="W3C-WebAuthn-announce">{{cite web |title=W3C and FIDO Alliance Finalize Web Standard for Secure, Passwordless Logins |url=https://www.w3.org/2019/03/pressrelease-webauthn-rec.html.en |publisher=[[World Wide Web Consortium]] |access-date=4 March 2019 |date=4 March 2019 |archive-date=4 March 2019 |archive-url=https://web.archive.org/web/20190304132257/https://www.w3.org/2019/03/pressrelease-webauthn-rec.html.en |url-status=live }}</ref><ref name="W3C-WebAuthn-Level-2">{{cite web |editor1-last=Balfanz |editor1-first=Dirk |editor2-last=Czeskis |editor2-first=Alexei |editor3-last=Hodges |editor3-first=Jeff |editor4-last=Jones |editor4-first=J.C. |editor5-last=Jones |editor5-first=Michael B. |editor6-last=Kumar |editor6-first=Akshay |editor7-last=Lindemann |editor7-first=Rolf |editor8-last=Lundberg |editor8-first=Emil |title=Web Authentication: An API for accessing Public Key Credentials Level&nbsp;2 |url=https://www.w3.org/TR/webauthn-2/ |access-date=27 November 2022 |publisher=[[World Wide Web Consortium]] |publication-date=8 April 2021 |edition=Latest |archive-date=4 June 2019 |archive-url=https://web.archive.org/web/20190604093843/https://www.w3.org/TR/webauthn-2/ |url-status=live }}</ref> A Level 3 specification is currently a ''First Public Working Draft'' (FPWD).<ref name="W3C-WebAuthn-Level-3">{{Cite web |editor1-last=Balfanz |editor1-first=Dirk |editor2-last=Czeskis |editor2-first=Alexei |editor3-last=Hodges |editor3-first=Jeff |editor4-last=Jones |editor4-first=J.C. |editor5-last=Jones |editor5-first=Michael B. |editor6-last=Kumar |editor6-first=Akshay |editor7-last=Lindemann |editor7-first=Rolf |editor8-last=Lundberg |editor8-first=Emil |title=Web Authentication: An API for accessing Public Key Credentials Level 3 |url=https://www.w3.org/TR/webauthn-3/ |publisher=[[World Wide Web Consortium]] |access-date=24 December 2021 |publication-date=4 April 2021 |edition=First Public Working Draft |archive-date=25 February 2022 |archive-url=https://web.archive.org/web/20220225104428/https://www.w3.org/TR/webauthn-3/ |url-status=live }}</ref>