概要
FIDO2(Fast Identity Online 2)はFIDOアライアンスとW3Cが策定したパスワードレス認証の標準です。WebAuthn(Web Authentication API)とCTAP(Client to Authenticator Protocol)で構成され、公開鍵暗号を使ったフィッシング耐性の高い認証を実現します。パスキー(Passkey)はFIDO2資格情報をデバイス間で同期できるようにしたApple・Google・Microsoftが推進する実装です。
仕組みと動作原理
FIDO2の構成要素
| 要素 | 役割 |
|---|---|
| WebAuthn | ブラウザとWebサーバ間の認証プロトコル(W3C標準) |
| CTAP | ブラウザと認証器(YubiKey等)間のプロトコル |
| 認証器(Authenticator) | 鍵ペアの生成・保管・署名を行う装置またはソフトウェア |
登録フロー(初回)
1. ユーザがWebサイトにFIDO2登録を要求
2. サーバがチャレンジ(乱数)を送付
3. 認証器が鍵ペア(秘密鍵・公開鍵)を生成
- 秘密鍵:認証器内に安全に保管(外部に出ない)
- 鍵はサイトごとに固有(rpId = ドメイン名に紐付け)
4. 認証器がチャレンジに秘密鍵で署名して返す
5. サーバが公開鍵と署名を検証して公開鍵を保存
認証フロー(2回目以降)
1. サーバがチャレンジを送付
2. 認証器がチャレンジに秘密鍵で署名
3. サーバが保存済み公開鍵で署名を検証 → 認証成功
パスワードが通信路を流れることは一切ありません。
フィッシング耐性の仕組み
鍵はドメイン名(rpId)に紐付いて生成されます。
正規サイト:example.com → 鍵A(example.comの鍵)で署名可能
偽装サイト:evil-example.com → 鍵Aは使えない(別ドメインなので)
偽装サイトがどんなにリアルに見えても、ドメインが異なればFIDO2資格情報は使用されません。これがフィッシング耐性の本質です。
パスキー(Passkey)
デバイスバウンドキーとの違い
| 種類 | 保管場所 | 特徴 |
|---|---|---|
| デバイスバウンドキー(YubiKey等) | 物理デバイスのみ | 紛失すると使えない。高いセキュリティ |
| パスキー | クラウド同期(iCloud Keychain・Google Password Manager等) | 複数デバイスで使用可能。利便性高い |
パスキーのセキュリティ
- 秘密鍵は暗号化されてクラウドに保存
- デバイスのロック解除(生体認証・PIN)で使用可能
- フィッシング耐性は維持される(ドメイン紐付けは変わらない)
認証器の種類
| 種類 | 例 | 特徴 |
|---|---|---|
| プラットフォーム認証器 | Touch ID・Face ID・Windows Hello | デバイスに内蔵 |
| ローミング認証器(外部) | YubiKey・セキュリティキー | デバイスに依存しない |
| パスキー(クラウド同期) | iCloud Keychain・Google PM | 複数デバイスで使用 |
従来のMFAとFIDO2の比較
| 認証方式 | フィッシング耐性 | 利便性 |
|---|---|---|
| パスワードのみ | ✗ | 低 |
| パスワード + SMS OTP | ✗(OTPも中継可能) | 中 |
| パスワード + TOTP | ✗(TOTPも中継可能) | 中 |
| FIDO2 / パスキー | ◎(ドメイン紐付けで根本防止) | 高 |
SC試験での頻出ポイント
- FIDO2がフィッシングに強い根本的理由:鍵がドメイン(rpId)に紐付いているため、偽サイトでは使用不能
- WebAuthnとFIDO2の関係:FIDO2はWebAuthn(ブラウザAPI)とCTAP(認証器プロトコル)で構成
- パスキーとFIDO2の違い:パスキーはFIDO2資格情報をクラウド同期できるようにした実装
- 従来MFAとの違い:SMS・TOTPはAiTM攻撃でリアルタイムに中継可能。FIDO2は中継しても使えない
- 秘密鍵が外部に出ない重要性:秘密鍵はデバイス内(セキュアエレメント等)から出ず、署名のみを外部に送る
よくある誤問・ひっかけパターン
誤り① 「パスキーは秘密鍵をクラウドに保存するので安全でない」→ 不正確。秘密鍵は暗号化されてクラウドに保存され、デバイスロック解除なしでは使用できません。フィッシング耐性も維持されます。
誤り② 「FIDO2を導入すればフィッシングの被害は0になる」→ 不正確。FIDO2はフィッシングによる認証情報窃取を防ぎますが、添付ファイルのマルウェア実行などFIDO2とは別の攻撃経路は残ります。
誤り③ 「YubiKeyを使えばFIDO2の認証が必要ない」→ 誤。YubiKeyはFIDO2の「ローミング認証器」です。WebAuthnプロトコルを通じてFIDO2認証を行います。
関連用語
- 多要素認証(MFA)とFIDO2 — MFAの文脈でのFIDO2の位置付け
- 楕円曲線暗号(ECC) — FIDO2はECDSA(P-256)を標準使用
- フィッシング・ソーシャルエンジニアリング — FIDO2で防止できる攻撃
重要キーワード
| 用語 | 説明 |
|---|---|
| FIDO2 | パスワードレス認証の業界標準。WebAuthnとCTAPで構成 |
| WebAuthn | ブラウザとWebサーバ間のFIDO2認証プロトコル(W3C標準) |
| パスキー | FIDO2資格情報をクラウド同期可能にした実装 |
| rpId | FIDO2で鍵を紐付けるドメイン識別子。フィッシング耐性の技術的根拠 |
| 認証器 | 鍵ペアの生成・保管・署名を行うデバイスまたはソフトウェア |
| フィッシング耐性 | 偽サイトでは鍵が使えないためフィッシングで認証情報を奪えない性質 |