Ambimat GroupAmbimatAmbiSecureeSIM InitiativeEngineering BlogAhmedabad · India · Est. 1981
Technology

FIDO2 — the alliance, the spec family, the certification.

FIDO2 isn't a protocol. It's a brand for two specifications working in concert: WebAuthn (the W3C Web API the browser exposes to the relying party) and CTAP2 (the FIDO Alliance protocol the browser speaks to the authenticator). Together they replace shared-secret passwords with hardware-rooted public-key cryptography.

The FIDO2 family at a glance

W3C

WebAuthn

JavaScript API on the relying-party page. navigator.credentials.create() and .get() — that's the entire surface area.

FIDO Alliance

CTAP2 (Client-To-Authenticator)

USB-HID, NFC, BLE wire format the browser uses to talk to a roaming authenticator. Platform authenticators bypass CTAP and use OS-native APIs.

Standards

COSE / CBOR

RFC 8152 / RFC 8949 — the binary structures FIDO2 uses for keys and messages. Compact enough to run on small MCUs.

FIDO MDS

Metadata Service

Signed JSON BLOB published by the Alliance, listing every certified authenticator (AAGUID, certification level, attestation root). Production RPs verify against MDS.

CTAP1 vs CTAP2

CTAP1 (also U2F) is the original FIDO protocol: a U2F register / authenticate flow with a 16-byte counter. No PIN, no resident credentials, no user verification beyond physical presence. Still in deployment, but considered legacy — CTAP2 supersedes it for everything new.

CTAP2 introduces resident (discoverable) credentials, PIN/UV protocols, larger commands, and a richer error model. It is what enables real passwordless flows — the username can come from the authenticator instead of the user.

A CTAP2 authenticator can also expose a CTAP1 transport for backwards compatibility with U2F-only RPs. WebAuthn level-1 and level-2 RPs interoperate with both via the WebAuthn API.

CTAP2 commands that matter

CommandPurpose
authenticatorMakeCredential (0x01)Registration: generate keypair, return attestationObject.
authenticatorGetAssertion (0x02)Authentication: sign a challenge with an existing credential.
authenticatorGetInfo (0x04)Discovery: report supported algorithms, transports, AAGUID, options.
authenticatorClientPIN (0x06)PIN setup, PIN change, get pinUvAuthToken (CTAP2.1 PIN/UV protocol).
authenticatorReset (0x07)Factory reset (invalidates all stored credentials).
authenticatorBioEnrollment (0x09)On-device fingerprint enrolment (CTAP2.1 only).
authenticatorCredentialManagement (0x0A)Enumerate / delete resident credentials.
authenticatorSelection (0x0B)UA prompts user to pick which authenticator to use.
authenticatorLargeBlobs (0x0C)Per-credential opaque blob storage (e.g. encrypted backup material).

Authenticator certification levels

The FIDO Alliance certifies authenticators across L1 (software / functional), L2 (hardware-protected key, lightweight attack resistance), L3 (Common-Criteria-style hardware), and L3+ (highest assurance with side-channel and fault-injection resistance).

For enterprise deployments the AAGUID allow-list is typically derived from a target certification level — e.g. "L2 or higher", with explicit denials for AAGUIDs flagged in MDS as compromised.