使用 FIDO 驗證與密碼金鑰

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

簡介

FIDO (Fast IDentity Online) 驗證標準會定義一種快速且安全的驗證機制,讓使用者存取網站和應用程式。

FIDO 聯盟許多組織的代表共同開發開放且可擴充的技術規格,讓使用者可以透過一般通訊協定存取網站和應用程式。這表示任何公司都可以使用 FIDO 標準來實作密碼等技術,以確保安全性。

密碼金鑰是 FIDO 登入憑證,可連結至來源 (網站或應用程式),以及實體裝置。密碼金鑰可讓使用者在不需輸入使用者名稱、密碼或提供任何其他驗證因素的情況下進行驗證。這項技術是用來取代密碼,做為主要的驗證機制。

安全驗證的重要性

密碼在運算的數十年內已用於驗證。不過,使用密碼驗證是最安全的驗證方式,因為資料庫可能會遭到外洩且密碼可能遭到破解。

許多使用者使用相同的密碼登入不同的網站。這表示某個網站遭到入侵時,使用相同密碼的其他帳戶都面臨風險。因此,即使您建立了安全的密碼系統,只要密碼是唯一的安全防護措施,使用者仍可能面臨風險。

某些網站和應用程式會要求使用簡訊、電子郵件、應用程式等方式傳送的第二個憑證,藉此提出兩步驟驗證要求。雖然這種安全性比僅使用密碼來得安全,但這種兩步驟驗證方式仍不容易受到網路詐騙攻擊,因為使用者可能會被判定在兩步驟驗證網站中輸入自己的兩步驟驗證詳細資料。

FIDO 如何提高安全性?

以 FIDO 為基礎的驗證機制會排除許多與密碼式驗證相關的問題,以及採用傳統的第二個驗證步驟的驗證問題。特別是:

  • FIDO 驗證使用公開金鑰密碼編譯。
  • FIDO 可協助確保憑證不會分享給未經認證的惡意對像或其他方。

公開金鑰密碼編譯功能可降低潛在資料庫侵害事件的威脅。使用者以單一來源 (網站或應用程式) 進行註冊,而這個程式會在使用者的 authenticator (實體裝置) 上產生公開/私密金鑰組。使用者的公開金鑰會由原始伺服器儲存,但攻擊者並沒有任何作用。攻擊者無法從儲存在伺服器中的資料中擷取使用者的私密金鑰,這是完成驗證程序的必要資料。

使用 FIDO 時,使用者無須負責確認網站或應用程式是否確實是其身分。此外,使用者也負責確保憑證在錯誤的地方使用。FIDO 會將每個憑證繫結至特定來源,這表示裝置 (非人類) 必須負責正確識別網站或應用程式。

舉例來說,假設使用者正嘗試登入 example.com。如果使用者在 phishing-example.com 要求 example.com 擁有的憑證,驗證者會拒絕該要求,進而保護使用者。驗證程序讓詐騙網站或應用程式難以取得以其他來源進行驗證的驗證機制。

整體來說,FIDO 與密碼金鑰可讓您部署更強大的驗證,但大部分使用者仍能輕鬆使用。

示範

什麼是密碼金鑰?

passkey 是符合 FIDO 和 W3C 網路驗證 (WebAuthn) 標準的數位憑證。網站和應用程式與密碼類似,可以要求使用者建立密碼以存取帳戶。

金鑰需要解鎖裝置才能驗證使用者身分。而這可能是生物特徵辨識感應器 (例如指紋或臉部辨識)、PIN 碼或圖形。使用者必須先向來源註冊,才能產生密碼 (公開金鑰組)。

當使用者返回網站或應用程式時登入時,使用者可以採取下列步驟:

  1. 前往應用程式。
  2. 按一下 [登入]。
  3. 選取其密碼金鑰。
  4. 請將裝置解鎖,以完成登入程序。

驗證工具會使用私密金鑰產生簽章。這個簽章是用來在原始金鑰和驗證器之間驗證公開金鑰,並使用公開金鑰而不揭露私密金鑰。

無論密碼儲存位置為何,使用者都可以透過密碼金鑰在任何裝置上登入服務。舉例來說,儲存在手機中的密碼金鑰可用於在另一台筆電上登入網站。

密碼金鑰如何運作?

金鑰是透過作業系統建立及同步。有些作業系統可能會允許自動同步處理使用者裝置之間的密碼金鑰,例如已登入相同 Google 帳戶的 Android 手機和 Chrome 作業系統裝置。

