FIDO 認証
- 概要
FIDO (Fast IDentity Online) Alliance は,従来のパスワードとユーザIDによる認証に代わる生体認証などを利用したより強力なオンライン認証技術の標準化を目指す非営利の標準化団体である (2012年7月発足).
FIDO 認証は,生体認証技術や TPM (Trusted Platform Module),NFC (Near Field Communication) に対応するとともに,各種デバイスやプラグインにも対応している.
FIDO 1.0 では,次の二つの標準プロトコルを規定している.
- U2F (Universal Second Factor) 標準
既存の認証方式を導入しているWebサービスなどが,二要素認証を導入する際に用いる方式である.利用者は,従来通りのユーザIDとパスワードによる認証後,U2F に対応した USB端末や NFC端末 (認証器) を使ってログインする.
- UAF (Universal Authentication Framework) 標準
端末内に生体認証データや PIN を登録して Webサービスなどにその端末を登録すれば,利用者が端末で生体認証(または,PIN 入力もしくはその併用) を行う事でログインが可能になる方式.
U2FとUAFはともに公開鍵暗号方式を基盤技術として使用している.FIDO は,指紋センサーなどを搭載した認証器で認証した結果を端末側が持つ秘密鍵を使って署名し,認証サーバ上に事前に登録された公開鍵で署名を検証して認証する.信頼できる認証器であるか否かの保証については,仕様を策定している FIDO Allianceが第三者として認定をして正規の認証装置であることを保証する証明書を提供している.FIDO 認定の認証器の結果を信頼するサーバやアプリケーションは Relying Party (RP) と呼ばれる (RP Server,および RP Application).
- FIDO の利点
- セキュリティの向上
パスワードへの依存を減らし,認証の安全性が向上する.また,パスワードなどの認証情報がネットワークに流れない.
- コスト削減
標準規格のため,認証器はサービスに共通的に使える.
- プライバシー保護
サーバ側にパスワード情報や生体情報を持たない.「端末側での本人確認」と「サーバ側での認証」を分けている.
- 操作性
生体認証や端末のボタン操作など認証操作が簡単になる.パスワードの管理を不要にできる.
U2Fは従来のパスワード+ワンタイムパスコードに代表される「記憶認証」+「所持認証」の組み合わせた2要素認証プロトコルである.U2F は認証器 (Authenticator) そのものを所持していることを提示するアクション(認証器上のボタンを押す動作)をとることで認証されるため,フィッシングへの耐性がある.なお,クライアント側とサーバ側の通信は HTTPS を用いて暗号化される.
パスワード認証した上で登録などを行うので,ユーザIDと認証器で生成した鍵の紐付けが比較的簡単であり,またプロトコルのシーケンスが比較的シンプルであるため,RP が U2F 対応するための実装コストは比較的少ない.
利用者は,次のような操作を行う.
- パスワードとユーザIDで,オンラインサービスにログインする.
- 利用するオンラインサービスに USBトークンなどの認証器を登録する.このとき,該当オンラインサービス用の秘密鍵と公開鍵のペアが認証器内に自動的に生成され,公開鍵のみがオンラインサービス側に送られる.
- オンラインサービスを利用する際,利用者が認証器の確認ボタンを押すと,認証器内の秘密鍵で署名した認証情報がオンラインサービス側のサーバに送られる.このとき利用する秘密鍵はサーバ側から指示される情報から決定される.
- オンラインサービス側で保管している公開鍵で署名を検証し,検証が成功すれば認証が完了する.
- 認証完了通知を受けた利用者は,オンラインサービスを利用することができる.
UAFはパスワードを使用せず,「所持認証」+「生体認証など」を利用した認証を提供するプロトコルである.端末上での生体認証を加えることにより,端末紛失時にもデータを守ることができるようになる.なお,端末で認証に使った生体情報は端末内のセキュアな領域内で管理され,通信路にデータが流れることはない.
UAFの特徴は,RP が許容する認証ポリシーを組み込めることにある.
例えば,サービス提供者がセキュアな認証を求めるケースでは,相応の生体認証が可能な認証装置を搭載している端末のみに利用を制限できる.
また.生体認証機能がなくても PINコード入力をするような認証器も許容するなど,様々な認証方式に対応できる.
認証時の流れは,次のようになる(事前に認証器により生成された鍵ペアの内,公開鍵を認証サーバに登録する処理を行う).
- 利用者は,オンラインサービスにログインする.
- 認証サーバ側 (RP サーバ,FIDO サーバ)が認証リクエストを受け,認証用のチャレンジデータをクライアント側 (RP アプリケーション,FIDO クライアント) に送る.
- FIDO クライアントは,有効な認証器を確認し,認証器に認証要求を出す.
- 利用者が認証器を使い,生体認証やパスコードなどを入力する.
- 秘密鍵を用いて認証情報に対する署名データを生成し,認証レスポンスとして認証サーバに送る.
- 認証サーバで保持している公開鍵で署名を検証し,検証が成功すれば認証OKをクライアントに通知する.
- 認証完了通知を受けた利用者は,オンラインサービスを利用することができる.
FIDO 2.0
FIDO Alliance は 2015年11月19日,WWW技術の標準化団体であるW3Cに FIDO 2.0 のWeb API仕様を提案している.FIDO 認証の OS や Webブラウザへの導入を目指している.
FIDO 2.0 では,U2FとUAFは統合されており,次のような仕様が規定されている.
- WebAPI for Accessing Credential API
RP アプリケーションから利用されるWebブラウザ/OSのネイティブAPI であり,認証器で鍵を生成・登録するAPIと登録済みの鍵を使って認証用の署名を生成するAPIがある.
- Signature Format
上記のAPIで生成される RPサーバに送られる署名データのフォーマット仕様.
- Key Attestation Format
RP サーバ側で署名検証時に必要な認証器の信頼性を証明するためのデータのフォーマット仕様.
- External Authentication Protocol
端末組込みではない認証装置に対応するためのプラットフォーム層と外部認証装置の間の通信プロトコルの規定