気まぐれブログ(日記・技術記事・研究のことなど)

気まぐれに更新します.温かい目で見ていただければ...

FIDO認証とは

目次

はじめに

本記事では,FIDOアライアンスが推進する認証技術の仕様,及びその標準化活動の動向について解説する.

既存の認証方式の問題点

現在最も使用されている認証方式は,ユーザを一意に表す「ID」と,ユーザが設定した「パスワード」の両者を組み合わせて正当性を確かめる方式である.普段利用しているアプリケーションの大多数はこの方式である.

この認証方式には,「利便性」と「安全性」に問題がある.

利便性の面では,利用するサービスが多くなると,それぞれのサービスごとにパスワードを覚えなければならず,忘れてしまうことも多い.また小文字・大文字・数字を組み合わせたパスワードの場合,スマートフォンや小型機器で入力するのは不便となる場合がある.

安全性の面では,近年「リスト型攻撃」と呼ばれる,何らかの手段で漏洩したIDとパスワードの組み合わせのリストを使用することで,不正アクセスを試みるサイバー攻撃が流行しているが,既存の認証方式はリスト型攻撃を受けやすい.また,本来パスワードはサイトごとに違う文字列を設定すべきだが,多くの人はパスワードを使いまわしている.その場合,もしとあるサイトのパスワードが漏洩してしまったら,他のサイトでの不正アクセスは免れない.

パスワードへの依存度を減らしながら,利便性と安全性の問題点を同時に解決する技術として,FIDO認証が開発されている.

FIDO認証モデル

既存の認証モデルは,利用者がIDとパスワードを入力し,それを認証サーバが確認し,認証の可否を決定する . 一方,FIDO認証モデルは,認証自体は利用者のデバイス(スマホやPCなど)など手元にある認証器で完結し,その結果を事前に登録してある秘密鍵を用いて署名し,それを認証サーバに送信し,認証サーバは公開鍵を用いて署名を検証する.

