天天看點

玩轉機密計算從 secGear 開始

作者:openEuler

随着網絡與計算業務的快速發展,資料成為數字經濟的關鍵生産要素,如何高品質挖掘資料價值,建構安全、合規、可信的資料流通,成為推動數字經濟健康發展的關鍵。此外,根據大陸個人資訊保護法、歐盟通用資料保護條例 GDPR 等的要求可以看出,資料隐私監管保護的範圍在擴大,保護力度日益增強。是以,對關鍵資料和業務進行安全保護,不僅是技術挑戰,也是滿足安全合規的必要條件。

目前保護資料的通行方案通常作用于靜态存儲或網絡傳輸狀态的資料,難以有效保護正在被使用的資料,是以,隐私計算技術應運而生。

作為隐私計算的重要分支,機密計算是一種利用硬體可信執行環境 (Trusted Execution Environment, TEE) 保護使用中資料的技術 [1]。如下圖所示,在非安全世界(Rich Execution Environment, REE)中,基于硬體隔離出的 TEE 環境就像是一個黑盒子,可防止外部(包括作業系統、特權使用者、惡意程式等)對 TEE 内使用中的應用程式和資料進行未經授權的通路或篡改,進而實作資料在第三方平台的 “可用而不可見”,消除資料上雲的安全顧慮,推動資料安全流通。

玩轉機密計算從 secGear 開始

機密計算痛點

目前業界主流處理器/晶片均實作了各自的機密計算技術,例如 ARM TrustZone、CCA,Intel SGX、TDX, AMD SEV 等;此外,基于 PCIe TDISP 特性,GPU、DPU 等晶片也在積極建構機密計算環境,如 Nvidia H100 GPU,Nvidia Bluefield、AMD smartNIC 系列 DPU 等。綜合來看,各種 TEE 技術的核心要素是提供硬體隔離運作環境,并依托信任根提供度量、記憶體加密等安全能力。

由于各處理器架構的 TEE 設計思路、實作方式不同,導緻各家 SDK 接口迥異、開發流程複雜,造成開發機密計算應用開發難度高、可移植性差、生态隔離。對于應用開發者來說,其開發的安全應用與體系結構強綁定,例如基于 SGX SDK 開發的應用就很難移植到 ARM TrustZone 上,因為安全 OS SDK 提供的接口和 SGX SDK 存在很大差異。

secGear 機密計算統一開發架構

綜上可知,業界機密計算技術種類繁多,SDK 也各不相同,接口複雜,開發困難,不同 TEE 間應用生态隔離,給機密計算應用開發者帶來了較高的開發、維護成本,影響機密計算生态的發展。openEuler secGear 機密計算統一開發架構,緻力于相容業界主流 TEE,屏蔽 TEE 差異,對開發者提供統一、簡易的開發接口,實作不同架構共源碼,使開發者聚焦業務,降低機密計算應用開發維護成本,打通各 TEE 應用生态,助力機密計算生态建設。

secGear 從邏輯上分為三層,如下圖所示。

  • Base Layer:機密計算 SDK 統一層,屏蔽 TEE 及 SDK 差異,實作不同架構共源碼。
  • Middleware Layer:通用元件層,機密計算軟體貨架,無需從頭造輪子,幫助使用者快速建構機密計算解決方案。
  • Server Layer:機密計算服務層,提供典型場景機密計算解決方案。
玩轉機密計算從 secGear 開始

secGear 遵循木蘭寬松許可證(MulanPSL-2.0 License)[2], 開發者可基于 secGear 貢獻開源中間件或解決方案,也可以基于 secGear 建構商用解決方案。目前除了社群開源的 MindSpore 縱向聯邦機密計算解決方案,也不乏基于 secGear 的客戶解決方案,如 GaussDB 全密态資料庫,BJCA 密碼子產品、openLookeng 聯邦 SQL 等。

典型應用場景

本章節介紹幾個基于 secGear 的實際業務場景解決方案,便于大家學習了解、借鑒,進而結合自身業務建構對應的機密計算解決方案。

BJCA 基于 TEE 的密碼子產品

在政策和業務的雙驅動下,密碼應用保障基礎設施一直在向虛拟化演進,随着業務上雲,密碼服務支撐也需要建構全新的密碼傳遞模式,實作密碼、雲服務與業務應用的融合,是以數字認證(BJCA)推出基于 TEE 的密碼子產品,數字認證既可以利用鲲鵬 TEE 環境建構合規的密碼計算子產品,支撐密碼雲服務平台,同時也可以基于鲲鵬主機建構 “機密計算平台”,為雲計算、隐私計算、邊緣計算等各類場景提供 “高速泛在、彈性部署、靈活排程” 的密碼服務支撐。基于鲲鵬處理器的内生式密碼子產品已經成為密碼行業變革型的創新方案,并作為内生可信密碼計算新起點[3]。

