「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次  †
概要  †
2015年11月19日、WWW技術の標準化団体であるW3Cに FIDO 2.0 のWeb API仕様を提案
- UAFとU2Fを統合(補完し置換する)し、
OSやブラウザといったプラットフォームのサポートに最適化する、
プラットフォーム(ブラウザやOS)によるネイティブサポートのための仕様。 
- OSやブラウザのAPIへの定義され、FIDO Clientといった中継のためのレイヤが無くなったため、
RPアプリケーションから直接リクエストができる、見かけ上U2Fに近いシンプルな構成になった。 
- また、あるサービスに登録済みの認証デバイスによるFIDO認証を通じて、
未登録の新たな端末からサービスにログインできる機能が使えるようになる。 
- (例)PC上のアプリケーション利用時の認証を、スマホで行う。
- PC-スマホ間のデバイス連携機能で、スマホを認証器として用い
 
- これにより、スマホに認証機能を集約させることができる。
 
 
以下の2つの仕様からなる。  †
Webプラットフォーム API仕様(WebAuthn?)  †
- Web API(抽象的なAPIを通じたメッセージの通信)仕様
- ブラウザでの普及を想定し、標準化団体W3Cへ、本仕様を提案
 
- 秘密鍵を使用してクライアントや認証器などのコンテキストに関する情報に署名。
 
 
デバイス間連携仕様(CTAP: Client To Authenticator Protocol)  †
- デバイス組込みではない認証器に対応するための通信プロトコルの規定。
 
- EAP: External Authenticator Protocol
USB/Bluetooth/NFCトランスポートバインディングを規定
- プラットフォームと外部認証器間の通信プロトコルを規定。
 
- 具体的な通信路(USB/Bluetooth/NFCなど)の適用が可能。
 
 
U2Fセキュリティキーの使用  †
U2Fセキュリティキーを使用している場合、
- FIDO2は後方互換性を提供するため、WebAuthn?にも使用できる。
 
- FIDO2では、UAFの機能を実行できるが、プロトコルは異なる。
 
詳細  †
処理シーケンス  †
| 様々なFIDO Authenticator(認証器) |  | NativeのAPI | クライアント(FIDO2 Client) | JavaScriptのAPI | WWWブラウザ | WebAPI | 通信(FIDO2標準プロトコル・メッセージ) | サーバ( FIDO2 Server) | 
| ・ | 生体認証 | <---> ・CTAP: Client To Authenticator Protocol ・EAP: External Authenticator Protocol | 各種OS | 以下は同じものを指している?  - Web Authentication API(別名 WebAuthn?)  - Web API for accessing FIDO 2.0 credentials (WebAPIと言っているが所謂、WebAPIではない...。) | 各種ブラウザ | 各種HttpClient? | <---> ここの仕様は存在しない? | サービス or IdP/STS | 
|   | ・ | 指紋 | 
|   | ・ | 静脈 | 
|   | ・ | 虹彩 | 
|   | ・ | 顔 | 
| ・ | その他の認証方法 | 
|   | ・ | PINコード | 
|   | ・ | ジェスチャー | 
 
登録(Attestation)  †
- 認証器で鍵を生成・登録するAPIを使用して処理を行う。
- サービス要求(RP Client ---> RP Server---> FIDO2 Server)
 
- 認証要求(FIDO2 Client <--- FIDO2 Server)
 
- クレデンシャル生成要求(FIDO2 Client ---> 認証器)
 
- クレデンシャル生成
「この機器(認証器)をサーバに登録しますか?」
- ユーザーによる明示的な操作(ジェスチャー)
 
- 秘密鍵・公開鍵のペアを生成することを承認(確認)
 
 
- クレデンシャル情報の応答(FIDO2 Client ---> FIDO2 Server)
公開鍵、鍵情報 (署名つき) をサーバに伝達して登録。 
 
- "none"(既定値)
ユーザー名/パスワードをFIDO2に切り替える場合。
(FIDO2はパスワードよりも優れていると考える場合) 
- "indirect"
スマートカードまたはUAFから移行する場合、
認証器の信頼性をattestation statement から確認する必要がある。
クライアントがattestation statement を取得する方法を決定できる。 
- "direct"
スマートカードまたはUAFから移行する場合、
認証器の信頼性をattestation statement から確認する必要がある。
サーバーがattestation statement を必要とすることを示す。 
認証(Assertion)  †
- 登録済みの鍵を使って認証用の署名を生成するAPIを使用して処理を行う。
- サービス要求(RP Application ---> RP Server---> FIDO2 Server)
 
- 認証要求(FIDO2 Client <--- FIDO2 Server)
 
- FIDO2認証要求(FIDO2 Client ---> 認証器)
 
- クレデンシャルの検索
「この機器(認証器)を用いて認証しますか?」
- ユーザーによる明示的な操作(ジェスチャー)
 
- 既存のクレデンシャルを利用することを承認(確認)
 
 
- 認証器による認証
- デバイス側の認証器で認証を完了させ、
 
- 認証結果を端末側が持つ秘密鍵を使って署名する。
 
 
- アサーション応答(FIDO2 Client ---> FIDO2 Server)
署名されたアサーション(署名つきchallenge + その他データ)を
サーバに伝達し、署名検証することでログインできる。 
 
クライアント・サーバ  †
指紋認証USBデバイス、虹彩認証対応スマホなどの、
認証器から、登録(Attestation)、認証(Assertion)の結果を、
標準化されたAPIで受け取ることができる。
WWW Browser  †
JavaScriptのAPIを使用する。
FIDO2 Client  †
NativeのAPIを使用する。
各仕様  †
FIDOサーバ側のWebAPIのインターフェイス定義は発見できず(未定義?)。
どうも、Web Authentication API(別名 WebAuthn?)と同じものを指している模様。
# WebAPI for Accessing Credential APIが、Web Authentication API(別名 WebAuthn?)に準拠?
- Webブラウザ用と、OSネイティブ用のAPIがある。
 
- 登録シーケンスと、認証シーケンスに使用するAPIを定義している。
- 認証器で鍵を生成する登録するAPI
 
- 登録済みの鍵を使って認証用の署名をつくるAPI
 
 
Key Attestation Format  †
クライアントや認証器などのコンテキストを表現するための
アサーションや、クレデンシャルのフォーマットを定義している。
- 認証器の信頼性、秘密鍵管理の信頼性を証明するための情報のデータ構造を定義
 
- 具体的な個別の環境(TPMやAndroidなど)を利用する場合を規定(プロファイル)。
 
Signature Format  †
FIDO 2.0準拠クレデンシャル用の署名フォーマット(上記のアサーションに署名を行う)
参考  †
FIDO Alliance  †
W3C  †
FIDO 2.0  †
- FIDO 2.0: Web API for accessing FIDO 2.0 credentials
 
- FIDO 2.0: Key Attestation Format
 
- FIDO 2.0: Signature format
 
ニュース  †
2015  †
2016  †
2018  †
Tags: :認証基盤, :FIDO