第 10 章:安全考量
本章描述 CAP 協議的威脅模型、已知風險和緩解措施。本章為非規範性內容(不使用 MUST/SHOULD/MAY 等關鍵字),但本章描述的風險和緩解措施 SHOULD 被實作者認真對待。
10.1 威脅模型
CAP 協議的威脅模型基於以下假設和考量。
10.1.1 信任假設
CAP 協議假定以下實體可信:
- Registration_Authority:信任錨,其金鑰分發能力是協議安全性的基礎
- 預置的信任錨金鑰:終端製造或部署時預置的 RA 公鑰
- 終端的安全儲存:用於儲存 Verification_Key 和本地簽章金鑰的硬體/軟體安全模組
CAP 協議不假定以下實體可信:
- Fay 實例:Fay 可能被惡意編寫或被攻擊者控制
- iFay_Runtime:可能存在 bug 或被替換
- 網路通道:可能被監聽、篡改、阻斷
- 未授權的應用程序:終端上的其他程序可能嘗試繞過 CAP 控制
10.1.2 攻擊者能力
考慮以下能力的攻擊者:
| 攻擊者類型 | 能力 |
|---|---|
| 網路攻擊者 | 監聽、篡改、阻斷、重放網路訊息 |
| 流氓 Fay | 持有合法憑證但行為異常 |
| 憑證竊取者 | 透過其他管道取得他人憑證副本 |
| 內部威脅 | Descriptor_Issuer 自身被攻陷 |
| 實體攻擊者 | 實體接觸終端裝置 |
CAP 協議針對前 4 種攻擊者提供保護機制,對實體攻擊者的防護依賴於終端的硬體安全機制(不在協議層面解決)。
10.2 已知風險與緩解
10.2.1 憑證外洩風險
風險:Authorization_Descriptor 檔案被攻擊者竊取後,可在持有憑證的 Fay 之外的實體上提交給終端。
緩解措施:
- Authorization_Descriptor 的
subject_fay_id繫結到具體 Fay,終端在 §3.3.2 第 4 步驗證主體比對 - 攻擊者必須同時控制目標 Fay 的執行時(即攻擊 Fay 自身),憑證外洩本身不足以構成攻擊
- 憑證儲存 MUST 加密(§3.2.3),防止離線提取
- Trusted_Ticket 透過短有效期(最長 7 天)和即時撤銷查詢限制損害視窗
殘餘風險:若攻擊者完全控制 Fay 程序(包括其金鑰),憑證仍可被濫用。本協議不能解決「已被完全攻陷的 Fay」的問題——這是更上層的 Fay 完整性保護問題。
10.2.2 撤銷延遲風險
風險:憑證被撤銷後到撤銷聲明送達終端之間存在延遲視窗,期間被撤銷的憑證仍能通過校驗。
緩解措施:
- 終端持續聯網時,撤銷聲明預設在 1 小時內同步(§3.4.5)
- 使用 Trusted_Ticket 時,終端 MAY 透過即時撤銷查詢消除延遲(§4.3.2 第 5 步)
- 憑證有效期上限(90 天離線 / 7 天線上)限制最長延遲
- 簽發方在高敏感場景 SHOULD 使用更短的有效期(如 1 天)
殘餘風險:長期離線的終端可能在數天甚至更長時間內接受已被撤銷的憑證。這是離線授權機制的固有取捨——在可用性與撤銷時效性之間選擇了可用性優先。
10.2.3 重放攻擊風險
風險:攻擊者擷取合法的協議訊息後重放給終端。
緩解措施:
- AuthRequest 包含
message_id(UUID v7,時間相關),終端 MAY 維護短期已見 ID 快取以拒絕重放 - Heartbeat 的
sequence_number單調遞增,重放被偵測(§5.4.2) - TLS 通道提供基礎的重放保護(每個 TLS 會話獨立)
- 撤銷聲明的
revocation_id唯一,重放無效
殘餘風險:在 TLS 會話內部,攻擊者若已突破 TLS 加密則可重放訊息。這是 TLS 層面的威脅,不是 CAP 協議的範圍。
10.2.4 時鐘攻擊風險
風險:攻擊者透過修改終端時鐘繞過有效期檢查或暴露時鐘相關漏洞。
緩解措施:
- 終端時鐘來源應可信(系統時鐘、NTP 同步)
- §3.6 定義時鐘漂移偵測:顯著時鐘跳變時拒絕校驗
- 離線時長過久的終端 SHOULD 提示使用者重新同步時鐘
殘餘風險:實體控制終端的攻擊者可能能夠操縱時鐘。實體安全是終端硬體的責任。
10.2.5 Descriptor_Issuer 攻陷風險
風險:Descriptor_Issuer 被攻擊者完全控制,可簽發任意憑證。
緩解措施:
- §8.6.2 定義緊急金鑰撤銷機制
- Registration_Authority 可透過撤銷 Descriptor_Issuer 的 Verification_Key 使其所有簽發憑證失效
- 終端在收到 Verification_Key 撤銷後立即終止相關 Session(§5.5)
- 信任根(Registration_Authority)的安全性是關鍵——其攻陷將導致整個信任鏈崩潰
殘餘風險:在 Verification_Key 撤銷前已經簽發的憑證可能被濫用。撤銷視窗期不可避免。
10.2.6 資源耗盡攻擊風險
風險:惡意 Fay 透過大量請求耗盡終端資源(連線數、Session 數、儲存)。
緩解措施:
- §5.8 定義 Session 數量限制
- §3.2.3 定義憑證儲存上限
- 心跳逾時回收失效 Session 釋放資源
- 終端 SHOULD 實施基於 fay_id 的速率限制(在 §7.4.2 頻率約束之外)
殘餘風險:合法簽發的多個憑證可能合謀耗盡資源。終端策略應限制單一 Fay 的總配額。
10.2.7 交接競態風險
風險:攻擊者利用交接流程的中間狀態(如 §6.5.1 [T2] 的「無活躍 Session」狀態)搶佔資源。
緩解措施:
- 交接過程中資源處於預佔狀態(
handover_pending),不接受其他 Session 請求(§6.5.3) - 即使 [T2] 與 [T3] 之間出現失敗,資源也明確進入「空閒」狀態,由後續請求公平競爭(§6.5.2)
- 交接逾時使資源不會長期處於 pending 狀態
殘餘風險:在 [T3]–[T4] 失敗的極端情況下,原 Fay 的會話已不可恢復——需要重新發起 AuthRequest。這是必要的代價,避免引入「自動恢復」帶來的更複雜的安全分析。
10.2.8 降級攻擊風險
風險:攻擊者透過阻斷終端與 Ticket_Issuer 的連線,迫使終端進入降級模式(§4.5),從而繞過即時撤銷檢查。
緩解措施:
- 終端在降級模式下預設拒絕接受新的 Trusted_Ticket
- 已轉換為本地 Authorization_Descriptor 的票據的有效期短(最長 7 天)
- 終端 SHOULD 提示 iFay_Runtime 目前處於降級模式,使敏感操作可主動拒絕
殘餘風險:降級期間已轉換的本地憑證仍可被使用。這是離線優先設計的固有取捨。
10.2.9 側通道攻擊風險
風險:透過觀察 CAP 協議回應時間或錯誤碼細節推斷敏感資訊(如有效憑證存在性)。
緩解措施:
- 錯誤碼不暴露內部細節(§9.9)
- 實作 SHOULD 在校驗失敗的不同分支保持相近的回應時間
- 不在錯誤回應中洩露金鑰指紋、內部 ID 等
殘餘風險:完全消除側通道攻擊是極困難的。本協議層面提供基礎措施,深度防禦依賴實作品質。
10.3 部署安全建議
實作 CAP 協議的部署者應考慮以下安全實務:
10.3.1 金鑰管理
- 私鑰儲存使用硬體安全模組(HSM、TPM、Secure Enclave)
- 金鑰輪替週期不長於 90 天(終端本地金鑰)/ 365 天(Issuer 金鑰)
- 建立金鑰外洩應急回應流程
- 關鍵簽章操作要求多人審批或硬體 PIN
10.3.2 監控與稽核
- 記錄所有授權校驗失敗事件並警示
- 監控異常的撤銷請求頻率(可能指示 Descriptor_Issuer 被攻陷)
- 稽核日誌使用單獨的持久化儲存,防篡改
- 對高敏感資源(configure 模式、
require_human_confirmation約束)的所有操作完整稽核
10.3.3 終端強化
- 啟用 OS 強制存取控制(SELinux、AppArmor)
- 使用沙箱隔離 iFay_Runtime 與其他程序
- 關閉不必要的系統服務,減少攻擊面
- 定期更新系統修補程式
10.3.4 網路分段
- Registration_Authority 的部署網路與公網隔離
- Descriptor_Issuer 部署在受控環境
- 終端到 Issuer 的通訊限制在必要的連接埠/協議
- 實施 mTLS(雙向認證)保護關鍵通訊
10.4 協議局限性
本規範明確不解決以下安全問題:
- Fay 完整性:CAP 協議假定 Fay 實例自身的程式碼和行為完整性由其他機制保證(如程式碼簽章、執行時完整性度量)
- 實體安全:終端被實體攻擊者完全控制時,軟體層面無法提供保護
- 稽核日誌格式:v1 不規範化稽核日誌格式(藍圖 §3.2 排除項)
- 跨終端身分聯邦:v1 不支援跨終端的統一身分管理,每個終端獨立信任 Registration_Authority
10.5 後續版本的安全演進
未來版本(v2+)計畫引入的安全增強:
- 分散式撤銷共識(藍圖 §3.2 排除項)
- 稽核日誌標準化格式(藍圖 §3.2 排除項)
- 抗量子密碼學演算法(追蹤 NIST PQC 標準)
- 零信任原則的更深整合
- 形式化的協議安全性證明
