TECHSCORE BLOG

クラウドCRMを提供するシナジーマーケティングのエンジニアブログです。

FIDO認証の仕組みを調べてみた

銀行や証券業界で利用されるスマホアプリでは、生体認証というパスワードレスの認証をサポートしているケースがほとんどです。
パスワードレス認証は従来のパスワード認証と比べると入力の手間がなく、便利で早いのが特徴と言えるのですが、セキュリティ面で安全でしょうか?
便利そうなので生体認証を利用しようかと思ったのですが、生体情報の漏洩は発生しないかなどの不安を覚えたので生体認証(=FIDO認証)の仕組みを調べてみました。

FIDO認証の誕生背景

ID/パスワードによる認証は一般的に普及している認証方式です。
パスワードの使いまわし、「abcde」「12345」のような単純なパスワードの使用などによるパスワードの漏洩や、一部サービス提供者の不適切なセキュリティ管理による認証情報の漏洩が問題視されてます。
パスワード認証の欠点を補うためにワンタイムパスワード認証、SMSによる二段階認証、生体認証などが開発されました。
その中でもスマホの普及により、生体認証をベースとした手軽でセキュアなオンライン認証基盤を実現するため、FIDO認証が注目を集めています。

FIDO認証とは

FIDO(ファイド)は、Fast IDentity Online(素早いオンライン認証)の略語で、従来のパスワード認証に変わる認証技術の一つです。
FIDOプロトコルは、ユーザーのプライバシーを保護するためにゼロから設計されており、さまざまなオンラインサービスで共同作業を行ったり、サービス間でユーザーを追跡したりするための情報を提供しません。

FIDO Allianceは、生体認証などを利用した新しいオンライン認証技術の標準化を目指して2012年7月に発足した非営利の標準化団体、業界団体です。
FIDOメンバーにはAmazon、Google、Apple、LINE、NTT docomoなど有名な企業があります。
FIDO Allianceは次のような活動を行っています。

  • ユーザー認証におけるパスワードへの依存を軽減するために、オープンで拡張性と相互運用性があるメカニズムを定義する技術仕様を開発します。
  • この仕様が世界中で円滑に採用されるよう、業界向けプログラムを運営します。
  • 正式な標準化を目的として、公認の標準化団体に成熟した技術仕様を提出します。

(引用元 : FIDOアライアンスの概要

FIDO認証を使用するために

FIDO認証を使用するためには登録と認証が必要です。

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

  1. ユーザーはサービス提供者が管理するFIDO認証登録システム(RPサーバ)のサイトにアクセスします。
    ※ 以下RPサーバをRPと略します。
  2. RPはFIDOサーバに公開鍵の登録を依頼します。
  3. FIDOサーバは依頼の要件を作成し、認証ポリシーとチャレンジ(Message)をRPに送信します。
  4. RPは認証ポリシーとチャレンジを認証器に送信します。
  5. 認証器はユーザーに認証(指紋、PINコードなど)を要求します。
  6. 認証が成功した場合、秘密鍵と公開鍵の認証用鍵ペアを作成します。
  7. RP経由で公開鍵、認証ポリシー、チャレンジをFIDOサーバに送信します。
  8. FIDOサーバは各情報の妥当性チェックを行い問題なければ、公開鍵をFIDOサーバに保存しRPに登録完了を通知します。
  9. RPはユーザーに登録完了を通知します。

認証(Authentication):登録した認証器を利用してFIDO認証を行う処理

  1. ユーザーはRPが提供する認証サイトにアクセスします。
  2. RPはFIDOサーバに認証を依頼します。
  3. FIDOサーバは依頼を受け入れ、認証ポリシーとチャレンジ(Message)をRPに送信します。
  4. RPは認証ポリシーとチャレンジを認証器に送信します。
  5. 認証器はユーザーに認証(指紋、PINコードなど)を要求します。
  6. 認証が成功した場合、秘密鍵を用いてチャレンジに署名します。
  7. RP経由で署名したデータ情報をFIDOサーバに送信します。
  8. FIDOサーバは保存した公開鍵を用いて署名データの検証を行い、検証結果をRPに通知します。
  9. RPは検証結果が正しければ、ログイン状態にします。

FIDO認証の特徴

FIDO認証では指紋、顔認証などの生体情報がデバイス外に出ることはありません。
また、FIDO認証は主要なプラットフォーム(Windows、Android、iOS)、および、
主要なブラウザ(Google Chrome、Mozilla Firefox、Microsoft Edge、Apple Safari)でサポートされています。

おわりに

FIDO認証はAmazon、Google、Appleなど世界のテクノロジーリーダーに支持されていて、よりシンプルで強力なセキュリティを実現しています。
FIDO仕様では、ユーザーの資格情報はユーザーのデバイスに保持する必要があり、プロバイダーやサービスと共有されることはありません。
FIDO認証を利用した生体認証はストレスのないユーザー体験と高セキュリティを実現しているため、FIDO認証を採用しているスマホアプリはパスワード認証方式よりも便利で安全だと考えられています。
FIDO認証技術はスマホだけでなく、Windows HelloYahoo! JAPANのようなPC版でも採用されています。
将来はPC版のアプリへのログインにもっとFIDO認証技術が採用されるのではないかと思います。

生体認証を使用する前はセキュリティ上問題はないか色々不安がありましたが、FIDO認証の仕組みを調査して安全に利用できるものと理解できました。
筆者も生体認証をサポートするスマホアプリの認証を従来のパスワード入力から生体認証に変えました。

シナジーマーケティング株式会社では一緒に働く仲間を募集しています。