Skip to content

Instantly share code, notes, and snippets.

@y-takagi
Last active September 12, 2020 10:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save y-takagi/f6b437a2390f5e82eed942330c1192df to your computer and use it in GitHub Desktop.
Save y-takagi/f6b437a2390f5e82eed942330c1192df to your computer and use it in GitHub Desktop.
FIDO コトハジメ

FIDO コトハジメ

はじめに

この資料はFIDOについて調べた内容を、自分なりに解釈してまとめた内容となっています。不適切な説明がされている可能性もあるのでその点はご注意ください。

FIDO とは

Fast Identity Onlineの略語で、従来のID/Passwordによる本人認証に代わる認証技術としてFIDO Allianceによって規格の策定と普及推進が行われている

認証の3要素

  • 知識
    • パスワードや秘密の質問など、本人しか知らないこと
  • 所有
    • セキュリティキーなど、本人しか持ってない特定のデバイス
  • 生体
    • ユーザ自身の指紋や虹彩、静脈や顔など

パスワード認証の問題点

  • 知識要素のみによる認証
  • パスワードの使い回しによるリスト攻撃
  • 中間者攻撃(e.g. フィッシングサイト)に対する耐性がない
  • パスワード管理が煩雑になりがち

FIDOのコンセプト

  • 安全性
  • 利便性
  • 標準化

FIDOの認証モデル

標準的な公開鍵暗号方式を採用することで堅牢な認証を実現している s_414D0285E313592EADBD8F630DCA31DC8806F39BEBD5C926F9F6DEE3E151DC2F_1575816959834_FIDO drawio-overview

ローカル検証

FIDO認証プロセスでは、ローカルな検証とオンライン認証の2つのプロセスに分離されてプロトコル標準化されている。そのため、サーバ側の処理を変えずに、多様なローカル検証方式をとれる。 s_414D0285E313592EADBD8F630DCA31DC8806F39BEBD5C926F9F6DEE3E151DC2F_1575818880468_FIDO drawio-client

FIDO認証の安全性

  • 多要素認証 (所有 + 知識 or 生体)
  • 認証に公開鍵暗号方式を採用することで、クレデンシャル情報が外部に漏れるのを防ぐ
    • リスト攻撃に耐性あり
  • 認証器はサービス(origin)毎に鍵のペアを保管している
    • フィッシングに耐性あり

FIDO認証モデルに基づく仕様群

  • FIDO 1.0
    • UAF (Universal Authentication Framework)
    • U2F (Universal Second Factor) (i)
  • FIDO 2.0
    • WebAuthn (Web Authentication) (ii)
    • CTAP2 (Client to Authenticator Protocol)

(i) FIDO2の登場によりCTAP1に名称変更 (ii) WebAuthnはW3Cとして仕様化

UAF

  • パスワードレス型
  • 生体情報(生体)と、署名(所有)による2要素認証
  • 代表的な認証器
    • BioPass FIDO2
    • YubiKey Bio

U2F

  • パスワード補完型
  • パスワード(知識)と、署名(所有)による2要素認証
  • 代表的な認証器
    • YubiKey
    • Titan

FIDO2

  • FIDO認証の対応プラットフォーム拡大を目的に結成されたプロジェクト
  • WebAuthnとCTAPで構成されている
  • WebAuthn (Web認証)
    • 主要なWebプラットフォーム(OSやブラウザ)でFIDO認証を利用するための仕様
    • ブラウザから認証器にアクセスするためのAPIも規格化
    • CTAP2と連携するものだが、CTAP1も利用可能
  • CTAP2 (デバイス間連携仕様)
    • UAFとU2Fを統合したもの
      • 内部・外部認証器に対して認証処理を委ねるためのプロトコルを規定
      • パスワードレス(生体認証)、第二要素、または多要素の認証をサポート

認定プログラム

FIDO認証では、クライアント、サーバ、認証器の3つのロールが存在し、それぞれ異なる事業者から提供される可能性がある。各製品の仕様への適合性や相互接続性、及び認証器のセキュリティの確保は非常に重要である。そこでFIDOアライアンスは、各ロールを検証する認定試験を設けている。

  • 機能試験
    • 適合性テスト
    • 相互接続性テスト
  • 認証器のセキュリティ認定レベル試験
  • 生体認証部品の試験

参考文献

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment