隆重推出 Digital Credentials API 來源試用

Digital Credentials API 的來源試用將於 Chrome 128 開始。Digital Credentials API 是新的網路平台 API,可讓網站透過數位憑證 (例如駕照或數位錢包中儲存的國民身分證) 要求提供可驗證的使用者相關資訊。

背景

許多公家和私人實體開始核發裝置繫結的數位憑證,使得現實世界的數位身分識別化為現實。舉例來說,美國特定州別 (例如亞利桑那州、加州、科羅拉多州、喬治亞州和馬裡蘭州) 的行動駕照和身分證件,可佈建至數位錢包應用程式,例如行動裝置上的 Google 錢包應用程式。關於特定線上驗證接受數位憑證的法規也日新月異,例如 eIDAS 2.0 就是其中一例。

Google 錢包中的行動駕照
Google 錢包中的行動駕照。

數位憑證的功能會因格式而異,不過通常包括:

  • 強化安全性與隱私權:採用進階加密機制和高強度驗證方法,可保護機密資料並確保存取安全。舉例來說,提供憑證通常會受到使用者透過錢包應用程式驗證的保護。
  • 選擇性揭露信賴方 (RP) 可要求提供憑證中的資訊,讓使用者能夠將共用的資料限制在所需用途中。舉例來說,是否可以分享年滿 18 歲的使用者,但不必告知他們的出生日期。
  • 互通性:憑證應遵循國際標準,以維持在不同系統和國家/地區的相容性,以便促進跨境接受。
  • 可驗證:分享的憑證資料由核發機構以數位方式簽署;RP 可以驗證這個簽章,驗證資料的真實性。

因為數位憑證用途包括:

  • 年齡驗證:提供年齡驗證資訊,先驗證使用者年齡,再放送設有年齡限制的內容或購買設有年齡限制的商品。
  • 身分驗證:要求提供姓名和地址來驗證個人身分,以遵循法規或防範詐欺行為。
  • 駕駛權限檢查:確認某人是否符合駕駛資格 (例如租車)。

由於網站開始直接與行動錢包應用程式通訊 (例如使用自訂網址配置),針對各種使用情境要求數位憑證,瀏覽器也有機會讓這類互動更加安全、防止濫用,並透過專門打造的 API 更易於使用。

隆重推出 Digital Credentials API

Digital Credentials API 是新的網路平台 API,可讓 RP 網站要求在錢包應用程式中顯示數位憑證。自 Chrome 128 起,Chrome 提供這個 API 做為來源試用。

API 不受通訊協定影響,讓 RP 能根據自身需求指定通訊協定。當 RP 提出要求時,瀏覽器會將要求傳送至行動作業系統,該系統會在已安裝的錢包應用程式中搜尋相符的憑證。如果有找到任何項目,行動作業系統會提示使用者選取一個項目,並將要求傳送至使用者選取的錢包。本機驗證完成後,錢包會傳回回應,其中包含所要求的憑證資料。

瀏覽器、錢包和信賴方之間的通訊圖表。

Chrome 會先在 Android 版 Chrome 中支援該 API,以便在同一部裝置上的錢包應用程式中要求憑證。我們計劃在未來支援 Chrome 桌面,以便從其他行動裝置跨裝置要求憑證。

Google 錢包在推出後就會與 Digital Credentials API 整合,讓特定商家和機構可透過 Android 版 Chrome 在線上請求使用者在線上提供其身分證件,並檢查加密編譯簽章來驗證傳輸資料的真實性。如果您有意願接受 Google 錢包中的數位身分證件,請填寫這份表單

Google 帳戶也即將使用這個 API 來驗證特定使用者出生日期。凡是居住在受支援美國各州的使用者,都可使用錢包應用程式 (包括 Google 錢包) 中佈建的州身分證或駕照,順利將出生日期資訊提供給 Google,而不必分享其他身分識別資訊。這有助於使用者以保護隱私權的方式,向 Google 證明符合帳戶相關的年齡規定

立即試用

如要試用 Digital Credentials API,請按照下列指示操作:

  1. 按照這個網頁所述,安裝示範錢包應用程式。
    • 電子錢包應用程式下載至您的 Android 裝置。
    • 執行 adb install -t <path-to-apk> 指令來安裝應用程式。
  2. 啟動 IC Wallet 應用程式,然後佈建試用版行動駕照 (mDL)。
    • 輕觸選單按鈕,然後選取「新增自行簽署的文件」
  3. 使用 Chrome 128 以上版本前往 https://digital-credentials.dev
  4. 按一下「Request Credentials (OpenID4VP)」

查看使用 https://digital-credentials.dev 的示範影片。這是一個可讓開發人員針對不同屬性產生憑證要求的測試網站:

以下說明示範的逐步操作說明:

