依賴方的密碼金鑰開發人員指南

瞭解如何將密碼金鑰整合至服務。

密碼金鑰系統架構

密碼金鑰系統由幾個元件組成:

  • 信賴憑證者:在密碼金鑰環境中,信賴憑證者 (簡稱 RP) 會處理密碼金鑰核發和驗證作業。RP 必須運作用戶端 (建立密碼金鑰或使用密碼金鑰驗證的網站或應用程式),以及伺服器 (用於註冊、儲存及驗證用戶端密碼金鑰產生的憑證)。密碼金鑰行動應用程式必須使用作業系統提供的關聯機制 (例如數位資產連結),繫結至 RP 伺服器網域。
  • Authenticator:運算裝置,例如手機、平板電腦、筆電或桌機,可使用作業系統提供的螢幕鎖定功能建立及驗證密碼金鑰。
  • 密碼管理工具:安裝在使用者裝置上的軟體,可提供、儲存及同步密碼金鑰,例如 Google 密碼管理工具

註冊流程

在網站上使用 WebAuthn API,或在 Android 應用程式上使用 Credential Manager 程式庫,即可建立及註冊新的密碼金鑰。

如要建立新密碼金鑰,請提供下列幾個重要元件:

  • RP ID:以網域形式提供依賴方的 ID。
  • 使用者資訊:使用者的 ID、使用者名稱和顯示名稱。
  • 要排除的憑證:先前儲存的密碼金鑰相關資訊,可避免重複註冊。
  • 密碼金鑰類型:使用裝置本身 (「平台驗證器」) 做為驗證器,或是使用可拆卸式安全金鑰 (「跨平台 / 漫遊驗證器」)。此外,呼叫端可以指定是否要讓使用者探索憑證,以便選取帳戶登入。

RP 要求建立密碼金鑰,使用者透過螢幕解鎖驗證後,系統就會建立新的密碼金鑰並傳回公開金鑰憑證。將該資訊傳送至伺服器,並儲存憑證 ID 和公開金鑰,以供日後驗證。

註冊流程

如要詳細瞭解如何建立及註冊密碼金鑰,請參閱下列文章:

驗證流程

在網站上使用 WebAuthn API,或在 Android 應用程式上使用 Credential Manager 程式庫,透過已註冊的密碼金鑰進行驗證。

如要使用密碼金鑰進行驗證,請提供下列幾個重要元件:

  • RP ID:以網域形式提供依賴方的 ID。
  • 驗證問題:伺服器產生的驗證問題,可防止重播攻擊。

RP 要求使用密碼金鑰驗證身分,使用者透過解鎖螢幕驗證後,系統就會傳回公用金鑰憑證。將該簽章傳送至伺服器,並使用儲存的公開金鑰驗證簽章。

驗證流程

如要瞭解如何使用密碼金鑰驗證,請參閱下列文章:

伺服器端整合

建立密碼金鑰時,伺服器必須提供金鑰參數,例如驗證問題、使用者資訊、要排除的憑證 ID 等。然後驗證從用戶端傳送的已建立公開金鑰憑證,並將公開金鑰儲存在資料庫中。如要使用密碼金鑰進行驗證,伺服器必須仔細驗證憑證並驗證簽章,才能讓使用者登入。

如要瞭解詳情,請參閱下列伺服器端指南:

現有 (舊版) 驗證機制

在現有服務中支援密碼金鑰時,從密碼等舊版驗證機制轉換為密碼金鑰,不會在一夕之間發生。我們知道您可能會想盡快淘汰較弱的驗證方法,但這可能會造成使用者困惑,或導致部分使用者無法登入。建議您暫時保留現有的驗證方式。

這有幾個原因:

  • 使用者處於不支援密碼金鑰的環境:密碼金鑰支援功能已在多個作業系統和瀏覽器中廣泛推出,但舊版作業系統和瀏覽器目前仍不支援密碼金鑰。
  • 密碼金鑰生態系統尚未成熟:密碼金鑰生態系統仍在發展中。不同環境之間的 UX 詳細資料和技術相容性可能會有所提升。
  • 使用者可能還沒準備好使用密碼金鑰:有些人不喜歡嘗試新事物,隨著密碼金鑰生態系統日趨成熟,使用者將瞭解密碼金鑰的運作方式,以及這項功能對他們的好處。

重新審查現有的驗證機制

密碼金鑰可讓驗證程序更簡單安全,但保留舊機制就像留下漏洞。建議您重新檢視並改善現有的驗證機制。

密碼

為每個網站建立及管理高強度密碼,對使用者來說是相當困難的任務。強烈建議使用系統內建的密碼管理工具或獨立的密碼管理工具。只要稍微調整登入表單,網站和應用程式就能大幅提升安全性及登入體驗。請參閱下列說明,瞭解如何進行這些變更:

雙重驗證

雖然密碼管理工具可協助使用者處理密碼,但並非所有使用者都會使用。要求提供額外的憑證 (即動態密碼) 是保護這類使用者的常見做法。通常會透過電子郵件、簡訊或驗證器應用程式 (例如 Google Authenticator) 提供一次性密碼。因為 OTP 通常是動態產生的簡短文字,且僅在有限時間內有效,因此可降低帳戶遭盜用的機率。這些方法不如密碼金鑰安全,但比只讓使用者使用密碼好得多。

如果選取以簡訊傳送一次性密碼,請參閱下列最佳做法,簡化使用者輸入一次性密碼的流程。

身分聯盟

您也可以選擇身分聯盟,讓使用者安全又輕鬆地登入。 透過身分聯盟,網站和應用程式可讓使用者透過第三方身分提供者的身分登入。舉例來說,使用 Google 帳戶登入可為開發人員帶來出色的轉換率,使用者也覺得這項功能比以密碼為基礎的驗證方式更簡單好用。身分聯盟可與密碼金鑰互補。登入工作流程非常適合用於註冊,因為網站或應用程式只需一個步驟,就能取得使用者的基本個人資訊;密碼金鑰則非常適合用於簡化重新驗證程序。

請注意,Chrome 於 2024 年淘汰第三方 Cookie 後,部分身分同盟系統可能會受到影響,具體情況取決於系統的建構方式。為減輕影響,我們正在開發名為 Federated Credential Management API (簡稱 FedCM) 的新瀏覽器 API。如果您是身分識別資訊提供者,請查看詳細資料,瞭解是否需要採用 FedCM。

魔法連結登入是一種驗證方法,服務會透過電子郵件傳送登入連結,使用者只要點選連結即可驗證身分。雖然這樣有助於使用者登入帳戶,不必記住密碼,但切換瀏覽器/應用程式和電子郵件用戶端時,可能會遇到問題。此外,由於驗證機制依賴電子郵件,電子郵件供應商的安全性較弱,可能會導致使用者帳戶面臨風險。

學習資源

網頁

如要在網站上整合密碼金鑰,請使用 Web Authentication API (WebAuthn)。如要瞭解詳情,請參閱下列資源:

Android

如要在 Android 應用程式中整合密碼金鑰,請使用 Credential Manager 程式庫。如要瞭解詳情,請參閱下列資源:

使用者體驗

瞭解密碼金鑰使用者體驗建議: