本文将從通行密鑰是什麼出發,一起來看看通行密鑰的生态如何以及我們可以怎麼設置通行密鑰。
當 Chrome 于本月初推送 108 版本到大家手中時,通行密鑰(Passkey)就已經在主流的生态系統中準備就緒了。作為一項由 FIDO 聯盟發起和推廣的無密碼登錄标準, 通行密鑰(Passkey)雖然早在今年 6 月份的時候就在 WWDC 上亮相并走入了大家的視野,不過「無密碼的未來」看起來一直雷聲大雨點小——好像除了系統支持就沒有具體實例支持通行密鑰這個功能。
其實并不然,所以本文将從通行密鑰是什麼出發,一起來看看通行密鑰的生态如何以及我們可以怎麼設置通行密鑰。
通行密鑰如何「取代」密碼
雖然早前少數派有專門的文章介紹其工作原理,不過這裡還是要簡單介紹一下通行密鑰是幹什麼以及是怎麼做到的。
簡單來說,通行密鑰主想要實現的,是在原本的「用戶名 - 密碼」安全體系外,尋找一種更為簡單、直接,但同樣具備安全性的用戶身份驗證方式。比如你正在使用一台設置了面容 ID 的 iPhone,那通過面容 ID 解鎖這台 iPhone 即可證明目前是你本人正在操作——而這要比輸入登錄信息、甚至自動填充登錄信息都要快速無感。
這個替代驗證手段的思路具體到原理,從某種程度上來說則是真的「幹掉了密碼」。通行密鑰将以往需要加密儲存在服務器端的登錄信息,替換為非對稱加密技術中的口令。和包含用戶名、密碼的傳統憑證數據不同,在非對稱加密技術中,注冊通行密鑰的設備會成一段「公鑰」和「私鑰」交給提供注冊服務的服務器。
我們可以把公鑰類比于帶「防盜」鎖的傳統信箱,把私鑰類比于信箱的鎖的鑰匙。郵遞員投遞的信件就是我們要加密的信息,通過投遞到信箱中加密起來,然後也隻有信箱的主人才有鑰匙能夠打開信箱讀取信件的内容。如果一個人手上沒有鑰匙,那就需要用暴力開防盜鎖,整個過程不僅耗時耗力,最後也往往沒辦法打開那把防盜鎖。與之對應的,如果某些内容被公鑰加密了,則該内容能且僅能被私鑰解密。
非對稱加密的可靠性正來源于此——若無私鑰,在有限的算力和有限的時間内我們一般無法完成極大整數的因數分解;如果加密内容能被解密,則說明對方擁有私鑰。
所以隻要服務器用公鑰加密一段認證信息,用戶設備上的私鑰鑰可以解密這段認證信息,那麼就可以證明我是「我」了,這也是通行密鑰的實現基礎,而通過這一個間接匹配就完成了密碼認證。整個過程既不用勞神費力的敲入具體的密碼、也不需要讓密碼離開本地設備,更能避免因為服務器受攻擊而導緻密碼洩露,降低傳輸風險。
圖|《不用密碼但不能代替密碼:通行密鑰如何讓登錄這件事更簡單?》
不過用戶保存在本地的私鑰也需要有安全保障,不然惡意程序随意訪問就會破壞這樣的間接認證機制。所以在使用通行密鑰時往往都會配合用戶設備上的生物識别系統進一步加密保存在本地的「私鑰」,比如 iDevice 設備上的 TouchID/FaceID、Android 設備上的指紋識别、Windows Hello,甚至是簡單的 PIN 認證都可以進一步增強訪問私鑰時的安全性,而這也是通行密鑰繞不過的重要組成部分。
圖|《不用密碼但不能代替密碼:通行密鑰如何讓登錄這件事更簡單?》
哪些平台和服務支持通行密鑰
通行密鑰背後的技術基礎是由 W3C 在 2019 年就納入正式标準的 WebAuthn 認證,在早期這個 API 隻能通過實體密鑰使用。但今年 Apple、Microsoft 以及 Google 的大力推進下手邊的電腦、平闆或是手機也可以通過通行密鑰化身為實體密鑰了。據我統計以下的平台均支持通行密鑰:
Apple:iOS 16、iPadOS 16、macOS Ventura 與 tvOS 16 以上均支持,支持 iCloud 鑰匙串同步且支持通過 AirDrop 分享。Google:Chrome 108 版本以上、Google Play 服務(Google 自動填充框架)為最新版,支持在 Android 與 Android、Android 與特定版本 Chrome 之間同步。
Chrome 目前通行密鑰的支持情況,目前 Windows 上的 Chrome 暫不支持通行密鑰雲同步
Microsoft:在 Windows 11, 22H2 版本以上支持,需要打開并使用 Windows Hello,支持 Chrome 和基于 Chromium 的 Edge
當然,有人還會擔心如果一個平台還不支持通行密鑰是不是就意味着在那個平台就不能使用通行密鑰了,比如 Linux 目前沒有支持、也暫時沒有計劃支持通行密鑰。
通行密鑰其實也有考慮到這個問題,給出的解決方案則是将帶有攝像頭的手機、平闆化身為實體密鑰,通過藍牙、NFC 或者 USB 線纜等方式将移動設備上解答出來的「答案」通過安全的通道傳遞給支持通行密鑰的軟件。跨平台傳輸密鑰的過程在用戶角度來看就兩步,掃碼 - 掃描指紋 / 人臉,就和我們平時掃一掃登陸微信沒什麼區别。
在 Android 手機上掃描 Windows 電腦上的通行密鑰二維碼時會索要附近設備的權限
無密碼登陸的未來令人遐想,以 1Password 為代表的密碼管理服務也很積極努力地擁抱通行密鑰這項技術。目前主流的密碼管理軟件對通行密鑰的支持計劃如下:
1Password:預計于 2023 年早些時候在浏覽器插件和桌面端支持通行密鑰,移動版 App 則會稍晚一些。目前 1Password 有個技術展示網站幫助 1Password 用戶提前感受通行密鑰。Bitwarden:明确已經處于開發階段,但上線時間未知。Dashlane:處于 Beta 測試階段,最新版浏覽器插件已支持通行密鑰,移動版本 app 目前處于開發階段。
除了系統、軟件的支持,相信對于我們來說最感興趣還是哪些網站支持通行密鑰了。1Password 目前維護了一個支持通行密鑰網站、應用程序和其他服務的列表,詳細列舉了該網站支持通過通行密鑰登陸或是僅用于兩步認證,并給出的詳細的設置地址。
1Password 整理的支持列表
在列表之外,也不斷有廠商在陸陸續續的為自家的賬号服務添加對于通行密鑰的支持,如 Github、Cloudflare、 Dropbox、 Fastmail 和 Porkbun 等等都以不同的形式和名字提供了為現有賬号綁定通行密鑰的選項,這些服務普遍都在早先支持了 WebAuthn API,所以支持通行密鑰也是水到渠成的事情。你可以在這裡找到絕大多數已經支持 WebAuthn API 的網站和服務,理論上他們中的絕大多數也都支持通行密鑰。
由 Yubikey 維護的支持 WebAuthn 的列表
如何設置通行密鑰
雖然通行密鑰既可用于登陸也可用于兩步認證,但本身都是基于 WebAuthn API 這項技術,所以絕大多數的通行密鑰的設置也通常位于「兩步認證 > 硬件密鑰」「NFC 密鑰」或是「USB 認證器」這樣的選項中,為現有賬号添加通行密鑰的流程也已經相當無感。
以 Nvidia 的官網賬号為例,在賬号管理頁面底部的「安全設置」中,在多重安全驗證的選項中就可以看到一則名為「硬件安全設備」(Hardware Security Device)的欄目,你可以在裡面添加多個支持通行密鑰的浏覽器、 Android 或者 iOS 設備:
在 macOS 中的 Safari 直接添加通行密鑰隻需要進行一次生物識别即可
在 macOS 中的 Chrome 添加通行密鑰則隻能通過 Chrome 自身或者手機保存
添加時還有一些值得注意的地方,首先一個賬戶可以綁定多通行密鑰,不過這些保存通行密鑰的平台如果支持同步的話,同一平台中的不同設備會被認為是同一個設備,進而拒絕添加。舉個例子來說,比如我在 macOS 上的 Safari 添加了 Nvidia 的通行密鑰,這時我再點開添加通行密鑰的界面并在 iPhone 上掃描同一個 Nvidia 賬戶的另一個二維碼,在添加時 iPhone 上就會報錯。
命名方式建議按照平台來
其次就是在 Android 手機上通過藍牙等方式添加通行密鑰時,Android 手機和對應的電腦都需要正确的上網姿勢,否則将不能正确添加通行密鑰。最後則是 Nvidia 賬戶在添加完後比較特殊的地方,Nvidia 在設置完畢通行密鑰以後可以直接在登陸時使用通行密鑰,這也是目前為止我測試出來的唯一一個,可以實現蘋果在 WWDC 上演示的「直接使用通行密鑰登陸賬号」的網站。
在 Github 中添加通行密鑰
Github、Cloudflare、 Dropbox、 Fastmail 和 Porkbun 等等上門提到的服務也和 Nvidia 一樣有着非常相似的過程的添加過程這裡就不做展開了。下面講講兩個例外,一個是 Microsoft 賬戶,另一個則為 Google 賬戶。
首先是 Microsoft 賬戶,它的特殊之處在于目前你隻能在 Windows 11 22H2 上的 Chrome 或者基于 Chromium 的 Edge 浏覽器添加通行密鑰,在其他浏覽器和操作系統中均沒有添加通行密鑰的入口。登陸 Microsoft 帳戶以後,選擇「安全 > 高級安全選項『立刻開始』> 添加一種新的登陸或驗證方法 > 設置安全密鑰 > USB 設備 > 下一步」即可開始添加通行密鑰。不過和設置一樣,目前 Microsoft 賬戶的通行密鑰也僅能在 Windows 11 22H2 上使用。
另一個例外則是 Google 賬戶,設置時認為兩種情況,一種是如果你擁有一台内置了 Titan 安全芯片的 Pixel 設備,Google 會默認将該設備自動添加為登錄時用于兩步驗證的通行密鑰設備。
在網頁端登錄 Google 帳号時,隻需拿出 Pixel 設備、授予附近設備權限,即可通過設備上的生物信息識别驗證來完成兩步認證。
如果沒有一台内置了 Titan 安全芯片的 Pixel 設備,但有一台運行 iOS 16/iPadOS 16 的設備,那麼你也可以找到隐藏的添加通行密鑰的入口。
首先在 iOS 16/iPadOS 16 上的 Safari 中登陸你的 Google 賬戶,接着點擊右上角的頭像 -「管理你的 Google 賬戶 > 安全性 > 兩步驗證 > 再次輸入密碼 > 安全密鑰 > 添加安全密鑰 > 實體 > 繼續」,你就能發現添加通行密鑰這個熟悉的入口出現在你面前。用另一台運行 iOS 16 / iPadOS 16 / Android 13 的設備掃描屏幕上出現的二維碼即可完成 Google 賬戶的通行密鑰的添加。添加完畢以後也可以在其他平台上使用對應的 Passkey,但我不理解為什麼這個接口隻對 iOS/iPadOS 打開,但能用就好克老氣暈。
以上就是本文的全部内容了,可以看到國外已經有不少的服務支持了通行密鑰,雖然絕大多數的服務目前隻是作為兩步認證的替代品,但依然是一個不錯的開始;反觀國内服務基本都沒有支持 WebAuthn API 和通行密鑰,隻能希望國内廠商多多努力擁抱開源的「無密碼」協議。希望本文可以幫助到你,也希望我們可以一起進入無密碼的未來。
原文鍊接:
https://sspai.com/post/77376?utm_source=wechat&utm_medium=social
本文來自微信公衆号 " 少數派 "(ID:sspaime),作者:廣陵止息