FIDO2 is the current generation of authentication standards produced jointly by the FIDO Alliance and the W3C, combining two specifications: WebAuthn (Web Authentication API, W3C Level 3, 2025) and CTAP2 (Client to Authenticator Protocol 2, FIDO Alliance). Its defining security property is origin binding: every FIDO2 credential is generated and used with a cryptographic binding to the specific Relying Party ID (RP ID — typically the registering domain’s origin) encoded into every authentication assertion. An authenticator will refuse to produce an assertion for evil.com using a credential registered with bank.com, even if the phishing site presents an identical login page and intercepts the WebAuthn call — the origin check is enforced inside the authenticator, not in JavaScript, and cannot be bypassed by a man-in-the-middle who controls the network or the browser DOM. This property is what makes FIDO2 phishing-resistant by construction, whereas TOTP, SMS OTP, and push-notification MFA are all interceptable by a real-time phishing proxy. FIDO2 is the direct successor to FIDO U2F (Universal 2nd Factor), which provided phishing resistance as a second factor only; FIDO2 extends the model to full passwordless primary authentication.
The protocol architecture has three participants. The Relying Party (RP) is the application or service requesting authentication — a web server, an identity provider, or a native application. It calls the WebAuthn API to initiate two ceremonies: registration (navigator.credentials.create() — the RP sends a challenge, allowed algorithms, RP ID, and attestation preference; the authenticator generates a new key pair, stores the private key in its secure element, and returns the public key, credential ID, and optional attestation statement; the RP stores the public key and credential ID) and authentication (navigator.credentials.get() — the RP sends a fresh challenge and the credential ID; the authenticator performs user verification, signs the challenge and authenticator data with the stored private key, and returns the signed assertion; the RP verifies the signature with the stored public key). The client is the browser or OS layer that calls CTAP2 to communicate with the authenticator. The authenticator is the hardware or platform component that holds private key material — either a platform authenticator (Touch ID, Face ID, Windows Hello, Android biometric — built into the device and not accessible over USB/NFC/BLE) or a roaming authenticator (YubiKey, Google Titan, SoloKey — a portable hardware token connected over USB, NFC, or BLE, implementing the CTAP2 protocol; on Linux, accessed via libfido2). Private keys generated inside an authenticator’s secure element never leave it in plaintext; authentication requires both the key and local user interaction — a PIN, biometric, or touch confirmation that proves user presence or user verification.
Three operational concepts define how FIDO2 is deployed in practice. Discoverable credentials (passkeys) store the credential on the authenticator indexed by RP ID and user ID so that no username need be typed — the authenticator can surface which accounts it holds for a given origin and begin authentication without a username prompt. Discoverable credentials on hardware security keys consume on-device storage (typically 25–100 slots depending on the model); synced passkeys replicate the credential via a platform cloud (iCloud Keychain, Google Password Manager, Windows Hello with Microsoft account), solving account recovery for consumer flows at the cost of the key leaving the hardware boundary — NIST considers synced passkeys single-factor since the cloud account becomes a recovery path. Attestation is the authenticator’s signed statement about its own model and manufacturer, rooted in the FIDO Metadata Service (MDS) — a FIDO Alliance registry of authenticator models, their public keys, and any known vulnerabilities. A RP that enforces attestation can verify not just that a valid credential was used, but that it was generated on a specific, certified hardware model (e.g., YubiKey 5 Series), enabling hardware-bound credential policies for high-assurance deployments; the attestation certificate’s AAGUID (Authenticator Attestation GUID) uniquely identifies the authenticator model. SSH integration is covered in the SSH entry: the ed25519-sk and ecdsa-sk key types bind an SSH key pair to a FIDO2 hardware token so that SSH authentication requires physical presence of the token, with the private key resident on the hardware and never extractable. In the PAM context, FIDO2 hardware tokens replace or complement TOTP and push MFA as the phishing-resistant factor for privileged access; in a break-glass scenario, hardware token loss is the primary recovery concern, making spare token pre-registration and recovery code procedures an essential operational requirement alongside the tokens themselves.
