WebAuthn 和通行密碼 101
深入了解 WebAuthn,包括其概念、工作流程、受歡迎的原因及相關挑戰。
WebAuthn 在 NIST AAL 標準中排名最安全的驗證器之一。自 2013 年推出以來,它已成為商業認證的首選。然而,其採用仍不廣泛,導致對 WebAuthn 和通行密碼的諸多疑問。讓我們深入了解你應該知道的內容。
概念:WebAuthn、通行密碼和 FIDO 之間的關係是什麼?
FIDO 聯盟 | FIDO 聯盟是一個組織,提供開源且安全的無密碼身份驗證標準,包括 UAF、U2F 和 FIDO2。 |
FIDO2 | FIDO2 是 FIDO 聯盟開發的一組安全的在線身份驗證標準。FIDO2 由兩個主要組成部分構成:用於無密碼登錄的 WebAuthn 和用於安全設備通信的 CTAP。 |
通行密碼 | 通行密碼是一種基於 FIDO 的防釣魚憑證,用於替代密碼。
|
WebAuthn | WebAuthn 是由 W3C 和 FIDO 聯盟開發的JavaScript API,增強了網絡應用程序使用 FIDO2 標準進行身份驗證的功能。通行密碼是 WebAuthn 支持的驗證方法之一。 |
流程:WebAuthn 如何運作?
WebAuthn 的四個主要實體
基本上,你可以了解 WebAuthn 流程中涉及的四個主要實體。
-
用戶: 使用 WebAuthn 註冊或驗證到網絡應用程序的人。
-
用户代理: 處理 WebAuthn API 調用的網絡瀏覽器,管理所有不同的依賴方和驗證器之間的驗證過程。
-
依賴方: 用戶嘗試訪問的網絡服務或應用程序。用戶通過用户代理與依賴方互動。
-
驗證器: 用戶擁有的硬件組件,用於驗證用戶的身份。它可以根據平台或瀏覽器的能力有多種形式,如安全密鑰(如 Yubikeys)、手機或平板電腦(通過藍牙、NFC 或 USB 連接)、基於設備的生物識別或 PIN 等。
WebAuthn 的工作流程
非對稱公鑰加密是核心過程。
- **密鑰對生成:**用戶代理生成公私密鑰對。公鑰與依賴方共享,而私鑰則安全地存儲在用戶的驗證器中。
- **身份驗證挑戰:**當用戶嘗試登錄時,依賴方向用户代理發送身份驗證挑戰。
- **用戶驗證:**用户代理將挑戰發送到驗證器,該驗證器與用戶交互以進行驗證(例如生物識別或按鍵)。
- **密碼簽名:**驗證器使用其私鑰對挑戰進行簽名,創建一個密碼簽名。
- **驗證和訪問:**用戶代理使用公鑰驗證簽名並通知依賴方成功的身份驗證。授予訪問權限。
為詳細說明,將其分為註冊和身份驗證階段。
WebAuthn 註冊流程:
WebAuthn 身份驗證流程:
優點:為什麼 WebAuthn 成為趨勢?
多重驗證器
你可以選擇多重驗證器以增加靈活性。這些驗證器有兩種類型,既可用於本地亦可用於雲端使用,你可以為你的服務啟用其中一個或兩個。
平台驗證器(內部驗證器)
平台驗證器與單一且特定的設備操作系統綁定,例如用戶登錄的電腦、筆記本電腦、手機或平板電腦。它僅在設備上使用生物識別或設備密碼進行授權。這是一種快速的驗證方式,特別是使用生物識別時,可以替代手動輸入密碼的需要。然而,如果用戶丟失設備,則可能成為訪問的障礙。 例如:
- MacOS 和 iOS:藉由 Touch ID、Face ID 或設備密碼驗證的 iCloud 鑰匙串。
- Windows:藉由面部識別、指紋或友好 PIN 驗證的 Windows Hello。
- Android:Google 密碼管理器也支持面部識別或指紋自動填充密碼以授權設備。
漫遊驗證器(外部驗證器,跨平台驗證器)
漫遊驗證器是一種獨立的便攜設備或軟件應用程序,例如硬件安全密鑰或智能手機。它應使用 USB 連接設備或保持 NFC 或藍牙開啟。漫遊驗證器不受限於單一設備或瀏覽器,提供更大的靈活性。例如:
- 安全密鑰:也稱為硬件代幣,如 Yubikey。
- 移動智能手機:如使用雲端的 Google 帳戶在 Android 上,或 iCloud 帳戶在 iPhone 上。重要的是,跨設備身份驗證也需要連接藍牙、NFC 或 USB 以確保用戶的驗證器在附近。移動驗證器通常需要掃描二維碼將其與桌面設備連接。(Android 手機尤其可以使用 Persistent Linking 與 Chrome 瀏覽器無縫 連接,以便一鍵授權而不需要掃描二維碼。)
高保證安全
高保證安全對於保護業務資源至關重要。這通過以下措施實現:
- 隱私密鑰保護: 隱私密鑰絕不與第三方網站(依賴方)共享,有助於防止密碼洩露和釣魚攻擊。
- 設備接近要求: 設備需要“單一設備的平臺驗證”或“受 USB、藍牙或 NFC 限制的流動驗證器”靠近用戶,以防止遠程攻擊。
- 域綁定: WebAuthn 嚴格綁定到用戶註冊網站的特定域,提供對未經授權網站釣魚攻擊的保護。
無摩擦的用戶體驗,適用於 MFA 和 1FA
WebAuthn 在提高安全性的同時提升用戶的無密碼驗證體驗:
- 原生體驗和生物識別效率: WebAuthn 採用針對不同平台和設備的特定驗證方法,與用戶習慣一致。生物識別認證消除了手動輸入的需要,顯著加快了驗證過程。
- 直接 MFA 跳過 1FA: WebAuthn 常用於 MFA(多因素認證)。由於其強大的安全性,如果依賴方先前已記錄瀏覽器中使用 WebAuthn,則用戶可以跳過 1FA(單因素認證)步驟,直接通過通行密碼驗證登錄。
- 通行密碼替代密碼: 通行密碼還可以作為 1FA 傳統密碼的替代。用戶可以在輸入帳號前或後提供其通行密碼,僅當通行密碼驗證不可用時需要進行密碼驗證。
挑戰:為什麼 WebAuthn 尚未被用戶廣泛採用?
瀏覽器或平台限制
某些瀏覽器或平台要麼不支持 WebAuthn,要麼缺乏對漫遊驗證器的支持。雖然 Caniuse 的當前統計數據顯示不錯的支持(97.37% 桌面和 96.3% 移動平台覆蓋),但在不同瀏覽器版本和操作系統之間仍存在差異。例如:Desktop Linux 不支持平台驗證器,Android 僅在 Chrome 上完全支持 WebAuthn,而 MacOS 的 Internet Explorer 也不支持 WebAuthn。這需要管理員要求成員強制選擇特定的瀏覽器或操作系統選擇,或配置其他替代 MFA 方法。
設備丟失風險
特別是依賴於“此設備”平台驗證器的用戶,丟失設備可能導致失去對其帳戶的訪問權限。帳戶恢復可能是一個繁瑣的過程。為減少這一風險,建議用戶在設置 WebAuthn 時同時綁定其他備用驗證方法。