FIDO2 and WebAuthn explained: the standards behind passkeys
FIDO2 combines WebAuthn and CTAP to replace passwords with phishing-resistant key pairs. How login works, what WebAuthn Level 3 adds and its EU wallet link.
StandardsPublished
FIDO2 is a set of open standards that replace passwords with cryptographic key pairs. It consists of WebAuthn, an interface that websites call in your browser, and CTAP, the protocol that lets the browser talk to an authenticator such as a phone or a USB security key. Together they are what makes passkeys work.
What FIDO2 and WebAuthn are for
Passwords can be guessed, reused, leaked and phished. FIDO2 removes the shared secret: instead of sending a password the site could lose, you prove that you hold a private key that never leaves your device. The FIDO Alliance (an industry group, see fidoalliance.org) develops CTAP and the certification programmes, and the World Wide Web Consortium (W3C) publishes WebAuthn.
The standards support passwordless login, second-factor login and, with a fingerprint or PIN on the authenticator, multi-factor login in a single step.
The roles
| Role | What it does | Example |
|---|---|---|
| Relying party | The website or service that wants to log you in | A bank, an email provider |
| Client | The browser or app that calls WebAuthn | Firefox, Chrome, Safari, Edge |
| Authenticator | Holds the private keys and signs challenges | Phone, laptop chip, password manager, YubiKey, Nitrokey |
| User | Approves with biometrics or a PIN (“user verification”) | You |
How registration and login work
Registration (once per site):
- You choose “Create passkey” at the site.
- The site sends a random challenge and its identifier, for example
example.com. - The browser passes the request to the authenticator, which asks you to confirm with a fingerprint, face or PIN.
- The authenticator creates a new key pair just for this site and returns the public key with a credential ID.
- The site stores the public key. Nothing secret is stored.
Login (every time):
- The site sends a new challenge.
- The browser checks that the site matches the one the credential was created for.
- You confirm locally.
- The authenticator signs the challenge with the private key.
- The site verifies the signature with the stored public key and signs you in.
A trimmed registration request, as the site passes it to the browser, looks like this:
{
"challenge": "dGhpcyBpcyBhIHJhbmRvbSBjaGFsbGVuZ2U",
"rp": { "id": "example.com", "name": "Example" },
"user": { "id": "dXNlci00NzEx", "name": "alex@example.com" },
"pubKeyCredParams": [{ "type": "public-key", "alg": -7 }],
"authenticatorSelection": { "residentKey": "required", "userVerification": "preferred" }
}
Passkeys, synced and device-bound
A discoverable credential (also called resident key) lets the authenticator remember the account, so you do not even type a username. This is what a passkey is. Passkeys can be synced through a platform or a password manager, which helps recovery, or device-bound, for example on a hardware key. The trade-offs are covered in hardware security keys.
Everyday examples
- Tapping “Sign in with a passkey” on a shop and approving with your fingerprint.
- Plugging in a security key and touching it to unlock a work account.
- Your phone approving a login on a nearby computer through a QR code and Bluetooth proximity check.
- A bank using a security key for high-risk actions.
Security aspects
- Phishing resistance. The credential is bound to the real origin, so fake sites receive nothing usable. This is why FIDO2 is the reference for phishing-resistant MFA.
- No shared secrets. A breach at the site exposes only public keys.
- Local biometrics. A fingerprint or face scan never goes to the site, see biometric login.
- Recovery is the weak point. Lose all authenticators without a backup and you depend on the site’s recovery process, which attackers target. Register at least two authenticators.
- Attestation and privacy. Authenticators can optionally prove their make and model. Sites should request this only when policy needs it, since it can identify device types.
- Sync trust. A synced passkey is as safe as the account and recovery of the provider that syncs it.
Status and versions
WebAuthn Level 1 appeared in 2019 and Level 2 became a W3C Recommendation in April 2021. Level 3 became a W3C Recommendation on 25 August 2026, according to the FIDO Alliance announcement. It adds, among other features, conditional mediation (the passkey suggestion in username fields), backup eligibility and state flags, a Signals API that lets sites tell credential managers when a passkey is stale, related origin requests so one passkey can serve a small set of related domains, and a PRF extension for key derivation. CTAP 2.x is maintained by the FIDO Alliance, and a list of current specifications is at fidoalliance.org/specifications.
How it relates to the other standards
FIDO2 handles the question “is this the same device and person as at registration?” It does not carry attributes such as your name. It pairs well with OpenID Connect: an identity provider can use a passkey to authenticate you and then issue an ID token to other applications. Compared with SAML, OIDC and OAuth, which move assertions between parties, FIDO2 is the login method underneath.
Role in the EUDI Wallet
The EU Digital Identity Wallet is not a FIDO2 product, and its credential exchange uses OpenID4VCI and OpenID4VP instead. The two meet in practice: a wallet app is typically unlocked with the phone’s biometrics or PIN, the same kind of user verification that FIDO2 uses, and services may let you sign in with a passkey while using the wallet only for steps that need verified attributes, such as proving your age or opening a bank account.
Frequently asked questions
What is the difference between FIDO2, WebAuthn and passkeys?
WebAuthn is the web API, CTAP is the protocol to external authenticators, and FIDO2 is the name for both together. A passkey is the user-facing name for a FIDO credential, typically one that can be synced between your devices.
Does my fingerprint leave my phone?
No. The fingerprint or face scan only unlocks the private key on the device. The website receives a cryptographic signature, never biometric data.
Why is WebAuthn phishing-resistant?
The browser tells the authenticator which website it is talking to, and the credential works only for that exact site (the relying party ID). A look-alike phishing page has a different origin, so the authenticator will not produce a valid login for it.
Do I need a hardware key to use WebAuthn?
No. Most people use the passkey built into their phone, computer or password manager. A hardware security key is an option for higher assurance or as a backup.
More in Standards
Decentralized identifiers (DIDs): what they are and do
A DID is a W3C identifier you control without a central registry. How DID documents work, how they relate to credentials, and their role in the EUDI Wallet.
Identity federation explained: one login, many services
Identity federation lets one trusted provider vouch for you across many services. How it works, the standards it uses, and how the EUDI Wallet changes it.
mdoc and ISO 18013-5: how mobile IDs work
mdoc is the ISO format behind mobile driving licences and one of two EUDI Wallet formats. How ISO 18013-5 and 18013-7 work, and what stays private.
OAuth 2.0 explained: delegated access without passwords
OAuth 2.0 lets an app act for you at another service without your password. How the flow works, the main risks, OAuth 2.1 and where OAuth meets the EU wallet.
OpenID 2.0 explained: the original decentralised login
OpenID 1.x and 2.0 let you log in to websites with a URL you controlled. How discovery, delegation and providers worked, and why OpenID Connect replaced them.
OpenID vs OAuth: authentication vs authorisation
OAuth decides what an app may access, OpenID Connect proves who signed in. See the differences in a table, a simple analogy and why mixing them up is risky.