FIDO / FIDO2とは
FIDO(Fast Identity Online)Allianceが策定したパスワードレス認証の国際標準規格群。公開鍵暗号方式を使い、パスワードレスかつフィッシング耐性の高い認証を実現する。Google・Apple・Microsoftが実装に参加している。
FIDOの仕組み
FIDOは公開鍵暗号を使います。認証登録時に、デバイスは「秘密鍵」と「公開鍵」のペアを生成します。 秘密鍵はデバイス内のセキュリティチップ(TPM・Secure Enclave等)に保存され、外部に送出されません。 公開鍵はサーバーに登録されます。
認証時、サーバーは「チャレンジ(乱数)」を送信します。 デバイスはユーザーの生体認証(指紋・顔)を確認してから秘密鍵でチャレンジに署名し、 署名をサーバーに返します。サーバーは登録済み公開鍵で署名を検証して認証成功と判断します。 秘密鍵は外部に出ないため、サーバー側が漏洩してもパスワードは盗めません。
FIDO・FIDO2・WebAuthnの関係
- FIDO U2F: 2014年策定。パスワード+物理セキュリティキー(YubiKey等)の二段階認証
- FIDO2: 2018年策定。パスワードなしの単独認証を可能にした
- WebAuthn: FIDO2の一部でW3Cが標準化したWebブラウザ用API。ブラウザから直接FIDOを利用できる
- パスキー: FIDO2をさらに使いやすくしたもの。クラウド同期によりマルチデバイス対応
メリット
- フィッシング完全耐性: チャレンジはドメイン固有のため、偽サイトでは使えない
- パスワードレス: パスワードの記憶・管理が不要
- クレデンシャル漏洩リスクなし: サーバーには公開鍵のみ保存、秘密鍵は外部に出ない
- 生体認証との統合: 指紋・顔認証と組み合わせて高いセキュリティと利便性を両立
デメリット
- 対応するデバイス・ブラウザが必要(古いデバイスでは利用できない)
- デバイス紛失時の復旧手順を事前に設定しておく必要がある
- 導入コスト・開発工数がSMS認証より高い
電話認証との使い分け
FIDOは高セキュリティが要求されるアプリ(金融・エンタープライズ)に適しています。 一方、電話番号の実在確認(スパム対策・不正登録防止)には 電話認証が軽量で実装が簡単です。 用途に応じて使い分けることが推奨されます。