1.使用者來到依賴方的網站,因此要求使用者提供已驗證的姓氏、名字及年滿 21 歲的年齡保證。
,瞭解如何調查及移除這項存取權。
2.瀏覽器會確認使用者是否要與這個網站分享任何數位憑證。
3.作業系統會顯示要求的資訊,以及符合使用者選取與完成要求的合格憑證。
,瞭解如何調查及移除這項存取權。
4.錢包會在本機使用螢幕解鎖功能驗證使用者。

5. AI 必須採行 隱私保護設計原則所要求的數位憑證現在會傳遞至依賴方的網站。

API 運作方式

Digital Credentials API 是以 Credential Management API 為基礎,但獨立 API 介面為 navigator.identity。呼叫 navigator.identity.get() 後,網站即可要求儲存在行動錢包應用程式中的數位憑證。,直接在 Google Cloud 控制台實際操作。

// Gets a CBOR with specific fields out of mobile driver's license as an mdoc
const controller = new AbortController();
const {protocol, data} = await navigator.identity.get({
  signal: controller.signal,
  digital: {
    providers: [{
      protocol: "openid4vp",
      request: {
        response_type: "vp_token",
        nonce: "n-0S6_WzA2Mj",
        client_metadata: {...},
        presentation_definition: {...}
      }
    }],
  }
});

基本 API 介面與 navigator.credentials.get() 類似,差別在於前者只接受 "digital" 憑證類型。在數位憑證類型中,新增含有下列基本參數的 IdentityRequestProviderproviders 陣列:

  • protocol:使用字串指定廣告交易平台通訊協定。在來源試用時,開發的主要通訊協定為 "openid4vp"
  • request:為數位錢包應用程式接受指定通訊協定的參數。如果是 "openid4vp",則參數在 W3C Digital Credentials API 規格的 OpenID 中 (OID4VP) 中定義。

使用 OID4VP 的數位憑證類型酬載範例:

{
  protocol: 'openid4vp',
  request: {
    response_type: 'vp_token',
    nonce: 'gf69kepV+m5tGxUIsFtLi6pwg=',
    client_metadata: {},
    presentation_definition: {     
      id: 'mDL-request-demo',
      input_descriptors: [{
        id: "org.iso.18013.5.1.mDL",
        format: {
          mso_mdoc: {
            alg: ["ES256"]
          }
        },
        constraints: {
          limit_disclosure: "required",
          fields: [
            {
              path: ["$['org.iso.18013.5.1']['family_name']"],
              intent_to_retain: false
            }, {
              path: ["$['org.iso.18013.5.1']['given_name']"],
              intent_to_retain: false
            }, {
              path: ["$['org.iso.18013.5.1']['age_over_21']"],
              intent_to_retain: false
            }
          ]
        }
      }],
    }
  }
}

提出這項要求後,裝置上擁有 mDL 的錢包就會提供一組可驗證的憑證,這類憑證包括:

  • 使用者的姓氏。
  • 使用者的名字。
  • 布林值,指出使用者是否年滿 21 歲。

以下是回應酬載的範例:

{
  data: '{\n  "vp_token": "o2d2ZXJzaW9uYz..."\n}'
  id: '',
  protocol: 'openid4vp',
  type: 'digital'
}

在這個範例中,憑證是透過 "openid4vp" 通訊協定提出要求,而回應的 data 屬性中包含 "vp_token"。請參閱 W3C Digital Credentials API 規格的 OpenID (OID4VP) 相關說明,瞭解如何剖析回應並驗證憑證。

Android 版 Chrome 支援 Digital Credentials API 做為來源試用。電腦版和 iOS 版 Chrome 目前不支援這項功能。其他瀏覽器引擎的使用者目前正透過 W3C Web Incubator 社群群組促進對話。

參與來源試用

進行開發作業時,您可以在 Chrome 128 以上版本開啟 Chrome 旗標 chrome://flags#web-identity-digital-credentials,在本機啟用 Digital Credentials API。

這項功能也提供來源試用。來源試用可讓您試用新功能,並向網路標準社群的可用性、實用性和成效提供意見回饋。詳情請參閱「開始使用來源試用」。如要申請這項或其他來源試用方案,請前往註冊頁面

  1. 針對來源要求權杖
  2. 將權杖加入網頁。方法有以下兩種:
    • 在每一頁的頁首加入 origin-trial <meta> 標記。例如:<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
    • 如果您能設定伺服器,也可以使用 Origin-Trial HTTP 標頭新增權杖。產生的回應標頭應如下所示:Origin-Trial: TOKEN_GOES_HERE.
,瞭解如何調查及移除這項存取權。

提供意見

如果您對 Digital Credentials API 有任何意見,請將該 API 提交至專屬的 Chromium Issue Tracker