What is FIDO2?
FIDO2 is an open authentication standard from the FIDO Alliance that replaces shared secrets, such as passwords and one-time codes, with public-key cryptography. It has two parts. WebAuthn (Web Authentication), published by the W3C, is the API that websites and browsers use to create and use credentials. CTAP (Client to Authenticator Protocol), from the FIDO Alliance, is how the browser or operating system talks to an external authenticator over USB, NFC or Bluetooth. FIDO2 followed the earlier FIDO U2F standard, which added a security key as a second factor, and it is the technology behind passkeys.
How FIDO2 authentication works
- Registration: the site asks the browser to create a credential. The authenticator generates a new key pair for that one site, keeps the private key, and returns the public key and a credential ID. The site stores the public key.
- Sign-in: the site sends a random challenge. The authenticator checks that the user is present, usually with a touch, and often verifies the user with a PIN or biometric. It then signs data that includes the challenge and the site's identity.
- Verification: the site checks the signature with the stored public key.
The private key is never sent to the site, and the server holds only public keys, so a breach of the site's database gives an attacker nothing to crack or replay elsewhere. The PIN or fingerprint is checked locally on the device and is never sent to the server.
Why FIDO2 resists phishing
Each credential is scoped to a relying party ID, which is the site's domain. The browser offers a credential only to pages on that domain, and it adds the page's real origin to the data the authenticator signs. Decoded, part of that signed client data looks like this:
{"type":"webauthn.get","challenge":"q3Zf8kLm...","origin":"https://login.example.com"}
If a user lands on a lookalike page such as login.examp1e-support.com, the browser has no credential for that domain, and any signature produced there would carry the wrong origin, which the real site rejects. There is no code for the user to read out and no secret for a proxy to relay. That is why FIDO2 counts as phishing-resistant MFA while SMS codes, authenticator app codes and push approvals do not.
Types of FIDO2 authenticators
- Roaming authenticators: hardware security keys that plug in by USB or tap over NFC and work on any computer. Users should register a spare.
- Platform authenticators: built into a device, such as Windows Hello, Apple Touch ID and Face ID, or an Android phone's screen lock, usually backed by a TPM or secure hardware.
- Passkeys: FIDO credentials the device can find without a username. Synced passkeys are copied across a user's devices through a platform account or password manager; device-bound passkeys stay on one authenticator, such as a security key.
FIDO2 vs. other MFA methods
TOTP apps and OTP fobs rely on a secret shared between the token and the server, and a person types the code, so a phishing proxy can relay it within its time window. Push notifications can be approved by a tricked or fatigued user. Smart cards such as PIV and CAC are also phishing-resistant, using certificates and a PIN, but they need card readers and a PKI to issue and revoke certificates. FIDO2 gives similar resistance with lighter infrastructure. Its weak points are account recovery, since a fallback to SMS undoes the protection, and the session after sign-in, which needs separate controls against cookie theft.
FIDO2 on the CompTIA Security+ exam
FIDO2 falls under objective 4.5 on SY0-801, which covers MFA methods such as hard tokens and passwordless sign-in with passkeys. A scenario in which attackers relayed passwords and one-time codes through a fake sign-in page, or one that asks for the MFA method that can't be phished, points to FIDO2 security keys or passkeys. Distractors include shorter TOTP windows, push notifications with number matching and SMS codes, all of which a real-time phishing proxy can still defeat. FIDO2 is also the answer when a question asks how to remove shared secrets from the authentication server, since the server stores only public keys.