隆重推出 Digital Credentials API 來源試用

發布日期:2024 年 9 月 4 日,上次更新日期:2024 年 10 月 16 日

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

背景

許多公私實體開始發出裝置綁定的數位憑證,真實世界的數位身分也因此成為現實。舉例來說,現在已可將部分美國州別 (例如亞利桑那州、加州、科羅拉多州、喬治亞州和馬里蘭州) 的駕照和身分證件,新增至行動裝置上的 Google 錢包等數位錢包應用程式。針對特定線上驗證接受數位憑證的相關法規也正在制定中,eIDAS 2.0 就是其中之一。

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

數位憑證的功能取決於其格式,但通常包括:

  • 強化安全性和隱私權:使用進階加密和強驗證方法,有助於保護機密資料,並確保存取安全性。舉例來說,憑證的呈現通常會受到保護,使用者必須透過錢包應用程式進行驗證。
  • 選擇性揭露信賴方 (RP) 可要求提供憑證中的資訊,讓使用者能夠將共用的資料限制在所需用途中。舉例來說,您可以分享使用者是否已滿 18 歲,但不透露使用者的出生日期。
  • 互通性:憑證應遵循國際標準,以便在不同系統和國家/地區間相容,並利於跨國接受。
  • 可驗證性:發出者會為共用的憑證資料加上數位簽名;RP 可以驗證這項簽名,確認資料的真實性。

由於數位憑證具有可驗證的特性,因此可用於以下用途:

  • 年齡驗證:在提供年齡限制內容或購買年齡限制商品前,請先要求使用者驗證年齡。
  • 身分驗證:要求提供姓名和地址來驗證個人身分,以遵循法規或防範詐欺行為。
  • 駕駛執照檢查:驗證使用者是否符合駕駛資格 (例如租車時)。

由於網站已開始直接與行動錢包應用程式通訊 (例如使用自訂網址配置),以便針對各種用途要求數位憑證,因此瀏覽器可透過專用 API 讓這類互動更安全、更不易遭到濫用,也更容易使用。

數位憑證 API 簡介

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

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

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

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

在推出時,Google 錢包將與數位憑證 API 整合,讓特定商家和機構可透過 Android 版 Chrome 向使用者提出要求,要求他們在線上出示身分證件,並檢查加密簽章,驗證傳輸資料的真實性。如要申請加入,請填寫這份表單,表示您有意願接受 Google 錢包中的數位身分證件。

Google 帳戶也即將使用這個 API 驗證特定使用者的出生日期。居住在支援的美國州的使用者,可使用在可用錢包應用程式 (包括 Google 錢包) 中提供的州身分證件或駕照,只與 Google 分享自己的出生日期,而不必分享其他身分詳細資料。這有助於使用者以保護隱私權的方式,向 Google 證明符合帳戶相關的年齡規定

立即試用

需求條件:

  • Google Play 服務 23.40 以上版本
  • Chrome 128 以上版本
  • chrome://flags#web-identity-digital-credentials 啟用旗標

如要試用 Digital Credentials API,請按照以下操作說明操作:

  1. 按照操作說明安裝示範錢包應用程式。
  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. 所要求的數位憑證現在會傳遞至依賴方的網站。

API 運作方式

Digital Credentials API 建構於 Credential Management API 之上,但來自獨立的 API 途徑:navigator.identity。網站可透過呼叫 navigator.identity.get(),要求儲存在行動錢包應用程式中的數位憑證。

// 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 陣列,並加入下列基本參數:

使用 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 for Verifiable Presentation (OID4VP)」規格,瞭解如何剖析回應並驗證憑證。

Android 版 Chrome 支援數位憑證 API 來源試用版。電腦版和 iOS 版 Chrome 目前不支援這項功能。對於其他瀏覽器引擎,我們透過 W3C Web Incubator Community Group 促進了積極的對話。

參與來源試用

如要進行開發作業,您可以在 Chrome 128 以上版本中開啟 Chrome 旗標 chrome://flags#web-identity-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