標準合規
TCS 實作了完整的可驗證憑證發行、展示與信任建立的開放標準技術棧。OID4VCI 規範已通過合規測試,OID4VP 規範目前正在合規測試處理中。
| 標準 | 規格 | 實作內容 | 狀態 |
|---|---|---|---|
| OID4VCI | OpenID for Verifiable Credential Issuance — 追蹤最新已發布的 Implementer’s Draft | 預授權碼流程(生產)、憑證 offer 管理、發行方元資料探索。授權碼流程在 roadmap 上。 | 合規通過 |
| OID4VP | OpenID for Verifiable Presentations — 追蹤最新已發布的 Implementer’s Draft | DCQL 查詢、JAR 請求物件、direct_post 回應模式、VP Token 驗證 | 合規處理中 |
| HAIP v1 | High Assurance Interoperability Profile 1.0 | ES256 簽名、X.509 憑證綁定、強制 DPoP nonce、client attestation 支援 | OID4VCI 通過 / OID4VP 處理中 |
| SD-JWT VC draft-10 | IETF SD-JWT-based Verifiable Credentials —— 鎖定於 draft-ietf-oauth-sd-jwt-vc-10 | dc+sd-jwt 憑證格式、選擇性揭露、Type Metadata Documents(§6) | 已實作 |
| DPoP | RFC 9449 — Demonstrating Proof-of-Possession | 使用 JWK thumbprint 的 token 綁定、伺服器發行的 nonce、JTI 重播保護 | 已實作 |
| PKCE | RFC 7636 — Proof Key for Code Exchange | 授權碼流程的 S256 challenge 方法 | 已實作 |
| JAR | RFC 9101 — JWT-Secured Authorization Requests | OID4VP 驗證流程的已簽名請求物件 | 已實作 |
| PAR | RFC 9126 — Pushed Authorization Requests | 授權重新導向前的伺服器端 session 建立 | 已實作 |
| OAuth 2.0 AS Metadata | RFC 8414 — OAuth 2.0 Authorization Server Metadata | /.well-known/oauth-authorization-server 探索端點 | 已實作 |
| ISO 27001 | 資訊安全管理 | 管理 TCS 基礎設施和流程的操作安全控制 | 組織聲明認證 |
| ISO 27701 | 隱私資訊管理 | 憑證資料處理和儲存的隱私控制 | 組織聲明認證 |
OID4VCI v1 — OpenID for Verifiable Credential Issuance
Section titled “OID4VCI v1 — OpenID for Verifiable Credential Issuance”TCS 實作了 OID4VCI 定義的兩種發行流程:
- 預授權碼流程(生產):發行方建立含有預授權碼的憑證 offer,持有者錢包以此 code 換取 access token,再用 token 請求憑證。無需使用者與 authorization server 互動。
- 授權碼流程(roadmap,尚未上生產):錢包透過 PAR 發起發行流程、在授權端點完成身份驗證、接收授權碼、換取 access token,再請求憑證。底層原語(PAR、PKCE)已實作並通過 conformance 測試;發行端
flow: "authorization-code"切換尚未串接完整。請見 Roadmap。
生產流程支援符合 HAIP 要求的 DPoP 綁定 token。
OID4VP v1 — OpenID for Verifiable Presentations
Section titled “OID4VP v1 — OpenID for Verifiable Presentations”TCS 實作了 OID4VP v1,具備以下能力:
- DCQL(Digital Credentials Query Language) 查詢,用於指定所需憑證
- JAR(JWT-Secured Authorization Requests) 以
application/oauth-authz-req+jwtcontent type 簽名請求物件 - direct_post 回應模式 用於 VP Token 提交
- 跨裝置和同裝置流程,含 session 狀態輪詢和選填的 redirect URI
HAIP v1 — High Assurance Interoperability Profile
Section titled “HAIP v1 — High Assurance Interoperability Profile”HAIP 定義了 OID4VCI 和 OID4VP 的受限規範,用於高保證使用場景。TCS 滿足 HAIP 要求,包括:
- ES256(P-256)作為 X.509 綁定憑證的必要簽名演算法
- 每個 token 和憑證請求強制使用 DPoP nonce
- Client attestation JWT 支援(
OAuth-Client-Attestation和OAuth-Client-Attestation-PoPheaders) dc+sd-jwt作為憑證格式
TCS 使用 IETF SD-JWT VC 規範作為憑證格式,鎖定於 draft-ietf-oauth-sd-jwt-vc-10。這有別於 W3C Verifiable Credentials Data Model 2.0 — 根據 IETF SD-JWT VC §1.2,兩個規範相互排斥。
主要特性:
- 格式識別符:
dc+sd-jwt - 透過
_sd機制進行選擇性揭露的扁平聲明結構 - 透過 Schema Registry 提供的 VCT URI 進行 type metadata 探索
- 展示期間持有者 proof-of-possession 的 Key Binding JWT
DPoP 透過將 access token 綁定至客戶端的金鑰對來防範 token 竊取。TCS 強制執行:
- JWK thumbprint(
jkt)綁定與每個 access token 一起儲存 - 伺服器發行的 DPoP nonce,300 秒到期
- JTI(JWT ID)重播保護,以資料庫追蹤為後端
- IAT(issued-at)驗證,最大期限 300 秒,時鐘偏差容忍 60 秒
- 支援演算法:EdDSA、ES256
所有授權碼流程都要求使用 S256 challenge 方法的 PKCE。code verifier 和 challenge 在 token 交換期間進行驗證,防止授權碼攔截。
Verifier Service 以 application/oauth-authz-req+jwt content type 將 OID4VP 請求物件簽名為 JWT。錢包從 request URI 取得已簽名的請求物件,並在處理授權請求前驗證簽名。
Authorization Server 公開一個 PAR 端點,接受授權請求參數並回傳 request_uri。此 URI 隨後用於授權端點,讓敏感參數保留在伺服器端並縮短 URL 長度。
/.well-known/oauth-authorization-server 端點發布 Authorization Server 的功能,包含支援的 grant type、端點、code challenge 方法和 DPoP 簽名演算法。
OIDF 合規測試
Section titled “OIDF 合規測試”TCS 對其端點執行 OpenID Foundation 合規測試套件。下表狀態反映各 profile 之必要測試計畫是否全部通過;並不代表已取得 OIDF 認證(合規認證為另一獨立計畫,截至目前尚未取得認證)。
| 規範 | 測試套件 | 結果 |
|---|---|---|
| OID4VCI Credential Issuer | OID4VCI Conformance Suite | 通過 |
| OID4VP Verifier | OID4VP Conformance Suite | 處理中 |
| HAIP + OID4VCI Issuer | HAIP Conformance Suite + OID4VCI | 通過 |
| HAIP + OID4VP Verifier | HAIP Conformance Suite + OID4VP | 處理中 |
合規測試套件模擬錢包客戶端,驗證 TCS 端點對所有必要的協定互動(包括錯誤情況)是否產生符合規範的回應。如需取得最新測試計畫輸出,請聯繫團隊。
TCS 支援兩條簽名路徑,根據發行方的金鑰素材選擇:
| 演算法 | 曲線 | 金鑰類型 | 使用場景 | 憑證 Header |
|---|---|---|---|---|
| EdDSA | Ed25519 | 基於 DID | 使用 IOTA DID 驗證方法的發行方 | kid 引用 DID 驗證方法 |
| ES256 | P-256(secp256r1) | 基於 X.509 | 使用 X.509 憑證的發行方(HAIP 要求) | x5c 包含憑證鏈 |
注意:Holder Service 提供 did:key 生成功能,用於錢包互通性。這是持有者端的能力,不構成額外的發行方簽名路徑 — TCS 發行方簽名僅限於上述兩條路徑。
密碼學綁定方法
Section titled “密碼學綁定方法”TCS 支援兩種憑證 proof-of-possession 的密碼學綁定方法:
| 方法 | 說明 |
|---|---|
did | 持有者以對應私鑰簽名 proof JWT,證明其持有 DID 驗證方法 |
jwk | 持有者在 proof JWT header 中包含公鑰(JWK 格式),證明其持有獨立金鑰對 |
TCS 在所有發行流程中使用單一憑證格式:
| 屬性 | 值 |
|---|---|
| 格式識別符 | dc+sd-jwt |
| 選擇性揭露 | _sd 聲明機制(基於雜湊) |
| 金鑰綁定 | Key Binding JWT 附加至 SD-JWT 字串 |
| Type metadata | VCT URI 解析至 Schema Registry 提供的 Type Metadata Document |
| 聲明結構 | 扁平結構(無巢狀的 credentialSubject 包裝器) |
TCS 發行 dc+sd-jwt 憑證並透過 OID4VP DCQL 接受展示。由於兩個協議皆尚未定稿,實際互通性取決於錢包的 profile 選擇(proof type、binding method、request signing)。下表反映 TCS 內部測試 fixtures 目前已實際驗證之內容 — 並非 OpenID Foundation 互通性認證,並刻意保守處理。
| 錢包 | 發行 (OID4VCI) | 展示 (OID4VP) | 備註 |
|---|---|---|---|
| Turing Space Holder Service(custodial 錢包) | 已測試 | 已測試 | 第一方參考路徑;由 TCS 服務測試覆蓋 |
第三方錢包結果僅在具有日期之測試輸出存在後才會加入本表 — 我們刻意不列出「未測試」錢包,因為即便如此仍可能被解讀為互通性聲明。如需在合作前確認特定錢包整合,請聯繫團隊 — 我們可以安排 profile 對齊測試並分享測試輸出。
路線圖與已知差距
Section titled “路線圖與已知差距”為協助採購決策,以下列出 TCS 目前未實作的能力,及其原因或預定時程。
| 能力 | 狀態 | 備註 |
|---|---|---|
| ISO/IEC 18013-5 mDoc / mDL | 未實作 | TCS 僅發行 dc+sd-jwt。需 EUDIW PID-mDoc 對等支援之部署,需與獨立 mDoc 套件搭配。 |
| W3C VC Data Model 1.1 / 2.0(一般憑證) | 設計上不支援 | IETF SD-JWT VC §1.2 規範 W3C VCDM 與 SD-JWT VC 互斥。TCS 唯一產出的 W3C 格式為 DIF Well-Known DID Configuration 之網域連結憑證。 |
IETF Token Status List(draft-ietf-oauth-status-list) | 路線圖中 | 目前撤銷查詢透過 Trust & Schema Registry,符合規範的 Status List 為已規劃的強化項目。 |
| OpenID Federation / EBSI TIR / ETSI Trusted List 整合 | 未實作 | TCS 採用單一部署內的範圍限定發行者允許清單。跨生態系信任目前透過 X.509 / x5c 路徑橋接外部 CA — 詳見架構與安全。 |
| OID4VCI Authorization Code Flow | 路線圖中 | Pre-Authorized Code Flow 為生產路徑;auth-code flow 開發中。 |
did:web / did:jwk 發行者 DID | 未實作 | 發行者目前使用 did:iota 或 X.509 憑證 — 詳見 DIDs 之選擇理由。 |