以後再也不用輸密碼了?更安全的「通行金鑰」是什麼,好用嗎?

當 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),作者:廣陵止息,36氪經授權發佈。

本文經授權發布,不代表36氪立場。

如若轉載請註明出處。來源出處:36氪