數位憑證簡介

數位憑證是可透過加密編譯驗證的文件,可用於驗證、授權或以其他方式提供使用者資訊。這些項目通常是行動駕照、數位護照、登機證等。這些項目位於稱為數位錢包的虛擬容器中,並屬於 W3C 標準的一部分,可指定如何存取及擷取這些項目。這個標準適用於使用 W3C 憑證管理 API 的網頁用途,以及使用憑證管理工具的 DigitalCredential API 的 Android 裝置。

瞭解數位憑證

在現實世界中,使用者可能會將身分證件放在錢包中,並在被要求時出示給要求方:

顯示一般錢包互動流程的圖片
圖 1. 實體世界憑證要求的執行程序。要求者要求使用者提供特定憑證。接著,使用者會從實體錢包中選取並取出該項目。最後,使用者會將憑證提供給要求者。

在這種情況下,使用者通常只有一個錢包,並從錢包中擷取所需的憑證,以便提供給要求者。錢包大多可互通使用,且通常可儲存相同的內容。

數位憑證有幾個主要差異:

  1. 使用者應擁有多個錢包,其中可包含各種不同的憑證。錢包會決定可在其中儲存哪些憑證。
  2. 要求者現在是應用程式,而非真人,因此稱為驗證者。
  3. 憑證呈現作業會在軟體中執行,也就是說,API 途徑會擷取並呈現憑證 - 在 Android 中,這就是憑證管理工具。

因此,憑證管理工具會接手先前由使用者處理的幾個角色:

  1. 在 Android 上,錢包必須向 Credential Manager 註冊憑證中繼資料,才能列在 Credential Manager UI 中。
  2. Credential Manager 會根據要求比對錢包中的憑證,並提供清單供使用者選取。
  3. 當使用者在清單中選取憑證時,憑證管理工具就會叫用錢包,後者會處理剩餘的交易 (顯示 UI 等),並將憑證傳回應用程式。

這裡顯示這個流程:

顯示數位憑證互動流程的圖片
圖 2. 數位憑證驗證的互動模式。憑證管理工具會使用使用者錢包中預先註冊的憑證中繼資料,比對驗證者的請求,並提示使用者選取憑證。Credential Manager 接著會將活動流程導向對應的錢包,後者會處理交易的其餘部分,並將憑證傳回至驗證者。注意:驗證器需要在憑證回應傳回後處理及驗證該憑證。

使用者體驗

如 Android 流程中所示,使用者只需與憑證管理工具 UI 互動一次,即可選取適當的憑證。以下是選取器的範例:

圖片:顯示憑證管理工具中的數位憑證使用者介面
圖 3. 數位憑證 UI。

標準

數位憑證要求會使用 OpenID4VP 標準建立。您可以在數位憑證示範網站中查看要求範例。

數位憑證回應通常會以標準憑證格式傳回。這些標準是由不同的標準機構維護,包括 W3C 可驗證憑證sd-jwtmdoc

您也可以使用自訂通訊協定,但建議您在應用程式中使用其中一種標準通訊協定。

實際演練

您可以使用 Android 錢包和網頁式驗證器,測試跨平台的數位憑證流程:

  1. 在 Android 手機上安裝 CMWallet 公開範例。您可以從存放區提取並直接從 Android Studio 安裝,或是前往 https://github.com/digitalcredentialsdev/CMWallet/actions 並選取最新版本,存取最新的 app-debug.apk 檔案。
  2. 開啟 CMWallet,將中繼資料註冊至憑證管理工具。請確認藍牙已開啟,以便裝置彼此連線。
  3. 前往 https://digital-credentials.dev/ 並選取 Request Credentials (OpenID4VP)
  4. 接受警告提示,然後使用手機掃描 QR code,接著選取「使用密碼金鑰」,然後輕觸確認畫面,即可顯示可用的憑證。
  5. 選取 CMWallet 中的憑證,即可返回瀏覽器。瀏覽器應會顯示傳回的憑證。

另請參閱

  • 如要進一步瞭解如何使用憑證管理工具在應用程式中要求數位憑證,請參閱「憑證驗證器 API」頁面。
  • 如要進一步瞭解如何使用憑證管理工具建構數位錢包,請參閱「憑證持有人 API」頁面。