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.

There's no shared secret, and that changes two things

In a password or OTP scheme, there's a piece of data both the server and the user know. That data can leak from the database, be intercepted in transit, or be requested through deception.

In FIDO2 it doesn't exist. Registration generates a key pair: the private key stays on the authenticator and the public key is sent to the server. Every later access is a signature over a random challenge, which the server validates with the public key it already had.

Two operational consequences follow from that.

  • A server breach doesn't hand over usable credentials. What gets stolen are public keys, which by definition can't be used to authenticate.
  • The credential is tied to the domain that registered it. The browser only offers it to the correct origin, so a lookalike site can't request or receive it. It's why phishing, even with real-time relay, stops working against this factor. The resistance doesn't depend on the person noticing the fake domain: it depends on the browser, which does notice it.

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.

One identity, one SDK

VU ONE brings identity verification, authentication and fraud protection together on a single identity graph.

The verification you run at signup stays available to authentication and to your fraud rules, with no repeated processes and no duplicated data.

Verify, Authenticate and Protect, consolidated in one place.

Request a demo