FIDO2
The standard behind passkeys. What its two pieces are, why it replaces the shared secret with public-key cryptography, and which attack stops working once it's implemented.
In short
FIDO2 is the set of specifications that lets a person authenticate with public-key cryptography instead of a shared secret. It's published by the FIDO Alliance and the W3C, and it's the technical foundation passkeys run on.
The idea is short: the authenticator holds a private key that's never sent to the site, and the server holds only the corresponding public key. Authenticating means signing a challenge with the private key.
FIDO2 is two pieces, and it's worth telling them apart
Under the same name live two specifications that solve different problems.
- WebAuthn — the API the browser exposes to the application to register and use credentials. It's a W3C standard and the piece implemented on the site's side.
- CTAP — the protocol spoken between the browser and the authenticator. It's the piece that lets an external security key, connected over USB, NFC or Bluetooth, work with the browser.
When the authenticator is inside the same device, the CTAP conversation is internal and invisible. When the authenticator is a separate physical key, CTAP is what makes the whole thing work.
The authenticator can live on the device or be a separate key
The distinction defines the experience and the recovery model.
- Platform authenticator — lives inside the phone or the computer and unlocks with the device's biometric trait or PIN. It's what makes a passkey feel like unlocking the phone.
- External authenticator — a physical security key that connects over USB, NFC or Bluetooth and can be used on several devices. It's the usual format for higher-risk populations.
In both cases, the biometric trait or PIN unlocks the key locally. They don't travel to the server and aren't part of the authentication protocol.
How FIDO2 relates to passkeys
A passkey is a FIDO credential. What the industry added on top of the standard is synchronization: the credential can be backed up and replicated across the same person's devices through the platform, instead of staying locked to the device where it was created.
That synchronization solved the problem holding back adoption, which was device loss, and in exchange moved part of the trust to the platform account that syncs it. There are also passkeys tied to a single device, without synchronization, for scenarios where handing over that trust isn't acceptable.
Frequently asked questions
It's the set of specifications that enables authentication with public-key cryptography instead of shared secrets. It's made up of two pieces: WebAuthn, the API the browser exposes to applications, published by the W3C, and CTAP, the protocol between the browser and the authenticator, published by the FIDO Alliance. It's the technical foundation of passkeys.
FIDO2 is the name of the whole set. WebAuthn is the part the site implements: the interface the browser offers to register and use a credential. CTAP is the part that lets an external authenticator, such as a USB or NFC security key, talk to the browser. If the authenticator is inside the device itself, that conversation happens internally and the user never notices it.
Because the credential is tied to the domain where it was registered, and the browser only offers it to that domain. A lookalike site can't request it, so there's nothing the person can hand over by mistake, not even to an attacker relaying the session in real time. Unlike a code, which is transcribable data, what's used here is a cryptographic signature tied to the origin.