Windows でのパスワードレス認証用の WebAuthn API

パスワードを使用すると、悪意のあるユーザーによるデータ侵害やセキュリティ攻撃に対して顧客が脆弱になる可能性があります。

Microsoft は長い間パスワードレス認証の支持者であり、Windows 10 (バージョン 1903) で W3C/Fast IDentity Online 2 (FIDO2) Win32 WebAuthn プラットフォーム API を導入してきました。

バージョン 22H2 Windows 11以降、WebAuthn API では ECC アルゴリズムがサポートされています。

これは何を意味しますか?

WebAuthn API を使用すると、開発者パートナーと開発者コミュニティは、Windows Helloまたは FIDO2 セキュリティ キーを使用して、Windows デバイス上のアプリケーションにパスワードレス多要素認証を実装できます。

これらのアプリまたはサイトのユーザーは、パスワードレス認証に WebAuthn API をサポートする任意のブラウザーを使用できます。 ユーザーは、使用するブラウザーに関係なく、Windows で使い慣れた一貫性のあるエクスペリエンスを提供します。

開発者は WebAuthn API を使用して、ユーザーに対して一貫した方法で FIDO2 認証キーをサポートする必要があります。 さらに、開発者は、操作と管理のオーバーヘッドを回避しながら、FIDO2 仕様 (USB、NFC、BLE) ごとに使用できるすべてのトランスポートを使用できます。

これらの API が使用されている場合、Windows 10ブラウザーまたはアプリケーションは、FIDO 関連メッセージングの FIDO2 トランスポートに直接アクセスできません。

全体像

クライアントから認証プロトコル 2 (CTAP2) と WebAuthn は、厳密に認証された資格情報のエコシステムを作成する抽象化レイヤーを定義します。 このエコシステムでは、特定のクライアント デバイスで実行される相互運用可能なクライアント (ネイティブ アプリやブラウザーなど) は、標準化されたメソッドを使用して、相互運用可能な認証子と対話します。 相互運用可能な認証子には、クライアント デバイス (プラットフォーム認証子) に組み込まれている認証子と、USB、BLE、または NFC 接続 (ローミング認証子) を使用してクライアント デバイスに接続する認証子が含まれます。

認証プロセスは、ユーザーが操作の同意を示す特定のユーザー ジェスチャを行ったときに開始されます。 クライアントの要求に応じて、認証子は強力な暗号化キーを安全に作成し、ローカルに格納します。

これらのクライアント固有のキーが作成されると、クライアントは登録と認証の構成証明を要求できます。 秘密キーが使用する署名の種類は、作成されたユーザー ジェスチャを反映します。

次の図は、CTAP と WebAuthn の対話方法を示しています。 水色の点線の矢印は、プラットフォーム API の特定の実装に依存する相互作用を表します。

この図は、WebAuthn API が証明書利用者と CTAPI2 API と対話する方法を示しています。

パスワードレス認証に参加するコンポーネントの関係

組み合わされた WebAuthn/CTAP2 ダンスには、次のキャラクターのキャストが含まれています。

  • クライアント デバイスクライアント デバイスは、特定の強力な認証をホストするハードウェアです。 ノート PC と電話は、クライアント デバイスの例です。

  • 証明書利用者とクライアント証明書利用者 は、強力な資格情報を使用する Web またはネイティブ アプリケーションです。 証明書利用者は、クライアント デバイスで実行されます。

    • 証明書利用者として、ネイティブ アプリケーションは WebAuthn クライアントとして機能し、WebAuthn を直接呼び出すこともできます。

    • 証明書利用者は、Web アプリケーションが WebAuthn API と直接対話することはできません。 証明書利用者は、ブラウザーを介して取引を仲介する必要があります。

    上の図では、シングル Sign-On (SSO) 認証は示されていません。 FIDO 証明書利用者とフェデレーション証明書利用者を混同しないように注意してください。

  • WebAuthn APIWebAuthn API を使用すると、クライアントは認証子に対して要求を行うことができます。 クライアントは、認証子にキーの作成、キーに関するアサーションの提供、機能の報告、PIN の管理などを要求できます。

  • CTAP2 プラットフォーム/ホストプラットフォーム (CTAP2 仕様のホストとも呼ばれます) は、認証子とネゴシエートするクライアント デバイスの一部です。 プラットフォームは、要求の配信元を安全に報告し、CTAP2 簡潔バイナリ オブジェクト表現 (CBOR) API を呼び出す役割を担います。 プラットフォームが CTAP2 に対応していない場合、クライアント自身がより多くの負担を負います。 この場合、前の図に示したコンポーネントと相互作用が異なる場合があります。

  • プラットフォーム認証子プラットフォーム認証子は通常、クライアント デバイス上に存在します。 プラットフォーム認証器の例としては、内蔵のラップトップ指紋リーダーを使用する指紋認識技術や、スマートフォンの内蔵カメラを使用する顔認識技術などがあります。 USB、NFC、BLE などのクロスプラットフォーム トランスポート プロトコルは、プラットフォーム認証子にアクセスできません。

  • ローミング認証子ローミング認証子は、複数のクライアント デバイスに接続できます。 クライアント デバイスは、サポートされているトランスポート プロトコルを使用して対話をネゴシエートする必要があります。 ローミング認証子の例としては、USB セキュリティ キー、BLE 対応スマートフォン アプリケーション、NFC 対応近接カードなどがあります。 ローミング認証子は、CTAP1、CTAP2、またはその両方のプロトコルをサポートできます。

