總覽
Fuchsia 會使用傳輸層安全標準 (TLS) 加密及驗證系統服務和使用者應用程式之間的網路通訊。如要在 TLS 握手期間建立信任關係,作業系統會依據一組信任的根憑證授權單位 (CA),也就是一般所稱的 TLS 信任存放區。
為在傳輸安全機制中強制執行最小權限原則,Fuchsia 會將一般用途的公開網路信任與範圍受限的信任存放區 (例如 Google Trust Services 根儲存庫) 分開。Fuchsia 不會向所有元件公開單一系統範圍的信任存放區,而是透過元件能力轉送和產品組裝設定,隔離憑證存取權,確保元件只會取得運作所需的特定根憑證存取權。
雙重信任存放區架構
Fuchsia 提供兩個集中維護的信任存放區套件:
+-----------------------------------------------------------------------------+
| Fuchsia Platform Services |
| |
| +-----------------------------+ +---------------------------------+ |
| | Google-Specific Services | | Web & Third-Party Runtimes | |
| | (Feedback, Cobalt, | | (WebEngine, HTTP Clients, | |
| | Timekeeper) | | User Applications) | |
| +--------------+--------------+ +----------------+----------------+ |
| | | |
| | +-----------------------------+ | |
| | | Configurable Subsystems | | |
| | | (Software Delivery) | | |
| | +--------------+--------------+ | |
| | | (via Assembly) | |
| v v v |
| +-----------------------------+ +---------------------------------+ |
| | google_root_ssl_certificates| | root_ssl_certificates | |
| | (Google Trust Services) | | (Chrome Root Store) | |
| +-----------------------------+ +---------------------------------+ |
+-----------------------------------------------------------------------------+
1. 公開信任存放區 (root_ssl_certificates)
- 內容:Chrome Root Store 憑證套件。
- 用途:一般輸出 HTTPS 流量、網頁瀏覽器,以及與公開網際網路中任意端點通訊的第三方服務。
- 路由:透過
root-ssl-certificates目錄能力公開給元件,通常會掛載至/config/ssl的元件命名空間。
2. Google Trust Services (GTS) 信任存放區 (google_root_ssl_certificates)
- 內容:Google Trust Services (GTS) 的根憑證,這是由 Google 營運的公開憑證授權單位階層。
- 用途:與 Google 代管端點通訊的服務 (例如遙測、當機報告、網路時間和軟體傳送)。
- 安全性優點:將信任嚴格限制在與已知後端端點相關的授權單位,可提供縱深防禦:
- 縮小攻擊面:將信任的根憑證授權單位嚴格限制在預期端點所需的範圍內,大幅縮小整體信任面。
- 減少爆破範圍:防範無意間的信任授權、憑證設定錯誤,或更廣泛的 Web PKI 信任流失,保護重要平台基礎架構。
- 範圍信任對齊:直接將信任錨點與預期的後端通訊管道相符,強制執行最低權限原則。
信任存放區指派與路徑
元件會根據網路需求取得信任存放區存取權:
1. 靜態路由平台服務
專門與 Google 第一方後端端點通訊的服務,會靜態路由至元件拓撲中的 google_root_ssl_certificates:
- 意見回饋與鑑識 (
feedback):僅將當機報告和診斷快照上傳至 Google 後端服務。 - Cobalt 指標 (
cobalt):將隱私權保護系統遙測資料傳輸至 Google 指標管道。 - 時間管理員 (
timekeeper):在httpsdate網路時間與 Google 時間伺服器同步時,驗證 TLS 憑證。
2. 可設定的子系統 (軟體交付)
在產品組裝時,系統會設定同時提供一般開放原始碼產品和受限第一方產品的子系統。目前,軟體交付 (SWD) 堆疊 (omaha-client、system-updater) 可透過組裝設定:
platform: {
software_delivery: {
trust_store: "restricted", // Options: "restricted" | "public"
},
}
"restricted":供第一方產品使用,確保更新檢查和套件下載作業會嚴格驗證 Google 基礎架構。"public"(預設):用於從一般公開存放區下載套件的通用開放原始碼或自訂產品。
在組裝期間,平台會動態納入相符的平台組裝輸入套件 (AIB) (swd_trust_store_restricted 或 swd_trust_store_public),並將對應的 HTTP 用戶端通訊協定 (fuchsia.net.http.Loader 和 fuchsia.pkg.http.Client) 從 #network 路由至更新和封裝堆疊。
驗證與架構保證
Fuchsia 會使用平台層級的工具,強制執行信任存放區邊界:
- 組件建構時間驗證:平台組件工具會在建構映像檔期間驗證產品設定,避免選取無效或衝突的信任儲存區。
- Scrutiny 靜態分析:Scrutiny 架構可在建構期間靜態驗證元件拓撲和能力轉送。產品可以定義路由政策,確保安全關鍵元件只會路由至核准的信任儲存區。
平台政策:產品提供的信任商店
Fuchsia 平台不支援產品將自己的任意 TLS 信任存放區提供或注入核心平台服務。
Rationale
維護平台安全不變性: 核心平台服務 (例如系統更新驗證、當機回報和硬體認證) 代表基本安全界線。如果允許將未經審查或任意的根憑證注入平台服務,就會產生規避平台安全控制措施的機制,進而損害系統完整性。
經過稽核的平台基準: 平台會集中維護及稽核支援的信任存放區設定檔。產品會從經過稽核的平台設定檔 (例如
restricted與public) 中選取,藉此設定行為,而不是導入未經驗證的根集。應用程式與平台界線: 需要自訂或私人企業 PKI 的應用程式、使用者空間執行階段或客體環境 (例如網頁執行階段或容器執行階段),必須在自己的獨立沙箱中管理這些憑證。自訂應用程式信任機制不得與平台層級的系統服務混用或傳播。