FIDO2
FIDO2:邁向無密碼的未來
FIDO2 是一項開放的認證標準,旨在解決傳統密碼所帶來的安全風險和不便。它由 FIDO 聯盟 (Fast IDentity Online Alliance) 和全球資訊網協會 (W3C) 共同推動,目標是實現更安全、更方便的「無密碼」網路體驗。
解決的核心問題
- 密碼被盜 (Credential Stuffing): 攻擊者利用在一個網站上洩漏的帳號密碼,去嘗試登入其他網站。
- 網路釣魚 (Phishing): 誘騙使用者在偽造的網站上輸入他們的帳號密碼。
- 密碼管理負擔: 使用者需要為數十個不同的服務記憶數十組不同的複雜密碼。
- 伺服器端風險: 網站需要安全地儲存使用者的密碼雜湊值,一旦資料庫被盜,將面臨巨大的安全風險。
運作原理:公鑰密碼學
FIDO2 主要由兩個核心元件組成:
- WebAuthn (Web Authentication): 一個由 W3C 發布的標準 API,允許網頁應用程式使用基於公鑰密碼學的強認證方式來驗證使用者。
- CTAP (Client to Authenticator Protocol): 一個由 FIDO 聯盟制定的協定,定義了客戶端 (如瀏覽器、作業系統) 如何與認證器 (Authenticator) 進行通訊。
1. 註冊 (Registration)
- 使用者在網站上發起註冊請求。
- 網站伺服器向瀏覽器發出 WebAuthn 註冊請求。
- 瀏覽器透過 CTAP 協定,要求認證器 (如 YubiKey、Windows Hello、Touch ID) 產生一對新的公私鑰。
- 私鑰 (Private Key) 安全地儲存在認證器中,永遠不會離開該裝置。
- 公鑰 (Public Key) 則傳送給網站伺服器儲存,並與使用者帳號關聯。
2. 認證 (Authentication)
- 使用者在網站上發起登入請求。
- 網站向瀏覽器發送一個「挑戰」(Challenge)。
- 瀏覽器透過 CTAP 將挑戰傳遞給認證器。
- 使用者透過生物辨識 (指紋、人臉) 或 PIN 碼來授權認證器。
- 認證器使用儲存在內的 私鑰 對挑戰進行「簽章」(Sign),並將簽章後的結果傳回網站。
- 網站使用先前儲存的 公鑰 來驗證簽章的有效性。如果驗證成功,使用者即可登入。
認證器類型
- 平台認證器 (Platform Authenticator): 直接內建於使用者設備中的認證器,例如筆記型電腦的指紋辨識器 (Windows Hello) 或智慧型手機的臉部辨識 (Face ID)。
- 跨平台認證器 (Cross-Platform Authenticator): 可攜式的外部安全金鑰,例如 YubiKey 或 Google Titan Security Key,可以透過 USB、NFC 或藍牙與多個設備搭配使用。
優勢
- 防釣魚 (Phishing Resistant): 因為認證過程與網站的來源 (Origin) 綁定,即使使用者被誘騙到假的釣魚網站,認證器也不會被觸發,無法完成登入。
- 無伺服器端共享秘密: 網站只儲存公鑰,不儲存密碼或任何共享秘密。即使網站資料庫被盜,攻擊者也無法竊取使用者的登入憑證。
- 方便性: 使用者無需記憶複雜的密碼,只需透過簡單的生物辨識或觸碰即可完成登入。
- 跨平台與互通性: FIDO2 是一個開放標準,支援多種瀏覽器、作業系統和認證器。
總結
FIDO2 透過強大的公鑰密碼學,從根本上解決了傳統密碼的弱點。它不僅提供了前所未有的安全性,有效抵禦網路釣魚和資料庫洩漏等威脅,同時也大幅提升了使用者的登入體驗。隨著越來越多的主流平台和服務支援 FIDO2,我們正在穩步邁向一個更安全、更便捷的無密碼時代。