多くの証明書利用者とクライアントは、1 つのクライアント デバイス上で多数の認証子と対話できます。 ユーザーは、WebAuthn をサポートする複数のブラウザーをインストールでき、組み込みの指紋リーダー、差し込み済みセキュリティ キー、BLE 対応モバイル アプリケーションに同時にアクセスできる可能性があります。

相互 運用 性

WebAuthn と CTAP2 の前には、U2F と CTAP1 がありました。 U2F は FIDO Alliance ユニバーサル第 2 要素仕様です。 CTAP1 を読み上げ、U2F 資格情報を管理する多くの認証子があります。 WebAuthn は、CTAP1 Authenticators と相互運用できるように設計されています。 WebAuthn を使用する証明書利用者は、証明書利用者が FIDO2 のみの機能を必要としない場合でも U2F 資格情報を使用できます。

FIDO2 認証子は既に実装されており、WebAuthn 証明書利用者には次のオプション機能が必要になる場合があります。

次のオプションは将来役に立つかもしれませんが、まだ野生では観察されていません。

  • トランザクションの承認
  • ユーザー検証インデックス (サーバーは、ローカルに格納されている生体認証データが時間の経過と伴って変更されたかどうかを判断できます)
  • ユーザー検証メソッド (認証子は正確なメソッドを返します)
  • 生体認証のパフォーマンスの境界 (証明書利用者は、許容される誤った受け入れ率と誤った拒否率を指定できます)

Microsoft の実装

Microsoft FIDO2 の実装は、長年にわたって実施されてきました。 ソフトウェアとサービスは、標準に準拠したエンティティとして独立して実装されます。 Windows 10 Version 1809 (2018 年 10 月) リリースの時点で、すべての Microsoft コンポーネントで最新の WebAuthn 候補リリースが使用されます。 これは、仕様が最終的に承認される前に規範的に変更されるとは予想されない安定したリリースです。 Microsoft は世界で初めて FIDO2 を展開しているため、一般的な Microsoft 以外のコンポーネントの組み合わせはまだ相互運用できません。

Microsoft ビットが移動する場所のおおよそのレイアウトを次に示します。

この図は、WebAuthn API が Microsoft 証明書利用者と CTAPI2 API と対話する方法を示しています。

Microsoft による WebAuthn API と CATP2 API の実装

  • WebAuthn 証明書利用者: Microsoft アカウント。 Microsoft アカウントに慣れていない場合は、Xbox、Outlook、およびその他の多くのサイトのサインイン サービスです。 サインイン エクスペリエンスでは、クライアント側の JavaScript を使用して、Microsoft Edge をトリガーして WebAuthn API と通信します。 Microsoft アカウントでは、認証子に次の特性が必要です。

    • キーは、リモート サーバーではなく、認証子にローカルに格納されます
    • オフライン シナリオが機能する (HMAC を使用して有効)
    • ユーザーは、同じ認証子に複数のユーザー アカウントのキーを配置できます
    • 必要に応じて、認証子はクライアント PIN を使用して TPM のロックを解除できます

    重要

    Microsoft アカウントには FIDO2 CTAP2 認証子に固有の機能と拡張機能が必要であるため、CTAP1 (U2F) 資格情報は受け入れられません。

  • WebAuthn クライアント: Microsoft Edge。 Microsoft Edge では、この記事で説明する WebAuthn および CTAP2 機能のユーザー インターフェイスを処理できます。 また、AppID 拡張機能もサポートされています。 Microsoft Edge は、CTAP1 と CTAP2 の両方の認証子と対話できます。 対話のこのスコープは、U2F と FIDO2 の両方の資格情報を作成して使用できることを意味します。 ただし、Microsoft Edge は U2F プロトコルを読み上げません。 したがって、証明書利用者は WebAuthn 仕様のみを使用する必要があります。 Android 上の Microsoft Edge では、WebAuthn はサポートされていません。

    WebAuthn と CTAP の Microsoft Edge サポートに関する権限のある情報については、 レガシ Microsoft Edge 開発者向けドキュメントを参照してください

  • プラットフォーム: Windows 10、Windows 11。 Windows 10とWindows 11 Win32 Platform WebAuthn API をホストします。

  • ローミング認証子Microsoft ローミング認証子がないことに気付く場合があります。 その理由は、強力な認証を専門とする製品の強力なエコシステムが既にあり、すべての顧客 (企業または個人) には、セキュリティ、使いやすさ、配布、アカウントの回復に関する要件が異なるためです。 増え続ける FIDO2 認定認証子の一覧の詳細については、「 FIDO 認定製品」を参照してください。 この一覧には、組み込みの認証子、ローミング認証子、および認定された設計を持つチップメーカーも含まれています。

開発者向けリファレンス

WebAuthn API は、 Microsoft/webauthn GitHub リポジトリに記載されています。 FIDO2 認証子のしくみを理解するには、次の 2 つの仕様を確認してください。