Overview
FIDO2(Fast Identity Online 2)は、FIDO Alliance(ファイド・アライアンス)とW3C(World Wide Web Consortium)が共同で策定した、パスワードに依存しない認証の国際標準規格です。FIDO2はWebAuthn(Web Authentication API)とCTAP2(Client to Authenticator Protocol 2)の2つの仕様で構成されており、公開鍵暗号方式を基盤としたフィッシング耐性のある強力な認証を実現します。
従来のパスワード認証は、フィッシング、リスト型攻撃、ブルートフォース攻撃などの脅威に常にさらされてきました。FIDOアライアンスは、Microsoft、Google、Apple、Amazon、Metaなど世界の主要テクノロジー企業が参加する業界団体であり、パスワードへの依存を解消することを目的としています。2012年にFIDO 1.0(UAF/U2F)が策定され、2018年にFIDO2として大幅に進化しました。
FIDO2の革新的な点は、認証に必要な秘密鍵がユーザーのデバイスから一切外部に出ないことです。サーバー側には公開鍵のみが保存されるため、サーバーが侵害されても認証情報が漏洩するリスクがありません。また、認証はオリジン(ドメイン)に紐づけられているため、フィッシングサイトでの認証情報の窃取が原理的に不可能です。
2022年以降、Apple、Google、Microsoftの3社がパスキー(Passkeys)として、FIDO2認証情報のクラウド同期機能を発表しました。これにより、デバイスを紛失してもパスキーが失われず、新しいデバイスでもシームレスに認証が可能になり、FIDO2の普及が加速しています。
Details
FIDO2のアーキテクチャ構成
FIDO2は以下の2つの主要仕様で構成されています。
- WebAuthn(Web Authentication API):W3Cが標準化したWebブラウザ向けのJavaScript API。Webアプリケーションが認証器(Authenticator)と通信するためのインターフェースを提供する。すべての主要ブラウザ(Chrome、Firefox、Safari、Edge)がサポートしている。
- CTAP2(Client to Authenticator Protocol 2):クライアント(ブラウザやOS)と外部認証器(セキュリティキーなど)間の通信プロトコル。USB、NFC、Bluetoothを介した通信をサポートする。
認証器の種類
- プラットフォーム認証器(Platform Authenticator):デバイスに内蔵された認証器。Touch ID、Face ID、Windows Hello、Androidの指紋認証など。デバイスから取り外しできない。
- ローミング認証器(Roaming Authenticator):USB、NFC、Bluetoothで接続する外部認証器。YubiKey、Titan Security Keyなどのセキュリティキー。複数のデバイスで利用可能。
登録(Registration)フロー
- ユーザーがWebサイトでアカウント登録または認証器の登録を開始する。
- サーバー(Relying Party)がチャレンジ(ランダムなデータ)と登録オプション(RP ID、ユーザー情報など)をクライアントに送信する。
- クライアントが認証器にCredential作成を要求する。認証器はユーザーの本人確認(指紋、PIN等)を行う。
- 認証器が新しい公開鍵/秘密鍵ペアを生成する。秘密鍵はデバイス内に安全に保存され、公開鍵とAttestation(認証器の証明情報)がサーバーに返される。
- サーバーが公開鍵とCredential IDを保存して登録完了。
認証(Authentication)フロー
- ユーザーがログインを開始する。
- サーバーがチャレンジと許可されたCredential IDのリストをクライアントに送信する。
- クライアントが認証器にAssertion(署名付き応答)の生成を要求する。認証器がユーザーの本人確認を行う。
- 認証器がチャレンジを秘密鍵で署名し、Assertionをサーバーに返す。
- サーバーが保存済みの公開鍵で署名を検証し、認証成功となる。
パスキー(Passkeys)の革新
パスキーはFIDO2認証情報をiCloudキーチェーン、Googleパスワードマネージャー、Microsoft Accountなどを通じてデバイス間で同期する仕組みです。従来のFIDO2セキュリティキーは特定のハードウェアに紐づいていたため、紛失時のリカバリが課題でしたが、パスキーはクラウド同期によりこの問題を解決しました。2023年以降、GitHub、Amazon、PayPal、Yahoo! JAPANなど多くのサービスがパスキーに対応しています。
フィッシング耐性の技術的根拠
WebAuthnでは、認証器が署名を生成する際にオリジン(RP ID)を署名対象データに含めます。例えば、正規サイトのRP IDが「example.com」の場合、フィッシングサイト「examp1e.com」では認証器が異なるオリジンを検出してCredentialの使用を拒否します。これにより、中間者攻撃やリアルタイムフィッシングに対しても原理的に安全です。
Security Measures
- 01段階的なパスキー導入:まずはパスワード+FIDO2の二要素認証から始め、ユーザーの習熟に応じてパスワードレス認証に移行する。重要システムや特権アカウントから優先的にFIDO2認証を適用する。
- 02複数の認証器の登録推奨:プラットフォーム認証器(指紋/顔認証)とローミング認証器(セキュリティキー)の両方を登録するよう促す。1つのデバイスの紛失や故障に備えてバックアップ認証器を必ず設定する。
- 03Attestation検証の実装:エンタープライズ環境では、認証器のAttestation(証明情報)を検証し、承認済みの認証器(FIPS 140-2認証取得デバイスなど)のみを許可する。FIDO Metadata Service(MDS)を活用して認証器の安全性を確認する。
- 04リカバリフローの安全な設計:パスキーの紛失・リセット時のリカバリフローを安全に設計する。リカバリコード、管理者による復旧、身元確認プロセスなどの多層的なリカバリメカニズムを用意する。リカバリフロー自体がフィッシング攻撃の対象にならないよう注意する。
- 05レガシー認証との並行運用計画:FIDO2非対応の古いブラウザやデバイスへの対応方針を策定する。移行期間中はパスワード認証のフォールバックを維持しつつ、フォールバック経路のセキュリティ(MFA必須など)を強化する。
- 06ユーザー教育とUX最適化:パスキーの概念と使い方をユーザーに分かりやすく説明する教育プログラムを実施する。登録フローのUXを最適化し、ユーザーがストレスなくパスキーを設定できる環境を整備する。パスキー導入率のKPIを設定して進捗を管理する。
Incidents
📋 Googleのセキュリティキー義務化によるフィッシング撲滅(2018年)
2018年、Googleは全従業員(85,000人以上)にFIDO U2Fセキュリティキーの使用を義務化しました。その結果、フィッシング攻撃による従業員アカウントの侵害件数がゼロになったと発表しました。従来のSMS認証やOTP(ワンタイムパスワード)認証では、リアルタイムフィッシングやSIMスワップ攻撃による被害が発生していましたが、ハードウェアセキュリティキーのオリジン検証機能によりこれらの攻撃が完全に防止されました。この成功事例は、FIDO認証のフィッシング耐性を実証する決定的な事例として業界に大きな影響を与えました。
📋 YubiKey FIPS認証問題とリコール対応(2019年)
2019年6月、Yubico社はFIPS(連邦情報処理標準)認証を取得した一部のYubiKey FIPSシリーズにおいて、ファームウェアの脆弱性(暗号化ランダム性の不足)が発見されたことを公表しました。影響を受けたのはYubiKey FIPS、YubiKey Nano FIPS、YubiKey C FIPS、YubiKey C Nano FIPSの特定ファームウェアバージョンで、ECDSA署名における乱数生成の予測可能性が問題でした。Yubicoは影響を受けたデバイスの無償交換プログラムを実施しました。この事例は、ハードウェア認証器自体のセキュリティ検証の重要性と、サプライチェーンにおける品質管理の課題を浮き彫りにしました。
📋 エンタープライズにおけるパスキー導入の課題(2023年〜)
2023年以降、パスキーの消費者向けサービスでの普及が進む一方で、エンタープライズ環境での導入には特有の課題が浮上しています。個人所有デバイスへのパスキー同期による企業データの管理境界の曖昧化、退職者のパスキー無効化プロセスの複雑さ、BYOD(個人デバイスの業務利用)環境でのパスキー管理、レガシーシステムとの互換性問題などが報告されています。特に、パスキーがiCloudやGoogleアカウントに同期される場合、従業員の個人アカウントを通じて企業の認証情報が流出するリスクが懸念されています。FIDO Allianceはエンタープライズ向けガイダンスの整備を進めています。