第 1 章:架構與角色

本章定義 CAP 協議中的角色、它們之間的信任關係,以及與外部系統的介面契約。本章內容為後續章節提供共用的術語基礎和架構上下文。

1.1 協議角色

CAP 協議涉及以下規範性角色。每個角色在協議互動中承擔明確的職責,且與其他角色透過受限的介面進行互動。

1.1.1 授權人角色

Natural_Person(自然人)和 Official_Post(官方崗位)是授權的最終來源。授權人不直接參與協議訊息互動——授權人透過授權委派機制將簽發權委派給 Descriptor_Issuer

授權人 MUST 透過安全的身分驗證機制證明其身分。授權人身分的具體驗證機制超出本規範範圍,但該機制 MUST 滿足以下要求:

  • 不可否認性:授權人無法否認其作出的授權決策
  • 防偽造性:第三方無法偽造授權人的授權決策

1.1.2 簽發方角色

Descriptor_Issuer 負責產生和簽發 Authorization_DescriptorTicket_Issuer 負責簽發 Trusted_Ticket。一個實體 MAY 同時承擔兩種簽發方角色。

簽發方 MUST:

  1. 僅在收到合法授權人的明確授權後簽發憑證
  2. 使用第 8 章定義的簽章演算法對憑證進行數位簽章
  3. 維護已簽發憑證的狀態記錄(至少包括簽發時間、有效期、目前狀態)
  4. 在收到撤銷請求時及時更新撤銷狀態並發布撤銷聲明

簽發方 MUST NOT:

  1. 在未獲得授權的情況下簽發憑證
  2. 簽發超出授權人授權範圍的憑證
  3. 重複使用已撤銷憑證的識別碼

1.1.3 持有方角色

Fay(包括 iFaycoFay)是憑證的持有方和資源存取的請求方。Fay 透過 iFay_Runtime 間接參與協議互動——Fay 自身不直接傳送協議訊息。

Fay MUST 透過其所屬的 iFay_Runtime 完成與終端的所有協議互動。Fay 持有的憑證 MUST 透過 iFay_Runtime 提交給終端。

1.1.4 執行時角色

iFay_Runtime 是 Fay 實例的執行時環境,承擔協議訊息的發起和接收。一個 iFay_Runtime 實例 MAY 管理多個 Fay 實例。

iFay_Runtime MUST 滿足第 0.5.3 節定義的執行時一致性等級要求。

1.1.5 終端角色

終端(Terminal)是 Terminal_Resource 的持有者和存取控制的執行方。終端整合以下規範性元件:

  • Protocol_Engine:執行 CAP 協議核心邏輯的系統元件
  • Descriptor_Validator:負責校驗 Authorization_Descriptor 合法性和有效性的元件
  • Session 管理器:維護 Session 狀態機和 Liveness_Detection 機制
  • 本地撤銷清單:儲存已知的被撤銷憑證識別碼

終端 MUST 滿足第 0.5.1 節定義的終端一致性等級要求。

1.1.6 信任基礎設施角色

Registration_Authority(註冊機構)負責終端的註冊管理和 Verification_Key 的分發。Registration_Authority 是 CAP 協議信任鏈的根錨點。

Registration_Authority MUST:

  1. 僅向已通過身分驗證的終端分發 Verification_Key
  2. 透過安全通道(參見第 8 章)完成金鑰分發
  3. 提供金鑰更新與輪替機制
  4. 維護終端註冊狀態的權威記錄

1.2 信任鏈

CAP 協議的信任鏈從授權人傳遞到終端的 Descriptor_Validator,由兩條獨立但協作的信任路徑構成。

1.2.1 授權信任路徑

授權信任路徑決定某個 Fay 是否被授權存取某個資源

授權人(Natural_Person / Official_Post)
    │
    │ ① 授權委派(帶不可否認證據)
    ▼
Descriptor_Issuer
    │
    │ ② 簽發 Authorization_Descriptor(附數位簽章)
    ▼
Fay
    │
    │ ③ 提交 Authorization_Descriptor
    ▼
Descriptor_Validator

終端 MUST 驗證授權信任路徑上每個環節的真實性:

  • 步驟 ① 的真實性由 Descriptor_Issuer 在簽發時校驗,終端不直接參與
  • 步驟 ② 的真實性由終端透過驗證 Descriptor_Issuer 的數位簽章校驗(依賴金鑰信任路徑)
  • 步驟 ③ 的真實性由終端透過驗證 Authorization_Descriptor 與提交方 Fay 識別碼的繫結關係校驗

1.2.2 金鑰信任路徑

金鑰信任路徑決定終端是否信任某個 Descriptor_Issuer 的簽章

Registration_Authority(信任錨點)
    │
    │ ① 分發 Verification_Key(透過安全通道)
    ▼
