Share via


Windows 上無密碼驗證的 WebAuthn API

密碼可能會讓您的客戶容易遭受惡意用戶的數據外泄和安全性攻擊。

Microsoft 一直都是無密碼驗證的傳播者,並在 Windows 10 (1903 版) 中引進了 W3C/Fast IDentity Online 2 (FIDO2) Win32 WebAuthn 平臺 API。

Windows 11 22H2 版開始,WebAuthn API 支援 ECC 演算法。

這代表什麼意思?

透過使用 WebAuthn API,開發人員合作夥伴和開發人員社群可以使用 Windows HelloFIDO2 安全性金鑰,為其在 Windows 裝置上的應用程式實作無密碼的多重要素驗證。

這些應用程式或網站的使用者可以使用支援 WebAuthn API 的任何瀏覽器進行無密碼驗證。 無論使用者使用哪一個瀏覽器,使用者在 Windows 上都會有熟悉且一致的體驗。

開發人員應該使用 WebAuthn API,以一致的方式為用戶支援 FIDO2 驗證密鑰。 此外,開發人員可以使用每個 FIDO2 規格可用的所有傳輸 (USB、NFC 和 BLE) ,同時避免互動和管理額外負荷。

注意

使用這些 API 時,Windows 10 瀏覽器或應用程式無法直接存取 FIDO2 傳輸以進行 FIDO 相關傳訊。

大圖

客戶端對驗證器通訊協定 2 (CTAP2) 和 WebAuthn 定義抽象層,以建立強身份驗證認證的生態系統。 在此生態系統中,任何可互操作的用戶端 (,例如在指定用戶端裝置上執行的原生應用程式或瀏覽器) ,都會使用標準化方法來與任何互操作的驗證器互動。 互操作的驗證器包括內建於用戶端裝置的驗證器, (平臺驗證器) 以及使用 USB、BLE 或 NFC 連線來連線來連線到用戶端裝置的驗證器, (漫遊驗證器) 。

驗證程式會在使用者做出表示同意作業的特定用戶手勢時啟動。 在用戶端的要求下,驗證器會安全地建立強密碼編譯密鑰,並將其儲存在本機。

建立這些用戶端特定金鑰之後,用戶端可以要求證明以進行註冊和驗證。 私鑰使用的簽章類型會反映所進行的用戶手勢。

下圖顯示 CTAP 和 WebAuthn 的互動方式。 淺藍色虛線箭號代表相依於平臺 API 特定實作的互動。

此圖顯示 WebAuthn API 如何與信賴憑證者和 CTAPI2 API 互動。

參與無密碼驗證之元件的關聯性

結合的 WebAuthn/CTAP2 跳起包含下列字元轉換:

  • 用戶端裝置用戶端裝置是裝載指定強式驗證的硬體。 膝上型電腦和手機是用戶端裝置的範例。

  • 信賴憑證者和用戶端信賴憑證者 是取用強式認證的 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 或這兩種通訊協定。

許多信賴憑證者和用戶端可以在單一用戶端裝置上與許多驗證器互動。 用戶可以安裝多個支援 WebAuthn 的瀏覽器,而且可以同時存取內建的指紋讀取器、外掛程式安全性密鑰,以及已啟用 BLE 的行動應用程式。

互操作 性

在 WebAuthn 和 CTAP2 之前,有 U2F 和 CTAP1。 U2F 是 FIDO 聯盟通用第二因素規格。 有許多驗證器會說出 CTAP1 並管理 U2F 認證。 WebAuthn 的設計目的是要與 CTAP1 驗證器互操作。 如果信賴憑證者不需要僅限 FIDO2 功能,則使用 WebAuthn 的信賴憑證者仍然可以使用 U2F 認證。

FIDO2 驗證器已實作,且 WebAuthn 信賴憑證者可能需要下列選擇性功能:

下列選項在未來可能很有用,但尚未在通配符中觀察到:

  • 交易式核准
  • 伺服器 (用戶驗證索引可以判斷儲存在本機的生物特徵辨識數據是否隨著時間變更)
  • 驗證器 (用戶驗證方法會傳回確切的方法)
  • 信賴憑證者 (生物特徵辨識效能界限可以指定可接受的誤接受率和誤判拒絕率)

Microsoft 實作

Microsoft FIDO2 實作已進行數年。 軟體和服務會獨立實作為符合標準的實體。 自 2018 年 10 月 Windows 10 版本 1809 () 版起,所有 Microsoft 元件都會使用最新的 WebAuthn 候選版。 這是一個穩定版本,在規格最終開始之前,預期不會以規範方式變更。 因為 Microsoft 是全世界第一個部署 FIDO2 的元件,所以一些熱門非 Microsoft 元件的組合還無法互通。

以下是 Microsoft 位的近似配置:

此圖顯示 WebAuthn API 如何與 Microsoft 信賴憑證者和 CTAPI2 API 互動。

Microsoft 的 WebAuthn 和 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。

    注意

    如需有關 Microsoft Edge 支援 WebAuthn 和 CTAP 的授權資訊,請參閱 舊版 Microsoft Edge 開發人員檔

  • 平臺:Windows 10、Windows 11。 Windows 10 和 Windows 11 主控 Win32 平臺 WebAuthn API。

  • 漫遊驗證器。 您可能會注意到沒有 Microsoft 漫遊驗證器。 原因是已經有強大的產品生態系統專門用於強式驗證,而每個客戶 (公司或個人) 對於安全性、易用性、散發和帳戶復原都有不同的需求。 如需持續成長的 FIDO2 認證驗證器清單詳細資訊,請參閱 FIDO 認證產品。 此清單包含內建的驗證器、漫遊驗證器,甚至是具有認證設計的晶元製造商。

開發人員參考

WebAuthn API 記載於 Microsoft/webauthn GitHub 存放庫中。 若要瞭解 FIDO2 驗證器的運作方式,請檢閱下列兩個規格: