FIDO2 CTAP 2.2

Client to Authenticator Protocol

ブラウザやOSなどのFIDO Clientと、PlatformまたはRoaming Authenticatorの間でCredential作成・署名を行うプロトコルを定義します。

STATUSFIDO Alliance Review DraftFLOWS2 documentedPrimary specification ↗

この仕様は、
何を解決するのか。

Authenticator、ブラウザ、OSの境界や、パスキーが端末内部でどのように処理されるかを理解したい人向けです。

CTAPは、ブラウザやOSなどのFIDO ClientとAuthenticatorの間で、Credential作成や署名を依頼するためのプロトコルです。Web開発者がCTAPを直接呼ぶことは通常ありませんが、WebAuthnの裏側で何が起きるかを理解するために重要です。

Authenticatorには端末内蔵のPlatform Authenticatorと、USB・NFC・BLEなどで接続するRoaming Authenticatorがあります。CTAP2は両者へ共通のコマンド、User Presence、User Verification、PIN/UV認証などを定義します。

仕様が定める、大切なこと。

01

ClientとAuthenticatorを分離する

ブラウザやOSが、メーカーの異なるAuthenticatorを共通プロトコルで利用できます。

02

ローカル本人確認を守る

PINや生体認証の結果だけを利用し、認証要素そのものをRelying Partyへ公開しません。

03

Credential操作を標準化する

makeCredential、getAssertion、Credential管理などのAuthenticator操作を共通化します。

01authenticatorMakeCredential02authenticatorGetAssertion03Platform Authenticator04Roaming Authenticator05PIN / User Verification

安全に使うための確認事項。

仕様を実装するときは、正常系の通信だけでなく、値のすり替え、再利用、漏えいが起きた場合も考えます。

  1. 01

    PIN/UV protocolでClientとAuthenticator間の機密性・完全性を保護します。

  2. 02

    User PresenceとUser Verificationを混同せず、Relying Partyの要求に合ったflagsを確認します。

  3. 03

    Authenticatorのtransportと物理的な利用環境を考慮します。

  4. 04

    拡張機能はAuthenticatorとClient双方の対応状況を確認し、未認識データを安全に扱います。

この仕様に属するフロー

ほかの仕様との関係

CTAP2はFIDO2のAuthenticator側プロトコルで、WebAuthnはWebアプリ側インターフェースです。従来のU2F互換を扱うCTAP1もありますが、新しいパスキー機能はCTAP2系の機能を利用します。

OAuth 2.0 (RFC 6749)The OAuth 2.0 Authorization Framework→OAuth 2.0 Device Authorization (RFC 8628)OAuth 2.0 Device Authorization Grant→OAuth 2.1OAuth 2.1 Authorization Framework→OpenID Connect Core 1.0OpenID Connect Core 1.0→FIDO2 WebAuthn Level 3Web Authentication: Public Key Credentials→FIDO UAF 1.1Universal Authentication Framework→FIDO U2F 1.2Universal Second Factor→OpenID Connect CIBA Core 1.0Client-Initiated Backchannel Authentication→OAuth 2.0 PKCE (RFC 7636)Proof Key for Code Exchange by OAuth Public Clients→JSON Web Token (RFC 7519)JSON Web Token (JWT)→OAuth 2.0 DPoP (RFC 9449)OAuth 2.0 Demonstrating Proof of Possession→SAML 2.0Security Assertion Markup Language 2.0→SCIM 2.0 (RFC 7644)System for Cross-domain Identity Management: Protocol→