既存の認証モデルとFIDO認証モデル
既存の認証モデルとFIDO認証モデル(引用:https://www.jstage.jst.go.jp/article/essfr/12/2/12_115/_pdf/-char/ja)

FIDO認証の優れている点は,クレデンシャルな情報がネットワーク上に流出しない点である. 従来の認証方式では,利用者を偽サイトに誘導して利用者のクレデンシャルな情報を盗み取る「フィッシング詐欺」による攻撃が可能であったが,FIDO認証はそのような攻撃にも耐性がある.

FIDO認証の大きな特徴として,利用者の検証結果の妥当性確認のために,「公開鍵暗号方式」を活用している点にある.利用者は,認証のために用いる認証器を,FIDO認証に対応したサーバ(FIDOサーバ)に事前に登録する.このとき,認証器は認証用の秘密鍵と公開鍵のペアを作成し,秘密鍵は認証器内に厳重に保管しておき,公開鍵はFIDOサーバに利用者IDと紐づけて保管する.

認証の際には,FIDOサーバから「チャレンジ」と呼ばれるランダム文字列が認証器に送付される.認証器は利用者の本人性を確認できた場合のみ,秘密鍵を用いてチャレンジに署名し,それをFIDOサーバに送付する. FIDOサーバは公開鍵を用いて署名を検証し,適切であると確認できた場合のみ認証が成功する.

FIDO認証の流れ
FIDO認証の流れ

FIDO認証は,「本人性のローカル検証」と,「認証結果の通知プロセス」を分離し,公開鍵暗号を使った1つの標準化プロトコルとしてまとめて提供したところが革新的であり,従来の認証方式とは原理的に異なる.

本人性の確認方式

認証器による本人性の確認方式は色々な手段が想定されているが,今のところは「生体認証」が有力である.例えば指紋,虹彩,顔,声紋など様々などを用いた認証が挙げられる.

ここで重要なのは,FIDOサーバは本人性確認や認証に必要な利用者の生体情報や秘密鍵などを保管する必要がないことである.従来の認証方式では,認証サーバがクレデンシャルなデータを保持していたため,個人情報の漏洩リスクがあった.FIDO認証に生体認証を適用することで,生体情報の管理コストを軽減でき,利用者のプライバシーを守ることもできる.

FIDO認証のアーキテクチャ

FIDO認証システムでは,上記までに述べた「認証器」と「FIDOサーバ」に加えて,認証器を実装しFIDOサーバと通信する「FIDOクライアント」を用いて構成される.認証器はFIDOクライアントと同一デバイスに実装されてもよく(内蔵認証器),異なるデバイスにおいて実装されても良い(外部認証器).

以上のような機能構成により,FIDO認証に対応した認証器であれば,認証器を認証のための1つの部品のように扱い,認証システムにプラグイン的に追加できる.

FIDO認証のアーキテクチャ
FIDO認証のアーキテクチャ(引用:https://www.jstage.jst.go.jp/article/essfr/12/2/12_115/_pdf/-char/ja)

またこのような構成を取ることにより,必要に応じて複数の認証器を組み合わせて「多段階認証」を実現することができる.例えばATMにおいて,残高照会には一つの認証方式のみ採用し,振込時は第二認証も適用し,高額な振込時は第三認証も適用したりと,セキュリティレベルに応じて認証手段を追加することができる.

FIDO認証の技術

技術仕様:FIDO UAFとU2F

現在の主なFIDO技術仕様として,FIDO UAFU2Fが存在する.

  • FIDO UAF

FIDO UAF仕様は,主にスマートフォン端末の利用を想定し,生体認証などの認証手段を用いて,パスワードレス認証を実現する.国内においては,NTTドコモがいち早く商用サービスに採用し,国外においても決済サービス等で広く使用されている. FIDO UAFでは,中間者攻撃への対応として,取引データも秘密鍵によって署名するため,仮に取引データを改ざんされたとしても,それを検出し,不正送金等を防止できるようにしている.

  • FIDO U2F

FIDO U2F仕様は,主にPC上でWebブラウザの利用を想定しており,パスワードを第一認証として用いた後,FIDOに対応した認証を補完するという,二要素認証をサポートしている. 利用者がネット上の何らかのサービスを利用中で認証する必要が発生した場合に,まず利用者は認証要求を受け,パスワードを用いて第一認証を行う.次に,利用中のデバイス(PC)に,あらかじめ登録ずみのセキュリティキーをUSBドングルに挿入し,ボタンに触れるなどの簡単な動作を行なって(第二認証),認証が完了する. FIDO U2Fにおけるデバイスには,USBキーやスマートカードのように着脱するものと,BLE(Bluetooth Low Energy)やNFC(Near Field Communication)の無線方式に対応している.これらはGoogle, Dropbox, GitHub, Facebookなどで採用されており,フィッシング対策として有効であるとの実証結果も報告されている.

認証器の信頼性

FIDO認証においては,認証器が秘密情報をセキュアに保管し,利用者の本人性検証,鍵ペアの作成,秘密鍵での署名を行う.FIDOサーバは認証器からの検証結果の妥当性を検証し,認証が完結する. この仕組みが機能するためには,「FIDOサーバが認証器からの結果を信頼できることが不可欠」である.

認証器の信頼性を確保するために,FIDO認証器には「アテステーション」と呼ばれる自己正当性を表明する機能が仕様化されている. アテステーション仕様では,色々な方式が規定されているが,一例として「基本アテステーション」を紹介する.基本アテステーションでは,認証器の工場出荷時に同一認証器モデルに対応したアテステーション用秘密鍵とその証明書をTEE(認証器のセキュア部分)などに格納する.認証器の正当性は,証明書のルート認証局への証明書連鎖を辿り,ルート認証局の信頼性により検証可能となる.この仕組み自体はPKI(公開鍵基盤)と変わらないが,基本アテステーションにおいては,全てのPKIの機能をサポートする必要はないことに注意されたい.

メタデータ

メタデータとは,認証器に関する様々な情報のことである.FIDOアライアンスが運用しているMDS(Metadata Service)を通じてメタデータを登録することができ,誰でもそのメタデータを閲覧することができる.FIDOサーバは,認証器に対応するメタデータを参照することで,認証器の受け入れ可否を判断することができる.

FIDO認証の処理

FIDO認証には,大きく以下の三つの処理がある.

  • 登録(Registration):認証器をFIDOサーバに登録する

  • 認証(Authentication):認証器を通じてFIDO認証を行う

  • 登録解除(Deregistration):認証器をFIDOサーバから登録解除する

ここで,FIDO UAFの登録フローを以下に示す.

FIDO UAFの登録フロー
FIDO UAFの登録フロー(引用:https://www.jstage.jst.go.jp/article/essfr/12/2/12_115/_pdf/-char/ja)

続いて,認証フローを以下に示す.

FUDO UAF 認証フロー(引用:https://www.jstage.jst.go.jp/article/essfr/12/2/12_115/_pdf/-char/ja)

登録フローと認証フローは,大まかな流れは一緒であるが,チャレンジに対して署名する際に使用する秘密鍵が異なる.登録フローにおいては,アテステーション用の秘密鍵を用いるが,認証フローにおいては,認証用の秘密鍵で署名する.

FIDO2 プロジェクト

FIDO認証の対応プラットフォーム拡大を目的とする「FIDO2 プロジェクト」を結成され,時期使用の策定が開始されている.FIDO2 プロジェクトにおいては,以下の二つの技術仕様を扱う.

  • Web認証 (Web Authentication)

  • CTAP (Client To Authenticator Protocol)

本記事の最後に,上記の二項目を説明する.

Web認証

Web認証仕様は,主要なWebプラットフォーム(OSやWebブラウザなど)にFIDO認証を組み込み,利用者がデバイスを購入することにより直ちにFIDO認証を利用できる環境にする方針の下に策定されている.既に,Chrome,Edge,Firefoxがサポートする実装が進められている.

CTAP

CTAPはデバイス間連携仕様であり,外部にあるデバイスの認証器に対して認証処理を依頼するための通信プロトコルである.例えば,PCのWebブラウザ上で認証が必要になった場合に,スマートフォンなどの外部デバイスを用いて認証が可能となる.この場合,2つのデバイス間はBLEやNFCを用いてローカル連携され,スマートフォンでの認証結果をWebブラウザのアプリケーションに送付する.他にも,FIDO U2Fと同様に,PCにUSBキーを挿入して,直接連携することも可能となる. CTAPにより,様々なサービスで認証が必要になったとしても,自分のスマートフォンなどを共通の認証器として利用することで,利便性が高くなる.さらに認証手段の拡張性が高まることで,認証システムの開発やデバイスのメンテナンスに関わるコストを削減できる可能性がある.

参考文献