玩轉機密計算從 secGear 開始

傳統密碼子產品中算法協定以及處理的資料是隐私資料,可基于 TEE 保護。如圖所示,基于 secGear 機密計算開發架構将密碼子產品拆分成兩部分:管理服務、算法協定。

  • 管理服務:運作在 REE 側,負責對外提供密碼服務,轉發請求到 TEE 中處理。
  • 算法協定:運作在 TEE 側,負責使用者資料加解密等處理。

由于密碼服務可能存在高并發、大資料請求,此時 REE 與 TEE 存在頻繁互動以及大資料拷貝,會導緻性能直線下降,針對類似場景可使用 secGear 零切換特性優化,減少調用切換及資料拷貝次數,實作性能倍增。

GaussDB 基于 TEE 的全密态資料庫

雲資料庫俨然已成為資料庫業務未來重要的增長點,絕大多數的傳統資料庫服務廠商正在加速提供更優質的雲資料庫服務。然而雲資料庫所面臨的風險相較于傳統資料庫更複雜多樣,無論是應用程式漏洞、系統配置錯誤,還是惡意管理者都可能對資料安全與隐私保護造成巨大風險。

雲資料庫的部署網絡由 “私有環境”向“ 開放環境”轉變,系統運維管理角色被拆分為業務管理者和運維管理者。業務管理者擁有業務管理的權限,屬于企業業務方,而運維管理者屬于雲服務提供商。資料庫運維管理者雖然被定義成系統運維管理,其實際依舊享有對資料的完全使用權限,通過運維管理權限或提權來通路資料甚至篡改資料;再者,由于開放式的環境和網絡邊界的模糊化,使用者資料在整個業務流程中被更充分的暴露給攻擊者,無論是傳輸、存儲、運維還是運作态,都有可能遭受來自攻擊者的攻擊。是以對于雲資料庫場景,如何解決第三方可信問題,如何更加可靠的保護資料安全相比傳統資料庫面臨着更大挑戰,其中資料安全、隐私不洩露是整個雲資料庫面臨的首要安全挑戰。

面對上述挑戰,基于 TEE 的 GaussDB 全密态資料庫的設計思路是:使用者自己持有資料加解密密鑰,資料以密文形态存在于資料庫服務側的整個生命周期過程中,并在資料庫服務端 TEE 内完成查詢運算。

玩轉機密計算從 secGear 開始

如圖所示,全密态資料庫的特點如下:

  1. 資料檔案以密文形式存儲,不存儲密鑰明文資訊。
  2. DB 資料密鑰儲存在用戶端。
  3. 用戶端發起查詢請求時,在服務端 REE 側執行密态 SQL 文法得到相關密文記錄,送入 TEE 中。
  4. 用戶端通過 secGear 安全通道将 DB 資料密鑰加密傳輸到服務端 TEE 中,在 TEE 中解密得到 DB 資料密鑰,用 DB 資料密鑰将密文記錄解密得到明文記錄,執行 SQL 語句,得到查詢結果,再将 DB 資料密鑰加密後的查詢結果發送給用戶端。

其中步驟 3 在資料庫高并發請求場景下,會頻繁觸發 REE-TEE 之間調用以及大量的資料傳輸,導緻性能直線下降,通過 secGear 零切換特性優化,減少調用切換及資料拷貝次數,實作性能倍增。

openLooKeng 基于 TEE 的聯邦 SQL

openLooKeng 聯邦 SQL 是跨資料中心查詢的一種,典型場景如下,有三個資料中心:中心資料中心 A,邊緣資料中心 B 和邊緣資料中心 C。openLooKeng 叢集部署在三個資料中心中,當資料中心 A 收到一次跨域查詢請求時,會下發執行計劃到各資料中心,在邊緣資料中心 B 和 C 的 openLookeng 叢集完成計算後,通過網絡将結果傳遞給資料中心 A 中的 openLookeng 叢集完成聚合計算。

在以上方案中,計算結果在不同資料中心的 openLookeng 叢集之間傳遞,避免了網絡帶寬不足,一定程度上解決了跨域查詢問題。但是計算結果是從原始資料計算得到的,可能帶有敏感資訊,導緻資料出域存在一定安全和合規風險。怎麼保護聚合計算過程中邊緣資料中心的計算結果,在中心資料中心實作 “可用而不可見” 呢?這裡我們一起看看與機密計算結合的解決方案。其基本思想是:資料中心 A 中,openLookeng 叢集将聚合計算邏輯及算子拆分出獨立的子產品,部署到鲲鵬 TEE 環境上中;其他邊緣資料中心的計算結果通過安全通道傳輸到資料中心 A 的 TEE 中;所有資料最終在 TEE 中完成聚合計算,進而保護聚合計算過程中邊緣資料中心的計算結果不會被資料中心 A 上 REE 側特權程式或惡意程式擷取、篡改。

