本文說明 Confidential Space 的安全控管措施,以及系統如何防範各種威脅。機密空間的設計宗旨是讓各方與工作負載分享機密資料 (例如受監管的資料或個人識別資訊 (PII)),同時保有資料的機密性和擁有權。機密空間可協助建立隔離區,確保資料只會向工作負載和原始資料擁有者顯示。
如果無法與工作負載運算子建立信任關係,或無法在建立機密資料的原始各方之間建立信任關係,您可以使用 Confidential Space。舉例來說,金融機構可使用 Confidential Space 相互合作,找出詐欺或分析洗錢活動。Confidential Space 可分析顧客資料集,同時保護顧客身分隱私。
Confidential Space 系統的元件
機密空間使用受信任的執行環境 (TEE),只會向授權工作負載發布密鑰。認證程序和強化的 OS 映像檔可協助保護工作負載,以及工作負載處理的資料,避免遭到不受信任的運算子存取。
機密空間系統有三個核心元件:
- 工作負載:容器化映像檔,內含在雲端 TEE 中執行的強化 OS。您可以使用機密運算做為 TEE,提供硬體隔離和遠端認證功能。
- Google Cloud 認證:OpenID Connect (OIDC) 權杖提供者。您可以使用這項服務驗證 TEE 的認證引文,並發布驗證權杖。權杖包含工作負載的識別屬性。
- 受保護的資源:代管的雲端資源,例如 Cloud Key Management Service 金鑰或 Cloud Storage 值區。資源受到允許政策保護,該政策會授予授權同盟身分權杖存取權。透過工作負載身分集區這個中繼步驟,OIDC 權杖會轉換為 IAM 可使用的聯合身分權杖。
系統會確保只有授權工作負載才能存取受保護的資源。此外,機密空間有助於在認證前後,保護工作負載免於檢查和竄改。
在機密空間系統中,有三方參與者:
- 工作負載作者:建立容器化映像檔,其中包含可存取受保護資源的應用程式。作者無法存取資料或結果。此外,作者無法控管資料或結果的存取權。
- 工作負載運算子:在 Google Cloud 專案中執行工作負載。作業人員通常擁有專案的完整管理員權限。運算子可以管理 Compute Engine 執行個體、磁碟和網路規則等資源,並與作用於這些資源的任何 Google Cloud API 互動。 Google Cloud 運算子無法存取資料或結果,也無法影響或修改程式碼或執行環境。此外,運算子無法控管資料或結果的存取權。
- 資源擁有者 (或資料協作者):擁有受保護資源。資源擁有者可以存取自己的資料、設定資料權限,以及查看結果。他們無法存取其他資源擁有者的資料,也無法自行修改程式碼。
Confidential Space 支援信任模型,其中工作負載作者、工作負載運算子和資源擁有者是互不信任的獨立立約方。
下圖顯示系統元件和參與者。工作負載位於與受保護資源不同的專案中。
安全的資料處理作業範例
機密空間可協助您在分享資料時保護使用者隱私。下表說明三種範例用途。
用途 | 範例情境 |
---|---|
功能性加密模型 | 在函數加密模型中,Alice 想要與 Bob 分享機密資料的結果,但不想揭露整個資料集。Alice 會加密資料集,並在專案的 Cloud KMS 中保護資料加密金鑰 (DEK)。Alice 編寫實作工作負載的程式,並與 Bob 分享二進位檔。Alice 設定 KMS,讓程式存取 DEK。工作負載會在 Bob 的機密空間中執行,解密及處理 Alice 的資料集,然後將結果寫入 Bob 的 Cloud Storage。 |
多方運算 | 在多方運算中,Alice 和 Bob 希望彼此分享結果,同時保留輸入資料集的機密性。與函式加密模型類似,Alice 和 Bob 會加密各自的資料集,並在專案的 Cloud KMS 執行個體中保護 DEK。他們共同撰寫可決定結果的程式,並在機密空間中執行。Alice 和 Bob 設定 KMS,授予程式 DEK 的存取權。程式會讀取及處理這兩個資料集,並將結果寫入共用的 Cloud Storage 值區。 |
重要分享 | 更複雜的機制會使用金鑰分享的概念。金鑰共用是 Alice、Bob 和其他擁有者共用的私密金鑰,因此即使知道個別共用金鑰,也無法存取加密資料集。在這個機制中,信任關係會分散到多位擁有者身上。私密金鑰只會在受限的 TEE 中,由授權工作負載組裝。 |
在這些範例中,只有工作負載可以存取加密資料集並進行處理。Confidential Space 可確保無人能對不屬於自己的資料執行未經稽核的作業。資料擁有者可控管資料的使用方式,以及哪些工作負載有權對資料採取行動。
保護工作負載的完整性和機密性
為保護工作負載免受不受信任的工作負載運算子侵害, 機密空間會實作下列安全控管措施:
- 認證程序會偵測工作負載映像檔或其 TEE 是否經過修改。這項控管機制有助於保護工作負載的完整性,確保在事前認證階段安全無虞。
- 強化基礎映像檔有助於縮小攻擊面,並防止工作負載運算子在執行階段存取或入侵執行個體。這項控制項有助於在認證後保護工作負載的完整性和機密性。這些安全控管措施可共同保護工作負載、機密資訊和處理的資料。
認證程序
認證程序以受防護的 VM 測量啟動和擴充執行階段測量為依據。這個程序會在虛擬信任平台模組 (vTPM) 裝置中,擷取受保護的僅擴充暫存器中的啟動順序測量值。
測量範圍涵蓋早期啟動元件、載入的核心和容器映像檔。此外,這些屬性還包含環境屬性,例如指出執行個體是否為機密虛擬機器的旗標。vTPM 會使用 Google Cloud Attestation 信任的認證認證金鑰,簽署 (或引用) 這些測量結果。
下圖顯示 Confidential Space 系統的元件,以及每個元件在驗證程序中的參與方式。
認證程序取決於下列元件:
- 客層韌體:不可變更的元件,是Google Cloud的信任部分。
- 經過認證的 Confidential Space 映像檔:以Container-Optimized OS 為基礎的強化映像檔,可從附加的開機磁碟讀取。
- 早期啟動元件:與 vTPM 互動的開機載入程式和核心,可將啟動元件測量至平台設定暫存器 (PCR)。
啟動器: 這個元件會從映像檔存放區下載工作負載二進位檔,並將容器及其設定測量到 PCR 中。啟動器會從執行個體中繼資料伺服器讀取設定。
認證處理程式碼:負責準備 PCR 引用,並傳回 vTPM 的引用、認證金鑰和完整事件記錄的程式碼。
Google Cloud 驗證:這項服務會驗證引號、重播事件記錄、核發 OIDC 權杖,並傳回權杖和工作負載存取權政策的屬性。
強化版映像檔
機密空間映像檔是最小的單一用途 OS,這個映像檔會執行容器啟動器,而容器啟動器會啟動單一容器。機密空間映像檔以 Container-Optimized OS 的現有安全性強化功能為基礎,並提供下列優點:
- 採用完整性保護機制的加密磁碟分割區:機密空間映像檔包含下列分割區:
- 經過驗證的加密網路連線:啟動器會使用 TLS 驗證 Google Cloud 認證,並保護通訊連結。
- 各種開機測量值:這些測量值包括核心指令列引數、
root-fs
的dm-verity
設定,以及工作負載二進位檔。 停用遠端存取和雲端專用工具:這些工具包括 sshd 和 OS 登入。
減少狀態轉換:舉例來說,啟動器會執行單一容器,然後終止。
威脅模型和緩解措施
本節說明機密空間有助於減輕的威脅模型,以及機密空間導入的新風險。
下列攻擊不在本文的討論範圍內:
- 軟體供應鏈攻擊,適用於客體統一可延伸韌體介面 (UEFI) 韌體、機密空間映像檔啟動載入程式和核心、容器執行階段,以及工作負載的第三方依附元件。資料協作者會假設資源擁有者已審查及稽核容器映像檔,然後才透過允許政策與他們共用資源。
- 對 Google Cloud發動攻擊,例如 VM 逸出。
可能遭受的攻擊
機密空間旨在防範三種可能的攻擊:
- 惡意工作負載運算子:惡意工作負載運算子可以修改磁碟內容、攔截網路連線,並在執行階段嘗試入侵 TEE。惡意運算子可能會擴大攻擊面或限制執行階段環境。舉例來說,惡意操作人員可以新增序列埠,藉此導入新的攻擊向量。舉例來說,惡意操作人員可能會限制資源,例如限制訪客的記憶體大小、變更磁碟空間或變更防火牆規則。這些限制可能會觸發 I/O 錯誤,導致錯誤案例測試不佳。
- 惡意認證用戶端:這類攻擊者會連線至 Google Cloud Attestation,並傳送格式錯誤但已簽署的事件記錄訊息。
- 惡意資源擁有者:惡意資源擁有者可完全控管工作負載使用的加密資料集。這類攻擊者可能會提供格式錯誤的輸入內容或有偏差的資料,並嘗試觸發工作負載中的剖析安全漏洞,或規避隱私權控管措施。
攻擊面
下表說明攻擊者可用的攻擊面。
攻擊者 | 目標 | 攻擊面 | 風險 |
---|---|---|---|
工作負載運算子 | TEE、工作負載 | 磁碟讀取 |
從磁碟讀取的任何內容都受到攻擊者控制。 |
工作負載運算子 | TEE、工作負載 | 磁碟寫入 | 攻擊者可以查看寫入磁碟的任何內容。請參閱磁碟快照和匯入功能。 |
工作負載運算子 | TEE、工作負載 | 中繼資料伺服器 | 從中繼資料伺服器讀取的執行個體屬性 (包括開機指令碼和環境變數) 都在攻擊者的掌控之中。 |
工作負載運算子 | TEE、工作負載 | 網路 | 外部網路連線可能會遭到攔截,導致無法存取映像檔存放區或 Google Cloud 認證。這項攻擊是透過私人虛擬私有雲和面向公眾的 Cloud Router 執行個體完成。 |
認證用戶端 | Google Cloud Attestation | 事件記錄和認證訊息 | Google Cloud 驗證具有複雜的加密邏輯,難以撰寫防禦程式碼。 |
資源擁有者 | 工作負載 | 加密資料集 | 攻擊者可能會汙染工作負載的輸入資料集,因此加密資料不一定是可信的資料。 |
Google Cloud 基礎架構
Google Cloud 包括 Compute Engine Hypervisor、機密 VM 的 vTPM、訪客 UEFI 韌體,以及代管的 Google Cloud 驗證執行個體。系統會安全保護 vTPM 和 OIDC 簽署金鑰等機密金鑰內容。
Google 基礎架構的設計宗旨,是將每位客戶的資料和其他客戶及使用者的資料以邏輯方式隔離,就算將資料存放在同一個實體伺服器中,也不會混雜在一起。支援人員和工程師的管理員存取權受到限制,且會經過稽核,並對客戶公開。此外,機密 VM 的內嵌記憶體加密功能可保護執行個體記憶體的機密性。內嵌記憶體加密功能會導致直接檢查或意外記錄記憶體 (核心當機記錄) 的作業失效。如要進一步瞭解我們如何保護平台,請參閱 Google 安全性總覽。
威脅與管控
加密檔案系統搭配完整性防護功能,可降低磁碟攻擊帶來的風險。此外,從磁碟讀取程式碼後,系統會進行測量,且不會再從磁碟重新讀取該資料。密碼絕不會以純文字形式揭露給磁碟或任何外部裝置 (例如序列控制台)。
透過經過驗證的端對端加密管道,可降低網路攻擊的風險。映像檔會停用外部網路存取權,例如 SSH。認證通訊協定有助於保護啟動程序,以及從中繼資料伺服器讀取的任何設定。最後,機密空間工作負載應使用差異化隱私權控制項,以減輕資料集偏誤造成的風險。
下表說明威脅和緩解措施:
攻擊測量啟動程序
下表說明與測量啟動程序相關的潛在威脅和緩解策略。
威脅 | 減緩 | 緩解措施 |
---|---|---|
攻擊者使用不支援測量啟動的舊版韌體啟動受防護的 VM。 如果成功,攻擊者可能會回放任意測量結果,並破解遠端認證。 |
控制層可減輕這項威脅。 Google Cloud 機密空間會新增 vTPM 裝置和最新版 UEFI 韌體。此外,機密空間會啟用測量啟動,且無法停用。 |
基礎架構內 Google Cloud |
攻擊者會覆寫客體實體記憶體中的 UEFI 韌體、重新啟動客體 (這會重設 vTPM 暫存器),並執行修改過的韌體。 如果成功,攻擊者可能會回放任意測量結果,並破解遠端認證。 |
虛擬機器監控程式可減輕這項威脅。在客機重新啟動時,管理程序會將 UEFI 韌體的乾淨副本載入客機記憶體。系統會捨棄客體記憶體中的先前修改內容。此外,只有重新啟動客層會重設 vTPM。 | 在 Google Cloud 中,由您啟用機密運算 |
攻擊者修改未測量的設定檔,對程式執行作業造成負面影響。 | 認證程序可減輕這項威脅。所有可執行二進位檔和相關設定檔都會在執行前完整測量。 具體來說,系統會測量安全啟動變數、grub 設定和核心指令列引數。 安全審查結果顯示,認證程序中沒有遺漏任何評估。 |
在 Confidential Space 映像檔中 |
攻擊者會觸發早期啟動元件中的記憶體損毀漏洞,並取得程式碼執行權。 | 早期啟動元件是以 C 語言編寫而成。這些元件會處理不受信任的使用者資料,因此可能容易發生記憶體損毀問題。如需近期範例,請參閱 BootHole。
認證程序可降低這項風險:早期啟動元件必須先評估任何使用者控制的資料,才能處理這些資料。BootHole 攻擊會使用修改過的
不過,在 Confidential Space 系統中,該攻擊無法通過認證,因為 複雜的檔案系統邏輯也會帶來相關風險。過去的 Sequoia 等安全漏洞顯示,檔案系統驅動程式會處理複雜的資料結構,因此可能容易發生記憶體損毀問題。
這項風險可透過區塊層級的 |
在 Confidential Space 映像檔中 |
攻擊者會在讀取及測量磁碟上的早期啟動二進位檔後,以及讀取及執行這些檔案前,修改這些檔案 (磁碟 TOCTOU)。 | 早期開機元件是為裸機建構,可能無法預期雲端的動態環境。開機元件可能會假設磁碟內容在執行期間不會變更,但這項假設在雲端環境中並不正確。 使用防禦性程式設計可降低這項風險:使用讀取、測量、執行模式後,磁碟內容會變成唯讀。 機密空間映像檔的安全性審查並未在早期啟動元件 (例如 UEFI、Shim 或 GNU GRUB) 中發現 TOCTOU 問題。 |
在 Confidential Space 映像檔中 |
核心載入後,攻擊者會修改磁碟上的裝置驅動程式和使用者模式服務。 | 完整性保護機制可防範這項威脅。
機密空間圖片中的 |
在 Confidential Space 映像檔中 |
攻擊容器啟動器
下表說明與啟動器相關的潛在威脅和緩解策略。
威脅 | 減緩 | 緩解措施 |
---|---|---|
攻擊者攔截啟動器或映像檔存放區的網路連線。 | 與圖片存放區的連線受到經過驗證的加密 TLS 連線保護。 攻擊者可以變更圖片網址,並控制工作負載二進位檔。不過,這些動作會反映在認證記錄中。 圖片存放區並非透過存取清單控管,因此系統會假設所有人都能查看圖片。請務必確保工作負載容器映像檔不含任何密碼。 |
在 Confidential Space 映像檔中 |
攻擊者在磁碟上修改工作負載映像檔,而該映像檔已下載並經過測量。 | 可寫入的加密磁碟分割區可保護完整性,因此能減輕這項威脅。
工作負載映像檔及其暫時資料會受到
|
在 Confidential Space 映像檔中 |
攻擊者會修改中繼資料伺服器中的啟動器設定,並控管映像檔存放區網址。 | 認證程序會偵測載入非正版映像檔的不安全設定。 | Google Cloud Attestation 內 |
Google Cloud Attestation 攻擊
下表說明 Google Cloud 驗證的潛在威脅和緩解策略。
威脅 | 減緩 | 緩解措施 |
---|---|---|
攻擊者攔截啟動器或 Google Cloud 驗證的網路連線,並從線路讀取私密權杖。 | 只要透過經過驗證的加密 TLS 連線,就能減輕這項威脅。這項連線有助於保護權杖,避免遭到被動竊聽。 攻擊者缺少 TLS 金鑰,因此無法冒用服務身分。即使攻擊者成功,也無法建立有效的 OIDC 權杖。 攻擊者無法冒用有效用戶端的身分,因為認證通訊協定可確保用戶端身分。 |
在工作負載與認證服務之間的網路中。 |
攻擊者會利用剖析差異,導致認證程序中未偵測到變更。 | 這是因為測量事件記錄會序列化並傳送至 Google Cloud Attestation,然後經過剖析和處理。 如果服務和執行階段 OS 對記錄的語意有不同看法,就會發生剖析差異。
舉例來說,如果
如果剖析引擎能正確反映 OS 行為,即可降低這項風險。特別是 |
在 Confidential Space 映像檔中 |
攻擊者會使用所有服務資源,導致服務在阻斷服務 (DoS) 攻擊中停止運作。其他 Confidential Space 使用者的服務會中斷。 | 為降低這項可靠性風險,我們採用分散式彈性服務,可視需要輕鬆複製及擴充。 程式碼可防止惡意用戶端耗盡資源。 |
工作負載內 |
攻擊工作負載
下表說明與工作負載相關的潛在威脅和緩解策略。
威脅 | 減緩 | 緩解措施 |
---|---|---|
攻擊者會從可寫入的分割區讀取執行階段密鑰。 |
加密檔案系統可減輕這項威脅。可寫入的檔案系統會使用 做為深度防禦技術,OIDC 權杖的範圍有限,且效期短暫。 |
在 Confidential Space 映像檔中 |
攻擊者從序列主控台讀取執行階段密鑰。 | 由於憑證和權杖絕不會列印至序列主控台,因此機密空間映像檔可減輕這項威脅。此外,雲端記錄功能已停用。 | 在 Confidential Space 映像檔中 |
攻擊者使用 OSLogin 套件更新授權的 SSH 金鑰,然後連線至執行中的執行個體。 |
由於預設 systemd 服務 (包括 sshd ) 會遭到遮蓋,因此機密空間映像檔可減輕這項威脅。 |
在 Confidential Space 映像檔中 |
攻擊者會更新中繼資料伺服器中的開機指令碼,而客體代理程式會自動載入這些指令碼。 | 由於訪客代理程式套件已停用,因此機密空間映像檔可減輕這項威脅。 | 在 Confidential Space 映像檔中 |
攻擊者使用 OS 設定代理程式,將錯誤套件推送至 VM。 | 由於 OS 設定代理程式已停用,因此機密空間映像檔可減輕這項威脅。 | 在 Confidential Space 映像檔中 |
攻擊者將格式錯誤的加密資料集傳遞至工作負載。 | 在工作負載中加入防禦性剖析程式碼,即可減輕這項威脅。 | 工作負載內 |
攻擊者會將有偏差或遭竄改的資料集傳遞至工作負載,並嘗試從其他各方瞭解資料集資訊。 | 在工作負載中實作差異化隱私權控制項,即可減輕這項威脅。 | 工作負載內 |
安全測試
Confidential Space 在 Google 經過了全面的安全審查程序。這項安全審查程序包含下列測試和稽核:
負向流程端對端整合測試
這些測試會驗證在不良的測量結果 (例如程式碼在非預期的 TEE 環境中執行,或啟動修改過的工作負載容器) 中,認證是否會失敗。
手動稽核測量開機程序
本次審查的重點是找出缺少的評估資料和重複讀取錯誤。測試結果顯示,程式碼是根據安全性最佳做法編寫,且發生失敗時,程式碼會關閉 (停止運作)。
手動稽核機密空間映像檔和啟動器邏輯的建構程序:
本次審查的重點是移除套件和減少攻擊面。
手動稽核 Google Cloud Attestation
本次審查的重點是正確的認證通訊協定實作方式,以及避免剖析問題。
由網路安全專家進行密碼學審查
本次審查的重點是認證通訊協定、檔案系統加密和完整性解決方案。
隱私權專家審查
本次審查的重點是 Google 撰寫的工作負載中,差異隱私權控制項的相關內容。
持續模糊測試
這些測試涵蓋安全關鍵元件,例如 vTPM 和 Google Cloud 驗證。
NCC Group 是外部滲透測試機構,負責對系統執行滲透測試。NCC 審查 Confidential Space,確認其為安全運算平台。
後續步驟
- 如要開始使用 Confidential Space,請參閱「使用 Confidential Space 分析機密資料」。
如要進一步瞭解如何保護使用中的資料,請參閱「機密運算」。
如要進一步瞭解 Google 基礎架構安全防護,請參閱「Google 基礎架構安全性設計總覽」。