數位憑證簡介

數位憑證是可透過加密技術驗證的文件,可用於驗證使用者身分、授權或提供其他相關資訊。這類項目通常包括行動裝置上的駕照、數位護照、登機證等。這些項目會儲存在稱為數位錢包的虛擬容器中,並遵循 W3C 標準,該標準會指定如何存取及擷取這些項目。這項標準已透過 W3C Credential Management API 實作,適用於網路用途,並透過 Credential Manager 的 DigitalCredential API 實作,適用於 Android。

瞭解數位憑證

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

圖片:顯示一般錢包互動的流程
圖 1. 實體憑證要求完成程序。要求者向使用者索取特定憑證。 接著,使用者選取並從實體錢包中取出卡片。最後,使用者會將憑證提供給要求者。

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

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

  1. 使用者應有多個錢包 (又稱「持有人」),其中可包含各種不同的憑證。錢包會決定可儲存哪些憑證。
  2. 要求者現在是應用程式,而非真人,並稱為「驗證者」
  3. 憑證呈現作業會在軟體中進行,也就是說,API 介面會擷取並呈現憑證,在 Android 中,這項作業是由 Credential Manager 負責。

因此,憑證管理員會接手使用者先前負責的幾項工作:

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

這個流程如下所示:

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

使用者體驗

如 Android 流程所示,使用者只需與 Credential Manager UI 互動一次,即可選取適當的憑證。選取器範例如下:

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

標準

數位憑證要求是使用 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 選取憑證,返回瀏覽器。瀏覽器應會顯示傳回的憑證。

另請參閱