玩轉機密計算從 secGear 開始

如圖所示,具體查詢流程如下:

  1. 使用者在資料中心 A 下發跨域查詢請求,openLooKeng 的 Coordinator 根據查詢 SQL 及資料源分布,拆解下發執行計劃到本地工作節點以及邊緣資料中心的 coordinator,邊緣資料中心的 coordinator 再下發到本地工作節點。
  2. 各工作節點執行計劃,得到本地計算結果。
  3. 邊緣資料中心通過 secGear 安全通道将本地計算結果加密後經網絡傳到資料中心 A 的 REE 側,并中轉到 TEE 中,在 TEE 中解密計算結果。
  4. 資料中心 A 在 TEE 中對資料中心 A、B、C 的計算結果執行聚合計算,得到最終執行結果,并傳回給使用者。

其中步驟 4,在存在大量查詢請求時,會頻繁觸發 REE-TEE 調用,并且有大量資料的拷貝,導緻性能直線下降。通過 secGear 零切換特性優化,減少調用切換及資料拷貝次數,實作性能倍增。

MindSpore 基于 TEE 的縱向聯邦特征保護

縱向聯邦學習是聯邦學習的一個重要分支,當不同的參與方擁有來自相同一批使用者但屬性不同的資料時,可以利用縱向聯邦學習進行協同訓練,方案流程如圖所示。

玩轉機密計算從 secGear 開始
  1. 擁有屬性的參與方(Follower 方)都會持有一個底層網絡,參與方屬性輸入底層網絡得到中間結果,再将中間結果發送給擁有标簽的參與方(Leader 方)。
  2. Leader 方使用各參與方的中間結果和标簽來訓練頂層網絡,再将計算得到的梯度回傳給各參與方來訓練底層網絡。

此方案避免了 Follower 方直接上傳自己的原始資料,保護原始資料不出域,一定程度上保護了隐私安全。然而,攻擊者還是有可能從上傳的中間結果反推出使用者資訊,導緻存在隐私洩露風險。是以我們需要對訓練時出域的中間結果和梯度提供更強的隐私保護方案,來滿足安全合規要求。

借鑒之前三個場景的安全風險及解決方案可以發現,想要達到中間結果出域後的 “可用不可見”,正是機密計算的 “拿手好戲”。基于 TEE 的縱向聯邦特征保護方案如圖所示[4]。

玩轉機密計算從 secGear 開始
  1. Follower 方的中間結果通過 secGear 的安全通道加密後傳輸到 Leader 方,Leader 方非安全世界接收到加密的中間結果後中轉到安全世界,在安全世界通過安全通道接口解密。
  2. 在安全世界中将中間結果輸入到聯邦拆分層計算子產品,完成結果計算。

以上過程中 Follower 方的中間結果明文隻存在于安全世界記憶體中,對 Leader 方來說就是黑盒子,無法通路。

展望

2023 年 openEuler secGear 将持續演進,并釋出支援零切換、安全通道、遠端證明等功能的穩定版本,可用于建構商用的端到端機密計算解決方案。同時,openEuler 也會持續建構通用的中間件或服務,也期待您的參與貢獻,共同推動機密計算應用生态的發展。secGear 将一如既往地持續關注 AMD SEV、Intel TDX、ARM CCA 等技術,為打造安全易用的機密計算統一開發架構而不懈努力。

引用

序号 引用連結
[1] Confidential Computing Consortium, “A Technical Analysis of Confidential Computing,”: https://confidentialcomputing.io/wp-content/uploads/sites/85/2022/01/CCC-A-Technical-Analysis-of-Confidential-Computing-v1.2.pdf.
[2] 木蘭寬松許可證: http://license.coscl.org.cn/
[3] 數字認證: https://mp.weixin.qq.com/s?__biz=MzA4NDUzMzY2Mw==&chksm=87ed5619b09adf0fe8a509dcee9d7413f3dbd1ec6f39d0d247272c1caf6d754d943be18133af&idx=1&mid=2650554089&sn=5725062bb6a1712c224a2f31d4558d32
[4] Mindspore: https://www.mindspore.cn/federated/docs/zh-CN/master/secure_vertical_federated_learning_with_TEE.html