第二要素を強くする
パスワードが漏れても、登録済みSecurity Keyの物理操作と署名がなければログインできません。
Specification
Security Keyの物理操作とRP固有の公開鍵署名を、パスワードに追加する第二要素として利用する従来FIDO仕様です。新規実装ではWebAuthnを使用します。
Overview
FIDO U2Fは、パスワードに加えてSecurity Keyの物理操作を要求する第二要素認証の仕様です。ユーザーが鍵へタッチすると、Security Keyがサイト固有の秘密鍵でchallengeへ署名します。
OTPとは異なり、署名はAppIDとWeb originへ結び付くため、偽サイトへ入力可能な共通コードを生成しません。この性質がフィッシング耐性を高めます。一方、U2Fは基本的に第一要素のパスワードを置き換える仕様ではありません。
Purpose and responsibilities
パスワードが漏れても、登録済みSecurity Keyの物理操作と署名がなければログインできません。
サイト固有鍵とAppID/origin検証により、偽サイトで生成した要求へ本物サイト用の署名を行いません。
AuthenticatorはRelying Partyごとに異なる鍵ペアとKey Handleを利用します。
Key concepts
Security considerations
仕様を実装するときは、正常系の通信だけでなく、値のすり替え、再利用、漏えいが起きた場合も考えます。
challengeを一度限りにし、ログインセッションへ関連付けます。
ClientがAppIDとoriginの関係を確認し、サーバーが署名とUser Presenceを検証します。
counterの後退をAuthenticator複製のリスクとして扱います。
新規Web実装ではU2F JavaScript APIではなくWebAuthnを使用します。
Interactive flows
Position and relationship
U2FはFIDOの第二要素仕様で、後継のWebAuthnではU2F Security Keyも利用できます。WebAuthnはUser VerificationやDiscoverable Credentialを扱え、パスキーによる第一要素・多要素認証へ範囲を広げています。
Other specifications