FIDO U2F 1.2

Universal Second Factor

Security Keyの物理操作とRP固有の公開鍵署名を、パスワードに追加する第二要素として利用する従来FIDO仕様です。新規実装ではWebAuthnを使用します。

STATUSLegacy FIDO second-factor specificationFLOWS1 documentedPrimary specification ↗

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

既存のSecurity Key第二要素認証を理解し、WebAuthnへ移行したい人向けです。

FIDO U2Fは、パスワードに加えてSecurity Keyの物理操作を要求する第二要素認証の仕様です。ユーザーが鍵へタッチすると、Security Keyがサイト固有の秘密鍵でchallengeへ署名します。

OTPとは異なり、署名はAppIDとWeb originへ結び付くため、偽サイトへ入力可能な共通コードを生成しません。この性質がフィッシング耐性を高めます。一方、U2Fは基本的に第一要素のパスワードを置き換える仕様ではありません。

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

01

第二要素を強くする

パスワードが漏れても、登録済みSecurity Keyの物理操作と署名がなければログインできません。

02

フィッシングを防ぐ

サイト固有鍵とAppID/origin検証により、偽サイトで生成した要求へ本物サイト用の署名を行いません。

03

サービス間の追跡を防ぐ

AuthenticatorはRelying Partyごとに異なる鍵ペアとKey Handleを利用します。

01Second Factor02Security Key03User Presence04Key Handle05WebAuthn Migration

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

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

  1. 01

    challengeを一度限りにし、ログインセッションへ関連付けます。

  2. 02

    ClientがAppIDとoriginの関係を確認し、サーバーが署名とUser Presenceを検証します。

  3. 03

    counterの後退をAuthenticator複製のリスクとして扱います。

  4. 04

    新規Web実装ではU2F JavaScript APIではなくWebAuthnを使用します。

この仕様に属するフロー

ほかの仕様との関係

U2FはFIDOの第二要素仕様で、後継のWebAuthnではU2F Security Keyも利用できます。WebAuthnはUser VerificationやDiscoverable Credentialを扱え、パスキーによる第一要素・多要素認証へ範囲を広げています。

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 CredentialsFIDO2 CTAP 2.2Client to Authenticator ProtocolFIDO UAF 1.1Universal Authentication FrameworkOpenID 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