跳到內容

架構與安全性

TCS 由五個架構層組成,每個功能由專屬服務負責:

TCS Architecture — 5 layers: Service Layer, Governance Layer, Standard Layer, Storage Layer, Trust Anchor Layer
點擊查看完整架構圖。

TCS 是一個由七個服務和一組共享函式庫組成的微服務平台。每個服務可獨立部署,透過 HTTP 相互通訊。共享函式庫提供通用功能,包括配置、驗證、錯誤處理和資料庫存取。

TCS Service Relations

服務用途
Authorization ServerOAuth 2.0 token 發行、DPoP 驗證、PAR sessions、授權碼流程
Credential IssuerSD-JWT VC 發行、憑證 offer 管理、發行方元資料
Holder Service保管錢包、DID 管理、OID4VCI/OID4VP 客戶端操作
Verifier ServiceOID4VP 驗證、JAR 請求物件、VP Token 驗證
Trust Registry發行方/驗證方註冊、API 金鑰管理、DID 建立與匯入
Schema RegistryVCT(Verifiable Credential Type)元資料定義與探索
Scheduler排定維護任務的背景工作執行器

TCS 透過四個互補的安全層實現深度防禦,每個層級針對不同的威脅向量。

第一層:DPoP(Demonstrating Proof-of-Possession)— RFC 9449

Section titled “第一層:DPoP(Demonstrating Proof-of-Possession)— RFC 9449”

DPoP 將 access token 綁定至請求的客戶端。每個 token 請求都可以包含以客戶端私鑰簽名的 DPoP proof JWT。伺服器驗證 proof 並記錄 JWK thumbprint(jkt)。之後使用該 token 的請求必須包含來自相同金鑰對的新 DPoP proof,防止 token 竊取和重播。

  • 支援演算法:EdDSA、ES256
  • JTI 重播保護,透過資料庫追蹤
  • 伺服器發行的 DPoP nonce(HAIP v1 要求)
  • Nonce、JTI 和 IAT 到期時間:各 300 秒

第二層:PKCE(Proof Key for Code Exchange)— RFC 7636

Section titled “第二層:PKCE(Proof Key for Code Exchange)— RFC 7636”

授權碼流程要求使用 S256 challenge 方法的 PKCE。客戶端生成隨機的 code verifier,計算 SHA-256 challenge,並在 PAR 請求期間傳送 challenge。在 token 交換時,客戶端傳送原始 verifier,伺服器對照儲存的 challenge 驗證。這防止授權碼攔截攻擊。

TCS 支援兩條憑證簽名路徑,根據發行時提供的金鑰素材自動選擇:

  • EdDSA DID 路徑 — 帶有 DID 識別符的 Ed25519 金鑰;kid header 引用發行方的 DID 金鑰。當 issuerDidissuerPrivateKey 都存在時使用。
  • ES256 X.509 路徑 — 帶有憑證鏈的 P-256 金鑰;x5c header 攜帶完整的憑證鏈。當沒有 DID 金鑰素材時使用。HAIP v1 合規要求此路徑。

若兩個必填欄位只有其中之一,請求將被拒絕,視為不一致的簽名配置。透過 X.509 路徑發行的憑證可在無需 DID 解析的情況下進行驗證,提供以傳統 PKI 層次結構為根的信任錨點。

Nonce 端點發行 HMAC 簽名的 nonce,在憑證請求時進行驗證,無需資料庫查詢。nonce 值編碼了到期時間戳,並以伺服器端密鑰簽名。這提供了無狀態的 nonce 驗證,同時維持 nonce 無法被偽造的安全保證。


TCS 使用基於路徑的路由來隔離租戶。每個已註冊的組織獲得一個唯一的租戶識別符(例如 turingntu),出現在發行方 URL 和元資料探索端點中。

資源URL 模式
Credential Issuer 識別符https://issuer.turingspace.co/{tenant}
Issuer Metadatahttps://issuer.turingspace.co/.well-known/openid-credential-issuer/{tenant}
DID Configurationhttps://trust-registry.turingspace.co/.well-known/did-configuration.json/{tenant}
租戶登陸頁面https://issuer.turingspace.co/{tenant}
  • 資料隔離User 模型上的 tenant 欄位是唯一的,作為憑證 offer 的外鍵。每個租戶的 offer、憑證配置和 DID 都限定在其使用者帳號範圍內。
  • API 金鑰範圍:API 金鑰與個別使用者帳號綁定。操作時驗證 API 金鑰擁有者是否有權存取所請求的租戶資源。
  • 元資料隔離:每個租戶的發行方元資料(憑證配置、顯示屬性、支援類型)根據其已登記的 Schema 獨立生成。

  • 預授權碼和 API 金鑰僅以 SHA-256 雜湊值儲存;明文值永不持久化。
  • 持有者密碼使用 bcrypt 雜湊。
  • 憑證簽名用的發行方私鑰以加密方式儲存(Cloud SQL 加密)。
  • 所有模型包含 createdAtupdatedAt 稽核時間戳。

