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 FrameworkOAuth 2.0 Device Authorization (RFC 8628)OAuth 2.0 Device Authorization GrantOAuth 2.1OAuth 2.1 Authorization FrameworkOpenID Connect Core 1.0OpenID Connect Core 1.0FIDO2 WebAuthn Level 3Web Authentication: Public Key CredentialsFIDO UAF 1.1Universal Authentication FrameworkFIDO U2F 1.2Universal Second FactorOpenID Connect CIBA Core 1.0Client-Initiated Backchannel AuthenticationOAuth 2.0 PKCE (RFC 7636)Proof Key for Code Exchange by OAuth Public ClientsJSON Web Token (RFC 7519)JSON Web Token (JWT)OAuth 2.0 DPoP (RFC 9449)OAuth 2.0 Demonstrating Proof of PossessionSAML 2.0Security Assertion Markup Language 2.0SCIM 2.0 (RFC 7644)System for Cross-domain Identity Management: Protocol