雖然密碼金鑰會與作業系統綁定,但使用者可以在登入筆記型電腦時使用手機的密碼金鑰。由於密碼金鑰是以 FIDO 和 W3C 標準建立而成,因此所有瀏覽器都能採用這些金鑰。舉例來說,假設某位使用者透過 Chromebook 造訪 site.example。這位使用者先前已在自己的 iOS 裝置上登入 site.example。系統會提示使用者在 iOS 裝置上確認自己的身分。一般來說,site.example 會為使用者的 Chromebook 建立新的密碼金鑰,這樣一來,日後登入帳戶時就不用再使用手機。

密碼經過端對端加密處理,這表示 Google 會負責將資料同步處理至不同的 Android 裝置,但無法讀取密碼金鑰或得知相關資料。

驗證程序

驗證視窗的外觀。

如要在網站或應用程式中導入密碼金鑰,您必須熟悉以下事項:

  • 驗證器是使用者擁有的實體裝置,這類裝置會保存使用者的密碼,並可識別使用者。
  • 「信賴憑證者」是您的網站或應用程式,是由前端應用程式和後端伺服器所組成。
    • 「前端應用程式」會呼叫 API 與驗證器互動,然後啟動驗證程序。
    • 「後端伺服器」會擷取驗證器產生的加密編譯物件並進行驗證。

舉例來說,假設某位使用者想從 shoes.example (依靠派對) 的商店購買兩雙鞋,使用者已在 shoes.example 上註冊使用 Android 手機,並搭配生物特徵辨識感應器。使用者只要解鎖裝置,即可在 Android 裝置上登入 shoes.example。接著,shoes.example 會根據已知的公開金鑰驗證使用者經過簽署的登入憑證,藉此確認使用者的身分是否正確。

驗證器

Authenticator 符合 FIDO 規定的裝置,可用來確認使用者身分。包括特殊用途的裝置 (FIDO 安全金鑰)、行動電話和其他符合驗證器需求的電腦。Authenticator 會執行 FIDO 與 WebAuthn 標準所述的加密編譯作業。

裝置具備兩種註冊及驗證角色:

  • 當使用者註冊使用信賴憑證者時,裝置會產生不重複的公開/私密金鑰組。包括使用者的手機和電腦。
  • 當使用者未來登入信賴憑證者時,裝置就會使用私密金鑰產生簽章。

這兩項操作都會在使用者證明驗證者擁有時執行。這組金鑰組是以特定來源註冊,且只能由確切的來源使用。如果使用者到達詐騙網站,就無法使用憑證。

符合 FIDO 的裝置

最常見的驗證者如下:

  • 平台驗證器:內建於智慧型手機和桌上型電腦中。 平台驗證器使用生物特徵辨識感應器 (例如指紋感應器或臉部辨識的相機)、PIN 碼或圖形模式。由於驗證互動是藉由解鎖裝置來完成,因此只需要一個步驟就能證明使用者擁有該裝置,且可以使用專屬生物特徵辨識身分來確認其身分。
  • 安全金鑰:這類 USB 裝置通常具有按下按鈕,可指出驗證方式。與密碼搭配使用時,安全金鑰可以提供雙重驗證功能。最常見的例子是 Titan 安全金鑰或 YubiKey。

前端

應用程式會使用用戶端 API (例如 WebAuthnAndroid 的 FIDO2) 來透過驗證器建立和驗證使用者憑證。

應用程式會將後端伺服器產生的加密編譯驗證問題傳送到驗證器。應用程式會將驗證器的回應傳送至伺服器進行驗證,以便根據驗證採取動作。

後端

伺服器會儲存使用者的公用金鑰憑證和帳戶資訊。

註冊和驗證時,伺服器會產生密碼編譯驗證。這項驗證會驗證驗證者所核發的簽章,確認使用者是否為其聲明的身分。

常見問題 (FAQ)

誰支援密碼金鑰?

由於金鑰是以 FIDO 標準為基礎,因此適用於 Android 和 Chrome,以及許多其他熱門平台和瀏覽器,例如 Microsoft Windows、Microsoft Edge、MacOS、iOS 和 Safari。

請參閱這些平台提供的說明文件,確認可用性的目前狀態。

在 Android 平台上,我們的目標是在 2022 年底為開發人員提供密碼支援。

如果使用者遺失裝置,會發生什麼情況?

在 Android 中建立的密碼會經過備份並同步處理到登入相同 Google 帳戶的 Android 裝置,就像使用密碼管理員進行備份一樣。

這代表使用者換掉裝置時,密碼金鑰就會隨身攜帶。使用者必須開啟手機,才能在新手機上登入應用程式。

使用者可以透過手機的密碼金鑰登入好友的裝置嗎?

可以。使用者可以為手機和其他人的裝置設定「一次性連結」,以便登入帳戶。

後續步驟

參加程式碼研究室:

進一步瞭解:

取得最新資訊: