Apple 在開發者大會上預覽了 2022 年 9 月推出的 iOS 16。iOS 16 其中一項引人矚目的功能是 Passkeys(通行密鑰):這類數位憑證有機會從根本取代傳統密碼。
Passkeys 是「multi-device FIDO credentials(多重裝置 FIDO 憑證)」的行銷名稱。使用者可在裝置上建立憑證(加密金鑰)以註冊服務(例如電商網站),金鑰也會備份到使用者的 Google 帳戶或 Apple ID,以便在其他裝置上使用。
這與今日透過密碼管理員安全註冊、登入網站的概念非常接近,但安全性更高:伺服器端只保存公開金鑰,而不是密碼。
除了 Apple,Google 也在 2022 年 10 月宣布將 passkey 支援帶到 Chrome 與 Android。正如同 Apple、Google 與 Microsoft 的承諾:三大平台共同支援 passkeys、攜手邁向淘汰密碼。這是我們第一次擁有同時「有潛力消除密碼」、又能在主要平台上善用且相對易用的關鍵技術。
那麼除了 iOS 16,我們離全面採用 passkeys、淘汰密碼還有多遠?本文將檢視 Safari(iOS)、Chrome(Android/桌面)與 Firefox 目前的相容性與支援程度。
WebAuthn 的相容性
Passkey 依賴 WebAuthn;這個通訊協定支援使用 驗證器(Authenticator)。驗證器是能保存憑證的實體或軟體,分為兩類:平台驗證器(platform authenticators)與跨平台驗證器(cross-platform authenticators)。平台驗證器(例如內建在瀏覽器或作業系統中)位於裝置本機;跨平台驗證器(例如 YubiKey 等安全金鑰)則可外接於不同裝置。
既然已有 WebAuthn,為什麼還需要 Passkeys?
因為若沒有 passkeys,憑證往往只存在於同一台裝置上(例如在 Safari,憑證可能隨著瀏覽記錄被清除),對終端使用者很不方便。你也無法輕易在另一平台登入(例如憑證是在 iOS Safari 建立,就很難轉到 Android 上登入同一個網站)。
根據 caniuse.com,所有最新版主流瀏覽器都支援 WebAuthn。若你的產品只鎖定現代瀏覽器,通常可以直接使用 WebAuthn API 而不必擔心相容性。
| Chrome/Edge | Safari | Firefox | |
| WebAuthn | 79 起 | 13 起 | 60 起 |
| 平台驗證器 (例如保存在瀏覽器中的憑證) |
79 起 | 13 起 | 否(來源 1) |
| 跨平台驗證器 (例如保存在 YubiKey 的憑證,或 1Password 密碼) |
79 起 | 13 起 | 60 起 |
Passkeys 的相容性
iOS 16 是第一個支援 passkeys 的平台。憑證可存放在 iCloud 鑰匙圈(或其他服務)並跨裝置同步。
Passkey 也能讓你在另一台、跑著另一個平台的裝置上登入,而不必把憑證「搬出」原始裝置:當使用者要在新裝置登入時,只要用已保存憑證的裝置掃描目標裝置上顯示的 QR code 即可。技術上這由 FIDO2 CTAP2 支援。
當你前往登入頁面時,支援 passkey 的瀏覽器也可能顯示自動填入提示(autofill prompt),讓終端使用者挑選其中一組憑證後立即登入。此功能仰賴 client-side discoverable credential(客戶端可發現憑證) 與 Conditional UI(條件式 UI/conditional mediation)。
| Chrome/Edge | Safari | Firefox | |
| 透過 QR code 登入附近裝置 | 79 起(來源 1、來源 2) | 13 起 | 否(來源 1、來源 2) |
| 跨裝置同步憑證 | 2022 年底前陸續到位(來源 1、來源 2) | 16 起(透過 iCloud 鑰匙圈) | 否(來源 1) |
| 自動填入提示 | 預計在 Chromium 106 推出(來源 1) | 16 起 | 否(來源 1) |
結論
目前 iOS 16 與 Safari 對 passkeys 的支援最完整:iOS 16 上的 passkeys 可透過 iCloud 鑰匙圈同步,也可透過 QR code 在 Android 手機上使用,並支援自動填入以立即完成登入。其他廠商的 passkeys 支援預計在 2022 年底前陸續推出。我們期待一個不再依賴密碼的未來!