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 Hello 或 FIDO2 安全性密鑰 ,為其在 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/CTAP2 跳起包含下列字元轉換:
用戶端裝置。 用戶端裝置是裝載指定強式驗證的硬體。 膝上型電腦和手機是用戶端裝置的範例。
信賴憑證者和用戶端。 信賴憑證者 是取用強式認證的 Web 或原生應用程式。 信賴憑證者會在用戶端裝置上執行。
作為信賴憑證者,原生應用程式也可以作為 WebAuthn 用戶端來進行直接 WebAuthn 呼叫。
身為信賴憑證者,Web 應用程式無法直接與 WebAuthn API 互動。 信賴憑證者必須透過瀏覽器代理交易。
注意
上圖並未描述單一 Sign-On (SSO) 驗證。 請小心不要混淆 FIDO 信賴憑證者與同盟信賴憑證者。
WebAuthn API。 WebAuthn 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 信賴憑證者可能需要下列選擇性功能:
- 多個帳戶的金鑰 (金鑰可以儲存在每個信賴憑證者)
- 用戶端 PIN
- 驗證器 (傳回位置)
- 以哈希為基礎的訊息驗證程式代碼 (HMAC) 秘密 (啟用離線案例)
下列選項在未來可能很有用,但尚未在通配符中觀察到:
- 交易式核准
- 伺服器 (用戶驗證索引可以判斷儲存在本機的生物特徵辨識數據是否隨著時間變更)
- 驗證器 (用戶驗證方法會傳回確切的方法)
- 信賴憑證者 (生物特徵辨識效能界限可以指定可接受的誤接受率和誤判拒絕率)
Microsoft實作
Microsoft FIDO2 實作已進行數年。 軟體和服務會獨立實作為符合標準的實體。 從 Windows 10 版本 1809 (2018 年 10 月) 版開始,所有Microsoft元件都會使用最新的 WebAuthn 候選版。 這是一個穩定版本,在規格最終開始之前,預期不會以規範方式變更。 因為Microsoft是全世界第一個部署 FIDO2 的元件,所以一些熱門的非Microsoft元件組合還無法互通。
以下是Microsoft位的近似配置:
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 規格。 Microsoft Android 上的 Edge 不支援 WebAuthn。
注意
如需 WebAuthn 和 CTAP Microsoft Edge 支援的權威資訊,請參閱 舊版 Microsoft Edge 開發人員檔。
平臺:Windows 10、Windows 11。 Windows 10 和 Windows 11 裝載 Win32 平臺 WebAuthn API。
漫遊驗證器。 您可能會注意到沒有 Microsoft 漫遊驗證器。 原因是已經有強大的產品生態系統專門用於強式驗證,而每個客戶 (公司或個人) 對於安全性、易用性、散發和帳戶復原都有不同的需求。 如需持續成長的 FIDO2 認證驗證器清單詳細資訊,請參閱 FIDO 認證產品。 此清單包含內建的驗證器、漫遊驗證器,甚至是具有認證設計的晶元製造商。
開發人員參考
WebAuthn API 記載於 Microsoft/webauthn GitHub 存放庫中。 若要瞭解 FIDO2 驗證器的運作方式,請檢閱下列兩個規格:
- Web 驗證:用來存取公鑰認證的 API (可在 W3C 網站) 上使用。 此文件稱為 WebAuthn 規格。
- 用戶端對驗證器通訊協定 (CTAP) 。 本檔可在 FIDO 聯盟 網站取得,硬體和平臺小組會在此網站共同合作,以解決 FIDO 驗證的問題。