能力狀態
OIDF conformance testing(OID4VCI、OID4VP、HAIP)OID4VCI passing;OID4VP processing
多租戶架構支援 — 每個租戶有獨立信任錨點與隔離
Schema 治理內建 Schema Registry,含 VCT 探索
API 金鑰身份驗證透過 Trust Registry 註冊取得
DPoP token 綁定(RFC 9449)支援
ISO 27001 / 27701架構對齊;組織自述
保管錢包透過 Holder Service 支援
憑證撤銷內部支援 —— 發行端在憑證記錄上追蹤狀態。符合規格的 IETF Token Status List 在 roadmap 上;目前無對外公開的 revocation 端點。
雙簽章演算法(EdDSA + ES256)支援
預授權碼流程支援(OID4VCI)
選擇性揭露支援(SD-JWT _sd 機制)

供採購與合規評估使用 —— 尤其在受監管產業(銀行、醫療、政府)。TCS 的資料處理立場明確列於下表。尚未實作的項目誠實標示,由 out-of-band 處理的項目則指出對應窗口。

項目目前立場
基礎設施區域TCS 生產環境部署於 Google Cloud Platform asia-east1(台灣)。目前單一 region 部署。
資料留存區域TCS 託管的 Cloud SQL 中之憑證 / 租戶資料留在上述 region;未啟用跨 region 複寫。日誌與備份的處理請依此原則為基準向 TCS 確認個別流向。
個資法 / GDPR 角色在典型保管模式部署下,TCS 為受託處理者(Processor),依採用機構(Controller)之指示處理資料。如需參考用 DPA 樣本,請聯絡我們
當事人刪除權(被遺忘權)憑證刪除端點為軟刪除 —— 請見 Holder · 管理錢包與憑證 · 刪除憑證。實體清除(個資法 / GDPR 當事人請求)請聯繫 TCS 並提供 uuid / credential_id
稽核日誌取得應用層日誌涵蓋憑證發行(POST /v1/offersPOST /credential)、DID 生命週期(POST /v1/did/v1/did/import)、API key 身份驗證、登入嘗試與驗證 session —— 每筆含時間戳記、租戶、request ID、結果。目前未對外提供自助式稽核日誌匯出 API,且日誌目前未做簽章 / WORM 儲存(採購團隊請於 SIEM 端規劃防竄改)。事件審查或採購證據需求請聯繫團隊取得日誌摘要。
自建部署 / 資料可攜性目前不提供標準自建部署選項。終止服務時的資料可攜性(Postgres dump + 已發行 DID 之 IOTA 鏈上參照)採 out-of-band 處理 —— 請聯絡我們取得程序。
滲透測試立場TCS 目前未對外公布滲透測試報告。需要獨立資安審查證明的合作可在 NDA 下索取現況說明。

此表為採購問卷的事實依據。若你需要的項目未列於上方,請聯絡我們 —— 我們會誠實回覆,包括「尚未提供」。


維運性 —— 健康檢查、可觀測性、Runbook 立場

Section titled “維運性 —— 健康檢查、可觀測性、Runbook 立場”

針對 SRE / on-call 視角的另一份誠實表格。同樣遵循「明說,包括尚未提供的項目」的原則。

項目目前立場
健康檢查端點每個服務開放 GET /health,回 200 OK{ status: "ok", service, version }目前僅檢查 process 存活,不會探測 DB 或 IOTA 依賴。請視為 Kubernetes liveness 訊號而非 readiness gate;若需區分,請在你方加上獨立的依賴探測。
日誌全服務採 Pino 結構化 JSON 日誌;每筆請求帶 request_idtenantservice,啟用遙測時亦帶 OTel 之 trace_id / span_id。PrismaService 內建 >200ms 慢查詢日誌。
Tracing / OTelOTEL_ENABLED=true 時啟動 OpenTelemetry。預設 exporter 指向 Google Cloud Trace;HTTP、Pino、Postgres、Prisma instrumentations 已預先連接。函式庫為 @tcs/telemetry,副作用入口 @tcs/telemetry/register。對接自家後端的維運者請設定 OTEL_TRACES_EXPORTER / 端點環境變數,並驗證 trace 端到端傳遞。
速率限制Trust Registry 登入每 UUID 限制每 60 秒 5 次。其他端點目前無已記錄之 per-tenant 速率限制;conformance suite 或負載測試請在呼叫端自行控速。平台層級速率政策尚未公告 —— 持續性測試的預期 cadence 請事先告知 TCS 團隊。
IOTA Tangle 依賴DID 建立(POST /v1/did)與鏈上 notarize(notarize_on_iota: true)需要 IOTA 連通。Tangle 故障期間此類呼叫會回 503;以 notarize_on_iota: false 簽出的憑證不受影響 —— 事件期間請以此為緩解。網路恢復後的重試與佇列語意目前尚未對外公告為 SLO;正式環境部署前,請與 TCS 團隊確認確切的 retry / queueing 行為。
Schema 遷移Prisma migration 集中協調;所有服務共用同一 Cloud SQL 後端,每次 release 由 TCS 團隊執行遷移順序。自建部署者請採 migrate-first 部署模式(migration 完成後再 roll service)。原則上避免不向後相容之 migration;若不可避免會以 feature flag 包裝並附明確維運說明。

更深入的 on-call 協作(告警模板、儀表板匯出、容量規劃指引)請聯絡我們 —— 這些依部署量身打造,不以樣板形式公開。


  • 標準合規 — 審閱 TCS 實作的標準和合規測試結果
  • API 參考 — 探索所有服務的完整端點
  • 身份驗證 — 了解 API Key、JWT 和 DPoP 身份驗證模式