終端本地金鑰儲存
    │
    │ ② 提供 Verification_Key 給 Descriptor_Validator
    ▼
Descriptor_Validator
    │
    │ ③ 用 Verification_Key 校驗 Authorization_Descriptor 的簽章
    ▼
校驗通過 / 拒絕

終端 MUST:

  1. 僅信任由 Registration_Authority 分發的 Verification_Key
  2. 安全儲存 Verification_Key(參見第 8 章對金鑰儲存的要求)
  3. 拒絕使用未透過 Registration_Authority 分發的金鑰進行簽章校驗

1.3 外部介面契約

CAP 協議層與 4 個外部系統透過明確定義的介面進行互動。本節定義這些介面的規範性契約。

1.3.1 與 iFay_Runtime 的介面

iFay_Runtime 與終端 Protocol_Engine 之間的介面為雙向訊息介面

訊息方向:iFay_Runtime → Protocol_Engine

訊息類型用途必填欄位
AuthRequest發起授權校驗請求fay_id, resource_id, access_mode, credential
SessionRelease主動釋放會話session_id
Heartbeat應用層心跳session_id, sequence_number
HandoverResponse回應交接請求handover_id, accept

訊息方向:Protocol_Engine → iFay_Runtime

訊息類型用途必填欄位
AuthResult授權校驗結果request_id, status, session_id (成功時), error_code (失敗時)
SessionStateChanged會話狀態變更通知session_id, new_state, reason
HandoverRequest交接請求通知handover_id, target_resource_id, deadline
HeartbeatAck心跳確認session_id, sequence_number

介面實作 MUST:

  1. 支援長連線以承載 Heartbeat 和非同步推送訊息
  2. 支援 TLS 加密傳輸
  3. 序列化格式遵循 schema.json 定義

介面實作 MAY:

  1. 選擇具體的傳輸協議(WebSocket、gRPC、HTTP/2 等)

1.3.2 與終端作業系統的介面

Protocol_Engine 與終端作業系統之間的介面為本地雙向介面

作業系統 MUST 向 Protocol_Engine 暴露以下能力:

  1. 資源存取控制下發:Protocol_Engine 下發「允許 Fay X 以模式 Y 存取資源 Z」的指令
  2. 資源狀態查詢:Protocol_Engine 查詢資源的目前可用性和佔用狀態
  3. 資源事件訂閱:Protocol_Engine 訂閱資源狀態變化事件(如硬體斷線、軟體崩潰)

介面的具體實作方式取決於作業系統平台(Unix Domain Socket、Named Pipe、D-Bus 等)。本規範不規定具體實作方式,但 MUST 滿足:

  1. 存取控制指令以同步方式執行,並返回執行結果
  2. 資源事件以非同步推送方式通知
  3. 介面受作業系統原生安全模型保護,僅授權的 Protocol_Engine 程序可呼叫

1.3.3 與硬體驅動程式的介面(間接)

Protocol_Engine MUST NOT 直接與硬體驅動程式通訊。所有硬體控制透過作業系統轉發。

硬體驅動程式到 Protocol_Engine 的狀態上報路徑:

硬體驅動程式 → 作業系統 → Protocol_Engine

硬體驅動程式 SHOULD 實作硬體級存取鎖定機制,確保即使作業系統層面的存取控制被繞過,硬體本身仍可拒絕未授權存取。

1.3.4 與 Registration_Authority 的介面

Registration_Authority 與終端之間的介面為單向介面(RA → 終端)。

Registration_Authority MUST 向終端推送以下訊息:

訊息類型用途必填欄位
VerificationKeyDistribution分發新的校驗金鑰key_id, key_material, valid_from, issuer_id
VerificationKeyRevocation撤銷校驗金鑰key_id, revocation_time, reason
RegistrationStatusUpdate更新終端註冊狀態terminal_id, new_status

終端 MUST:

  1. 透過 TLS/mTLS 安全通道接收訊息
  2. 驗證訊息的簽章來源為已信任的 Registration_Authority
  3. 在接收新金鑰後向 Registration_Authority 返回確認

終端不主動向 Registration_Authority 發起協議訊息(終端的初始註冊流程不屬於 CAP 協議執行時常態互動,超出本規範範圍)。

1.4 角色與一致性等級對應表

實作的角色必須滿足的一致性等級
終端(含 Protocol_Engine 和 Descriptor_Validator)終端一致性等級(§0.5.1)
Descriptor_Issuer 或 Ticket_Issuer簽發方一致性等級(§0.5.2)
iFay_Runtime執行時一致性等級(§0.5.3)
Registration_Authority不在本規範一致性範圍內(註冊流程超出 CAP 協議執行時)