數位憑證簡介

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

瞭解數位憑證

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

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

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

數位憑證與實體憑證有以下差異:

  1. 使用者應有多個錢包 (又稱「持有人」),其中可包含各種不同的憑證。錢包會決定可儲存哪些憑證。
  2. 要求憑證以授予存取權或驗證身分的應用程式或服務,稱為「驗證者」
  3. 建立憑證並聲明主體相關資訊 (例如大學、政府或科技公司) 的實體稱為「核發機構」
  4. 憑證呈現作業會在軟體中進行,也就是說,API 介面會擷取並呈現憑證 (在 Android 中,這是指 Credential Manager)。

因此,Credential Manager 會接手使用者先前負責的幾項工作:

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

這個流程如下所示:

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

可驗證憑證

可驗證憑證是數位憑證的子集,受到嚴格標準 (例如 W3C 可驗證憑證資料模型) 的規範。這些憑證含有以加密技術保護的聲明,因此可防止竄改,並確切證明核發者身分。

並非所有數位憑證都是可驗證憑證,但所有可驗證憑證都是數位憑證。

聲明通過驗證的意義

如果憑證是透過 Android Credential Manager API 傳送,且其中的聲明標示為「已驗證」,表示發行者聲明已檢查該特定資料。不過,這並不代表資料是絕對的普世真理。「已驗證」是程序聲明,並非自動保證信任。

這個生態系統的核心理念是,信任一律由驗證者解決。驗證者 (您的應用程式) 收到密碼編譯安全資料,並發現核發者將其標示為「已驗證」時,必須判斷是否信任核發者已根據標準驗證聲明。

使用者體驗

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

圖片:顯示 Credential Manager 中的數位憑證使用者介面
圖 3. 數位憑證使用者介面。

標準

數位憑證要求是使用 OpenID4VP 標準建立。如要查看要求範例,請前往數位憑證示範網站

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

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

立即試用

您可以使用 Android 錢包和網頁驗證器,在各個平台上測試數位憑證流程:

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

另請參閱