マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

経緯

  • 2015年11月19日、WWW技術の標準化団体である
    W3Cに FIDO 2.0 のWeb API仕様を提案した。
  • FIDO 2.0は、FIDO 1.0の拡張ではなく、
  • UAFとU2Fを統合(補完し置換する)し、
    OSやブラウザといったプラットフォームのサポートに最適化する、
    プラットフォーム(ブラウザやOS)によるネイティブサポートのための仕様。
  • OSやブラウザのAPIが定義され、FIDO Clientといった中継のためのレイヤが無くなったため、
    依拠当事者(Relying Party)から直接リクエストができる、見かけ上U2Fに近いシンプルな構成になった。

ざっくり

  • パスワードやOTPに代わる新しい認証
  • 秘密鍵で署名(=登録)をして、公開鍵で検証(=認証)

2つの仕様

以下の2つの仕様から成る。

Webプラットフォーム API仕様(WebAuthn?: Web Authentication API

  • Web API(抽象的なAPIを通じたメッセージの通信)仕様
    • ブラウザでの普及を想定し、標準化団体W3Cへ、本仕様を提案
    • 秘密鍵を使用して認証器のコンテキストに関する情報に署名。

デバイス間連携仕様(CTAP: Client To Authenticator Protocol)

シータップ

  • PC、スマホなどのデバイス組込みではない認証器に対応するための通信プロトコルの規定。
  • EAP: External Authenticator Protocol
    USB / Bluetooth / NFCトランスポートバインディングを規定
    • プラットフォームと外部認証器間の通信プロトコルを規定。
    • 具体的な通信路(USB / Bluetooth / NFCなど)の適用が可能。
  • CTAP1、CTAP2
    • CTAP1 : FIDO1 U2Fのスペック
    • CTAP2 : FIDO2のスペック

デバイス

U2Fセキュリティ・キーの使用

U2Fセキュリティ・キーを使用している場合、

platform or cross-platform 認証器

認証器 = Authenticator

  • platform Authenticator : OS組み込み機能
  • cross-platform Authenticator : セキュリティ・キー

登場人物のまとめ

ユーザ

  • ユーザ同意
    ユーザが求めている内容に同意すること

依拠当事者(Relying Party)

認証器(Authenticator)

クライアント

  • クライアント側
    以下を接着するすべての組み合わせ。
    • クライアント・プラットフォーム
    • 認証プロバイダ
    • およびすべて
  • クライアント・デバイス
    • クライアントが実行されるハードウェア・デバイス
    • 認証器は、クライアント・デバイスにバインドされる。
  • クライアント・プラットフォーム

詳細

処理シーケンス

認証器NativeのAPIReelying Party(RP Client)WebAPI通信サーバ(RP Server or FIDO2 Server)
PINコードデバイス間連携仕様
・CTAP: Client To Authenticator Protocol
・EAP: External Authenticator Protocol
Web Authentication API(別名 WebAuthn)各種WWWブラウザ各種HttpClient?Server Requirements and Transport Binding Profileサービス or IdP/STS
ジェスチャー
生体認証
 指紋
 静脈Nativeアプリ
 虹彩
 

登録(Attestation)

RegistrationでAttestationされる。

  • 認証器で鍵を生成・登録するAPIを使用して処理を行う。
    (新しいアカウント、または既存のアカウントへ、
    新しい非対称鍵ペアの関連付ける認証情報を作成する。)
    1. サービス要求(RP Client ---> RP Server)
    2. 認証要求(クライアント <--- RP Client <--- RP Server)
    3. クレデンシャル生成要求(NativeのAPI ---> 認証器
    4. クレデンシャル生成 「この機器(認証器)をサーバに登録しますか?」
      • ユーザーによる明示的な操作(ジェスチャー)
      • 秘密鍵・公開鍵のペアを生成することを承認(確認)
    5. クレデンシャル情報の応答(NativeのAPI ---> RP Client ---> RP Server)
      公開鍵、鍵情報 (署名つき) をサーバに伝達して登録。

認証(Assertion)

AuthenticationでAssertionされる。

  • 登録済みの鍵を使って認証用の署名を生成するAPIを使用して処理を行う。
    (既存の認証情報セットを使用し、ログインまたは二要素認証をする。)
    1. サービス要求(RP Client ---> RP Server)
    2. 認証要求(NativeのAPI <--- RP Client <--- RP Server)
    3. FIDO2認証要求(NativeのAPI ---> 認証器
    4. クレデンシャルの検索
      「この機器(認証器)を用いて認証しますか?」
      • ユーザーによる明示的な操作(ジェスチャー)
      • 既存のクレデンシャルを利用することを承認(確認)
    5. 認証器による認証
      • デバイス側の認証器で認証を完了させ、
      • 認証結果を端末側が持つ秘密鍵を使って署名する。
    6. アサーション応答(RP Client ---> RP Server)
      署名されたアサーション(署名つきchallenge + その他データ)を
      サーバに伝達し、署名検証することでログインできる。

各仕様

Web API for accessing FIDO 2.0 credentials

JavaScriptを介してFIDO 2.0資格情報にアクセスするための、
Web Authentication API(別名 WebAuthn)を定義。

  • Webアプリケーション(RPアプリケーション)から利用される
  • 登録シーケンスと、認証シーケンスに使用するAPIを定義している。
    • 認証器で鍵を生成する登録するAPI
    • 登録済みの鍵を使って認証用の署名をつくるAPI

Key Attestation Format

クライアントや認証器などのコンテキストを表現するための
アサーションや、クレデンシャルのフォーマットを定義している。

  • 認証器の信頼性、秘密鍵管理の信頼性を証明するための情報のデータ構造を定義
  • 具体的な個別の環境を利用する(TPMが暗号カーネルとして機能する)場合のプロファイル。
    仕様が進化するにつれて、より多くのプロファイルが追加される予定。

Signature Format

FIDO 2.0準拠クレデンシャル用の署名フォーマット(上記のアサーションに署名を行う)

  • アサーションを表すデータ構造
  • 認証器で署名するためのバイトストリームにシリアライズされる方法
  • 結果のシグネチャとそれに関連するデータの表現

OSネイティブ用は?

つまずきポイント

WWWブラウザ

実装事例

アカウント・リカバリ

デバイスの紛失に対する

  • 二要素認証の解除
  • アカウント・リカバリ

の検討が必要。

フィッシング

  • 以下のような処理でフィッシングができてしまう。
  • ChromeではcaBLEと呼ばれるBLEの接続方法を検討している。

参考

W3C

FIDO Alliance

Yahoo! JAPAN

コーポレートブログ

Tech Blog

ニュース

2015

2016

2018

Qiita

WebAuthn

CTAP

OSSコンソーシアム

Security Key by YubicoというFIDO2.0認証器を評価する


Tags: :IT国際標準, :認証基盤, :FIDO


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-05-08 (土) 13:12:00 (1078d)