隨著網(wǎng)絡與計算業(yè)務的快速發(fā)展,數(shù)據(jù)成為數(shù)字經(jīng)濟的關鍵生產(chǎn)要素,如何高質量挖掘數(shù)據(jù)價值,構建安全、合規(guī)、可信的數(shù)據(jù)流通,成為推動數(shù)字經(jīng)濟健康發(fā)展的關鍵。此外,根據(jù)我國個人信息保護法、歐盟通用數(shù)據(jù)保護條例 GDPR 等的要求可以看出,數(shù)據(jù)隱私監(jiān)管保護的范圍在擴大,保護力度日益增強。因此,對關鍵數(shù)據(jù)和業(yè)務進行安全保護,不僅是技術挑戰(zhàn),也是滿足安全合規(guī)的必要條件。
當前保護數(shù)據(jù)的通行方案通常作用于靜態(tài)存儲或網(wǎng)絡傳輸狀態(tài)的數(shù)據(jù),難以有效保護正在被使用的數(shù)據(jù),因此,隱私計算技術應運而生。
作為隱私計算的重要分支,機密計算是一種利用硬件可信執(zhí)行環(huán)境 (Trusted Execution Environment, TEE) 保護使用中數(shù)據(jù)的技術 [1]。如下圖所示,在非安全世界(Rich Execution Environment, REE)中,基于硬件隔離出的 TEE 環(huán)境就像是一個黑盒子,可防止外部(包括操作系統(tǒng)、特權用戶、惡意程序等)對 TEE 內(nèi)使用中的應用程序和數(shù)據(jù)進行未經(jīng)授權的訪問或篡改,從而實現(xiàn)數(shù)據(jù)在第三方平臺的 “可用而不可見”,消除數(shù)據(jù)上云的安全顧慮,推動數(shù)據(jù)安全流通。
機密計算痛點
當前業(yè)界主流處理器/芯片均實現(xiàn)了各自的機密計算技術,例如 ARM TrustZone、CCA,Intel SGX、TDX, AMD SEV 等;此外,基于 PCIe TDISP 特性,GPU、DPU 等芯片也在積極構建機密計算環(huán)境,如 Nvidia H100 GPU,Nvidia Bluefield、AMD smartNIC 系列 DPU 等。綜合來看,各種 TEE 技術的核心要素是提供硬件隔離運行環(huán)境,并依托信任根提供度量、內(nèi)存加密等安全能力。
由于各處理器架構的 TEE 設計思路、實現(xiàn)方式不同,導致各家 SDK 接口迥異、開發(fā)流程復雜,造成開發(fā)機密計算應用開發(fā)難度高、可移植性差、生態(tài)隔離。對于應用開發(fā)者來說,其開發(fā)的安全應用與體系結構強綁定,例如基于 SGX SDK 開發(fā)的應用就很難移植到 ARM TrustZone 上,因為安全 OS SDK 提供的接口和 SGX SDK 存在很大差異。
secGear 機密計算統(tǒng)一開發(fā)框架
綜上可知,業(yè)界機密計算技術種類繁多,SDK 也各不相同,接口復雜,開發(fā)困難,不同 TEE 間應用生態(tài)隔離,給機密計算應用開發(fā)者帶來了較高的開發(fā)、維護成本,影響機密計算生態(tài)的發(fā)展。openEuler secGear 機密計算統(tǒng)一開發(fā)框架,致力于兼容業(yè)界主流 TEE,屏蔽 TEE 差異,對開發(fā)者提供統(tǒng)一、簡易的開發(fā)接口,實現(xiàn)不同架構共源碼,使開發(fā)者聚焦業(yè)務,降低機密計算應用開發(fā)維護成本,打通各 TEE 應用生態(tài),助力機密計算生態(tài)建設。
secGear 從邏輯上分為三層,如下圖所示。
Base Layer:機密計算 SDK 統(tǒng)一層,屏蔽 TEE 及 SDK 差異,實現(xiàn)不同架構共源碼。
Middleware Layer:通用組件層,機密計算軟件貨架,無需從頭造輪子,幫助用戶快速構建機密計算解決方案。
Server Layer:機密計算服務層,提供典型場景機密計算解決方案。
secGear 遵循木蘭寬松許可證(MulanPSL-2.0 License)[2], 開發(fā)者可基于 secGear 貢獻開源中間件或解決方案,也可以基于 secGear 構建商用解決方案。目前除了社區(qū)開源的 MindSpore 縱向聯(lián)邦機密計算解決方案,也不乏基于 secGear 的客戶解決方案,如 GaussDB 全密態(tài)數(shù)據(jù)庫,BJCA 密碼模塊、openLookeng 聯(lián)邦 SQL 等。
典型應用場景
本章節(jié)介紹幾個基于 secGear 的實際業(yè)務場景解決方案,便于大家學習理解、借鑒,進而結合自身業(yè)務構建對應的機密計算解決方案。
BJCA 基于 TEE 的密碼模塊
在政策和業(yè)務的雙驅動下,密碼應用保障基礎設施一直在向虛擬化演進,隨著業(yè)務上云,密碼服務支撐也需要構建全新的密碼交付模式,實現(xiàn)密碼、云服務與業(yè)務應用的融合,因此數(shù)字認證(BJCA)推出基于 TEE 的密碼模塊,數(shù)字認證既可以利用鯤鵬 TEE 環(huán)境構建合規(guī)的密碼計算模塊,支撐密碼云服務平臺,同時也可以基于鯤鵬主機構建 “機密計算平臺”,為云計算、隱私計算、邊緣計算等各類場景提供 “高速泛在、彈性部署、靈活調(diào)度” 的密碼服務支撐?;邛H鵬處理器的內(nèi)生式密碼模塊已經(jīng)成為密碼行業(yè)變革型的創(chuàng)新方案,并作為內(nèi)生可信密碼計算新起點[3]。
傳統(tǒng)密碼模塊中算法協(xié)議以及處理的數(shù)據(jù)是隱私數(shù)據(jù),可基于 TEE 保護。如圖所示,基于 secGear 機密計算開發(fā)框架將密碼模塊拆分成兩部分:管理服務、算法協(xié)議。
管理服務:運行在 REE 側,負責對外提供密碼服務,轉發(fā)請求到 TEE 中處理。
算法協(xié)議:運行在 TEE 側,負責用戶數(shù)據(jù)加解密等處理。
由于密碼服務可能存在高并發(fā)、大數(shù)據(jù)請求,此時 REE 與 TEE 存在頻繁交互以及大數(shù)據(jù)拷貝,會導致性能直線下降,針對類似場景可使用 secGear 零切換特性優(yōu)化,減少調(diào)用切換及數(shù)據(jù)拷貝次數(shù),實現(xiàn)性能倍增。
GaussDB 基于 TEE 的全密態(tài)數(shù)據(jù)庫
云數(shù)據(jù)庫儼然已成為數(shù)據(jù)庫業(yè)務未來重要的增長點,絕大多數(shù)的傳統(tǒng)數(shù)據(jù)庫服務廠商正在加速提供更優(yōu)質的云數(shù)據(jù)庫服務。然而云數(shù)據(jù)庫所面臨的風險相較于傳統(tǒng)數(shù)據(jù)庫更復雜多樣,無論是應用程序漏洞、系統(tǒng)配置錯誤,還是惡意管理員都可能對數(shù)據(jù)安全與隱私保護造成巨大風險。
云數(shù)據(jù)庫的部署網(wǎng)絡由 “私有環(huán)境”向“ 開放環(huán)境”轉變,系統(tǒng)運維管理角色被拆分為業(yè)務管理員和運維管理員。業(yè)務管理員擁有業(yè)務管理的權限,屬于企業(yè)業(yè)務方,而運維管理員屬于云服務提供商。數(shù)據(jù)庫運維管理員雖然被定義成系統(tǒng)運維管理,其實際依舊享有對數(shù)據(jù)的完全使用權限,通過運維管理權限或提權來訪問數(shù)據(jù)甚至篡改數(shù)據(jù);再者,由于開放式的環(huán)境和網(wǎng)絡邊界的模糊化,用戶數(shù)據(jù)在整個業(yè)務流程中被更充分的暴露給攻擊者,無論是傳輸、存儲、運維還是運行態(tài),都有可能遭受來自攻擊者的攻擊。因此對于云數(shù)據(jù)庫場景,如何解決第三方可信問題,如何更加可靠的保護數(shù)據(jù)安全相比傳統(tǒng)數(shù)據(jù)庫面臨著更大挑戰(zhàn),其中數(shù)據(jù)安全、隱私不泄露是整個云數(shù)據(jù)庫面臨的首要安全挑戰(zhàn)。
面對上述挑戰(zhàn),基于 TEE 的 GaussDB 全密態(tài)數(shù)據(jù)庫的設計思路是:用戶自己持有數(shù)據(jù)加解密密鑰,數(shù)據(jù)以密文形態(tài)存在于數(shù)據(jù)庫服務側的整個生命周期過程中,并在數(shù)據(jù)庫服務端 TEE 內(nèi)完成查詢運算。
如圖所示,全密態(tài)數(shù)據(jù)庫的特點如下:
數(shù)據(jù)文件以密文形式存儲,不存儲密鑰明文信息。
DB 數(shù)據(jù)密鑰保存在客戶端。
客戶端發(fā)起查詢請求時,在服務端 REE 側執(zhí)行密態(tài) SQL 語法得到相關密文記錄,送入 TEE 中。
客戶端通過 secGear 安全通道將 DB 數(shù)據(jù)密鑰加密傳輸?shù)椒斩?TEE 中,在 TEE 中解密得到 DB 數(shù)據(jù)密鑰,用 DB 數(shù)據(jù)密鑰將密文記錄解密得到明文記錄,執(zhí)行 SQL 語句,得到查詢結果,再將 DB 數(shù)據(jù)密鑰加密后的查詢結果發(fā)送給客戶端。
其中步驟 3 在數(shù)據(jù)庫高并發(fā)請求場景下,會頻繁觸發(fā) REE-TEE 之間調(diào)用以及大量的數(shù)據(jù)傳輸,導致性能直線下降,通過 secGear 零切換特性優(yōu)化,減少調(diào)用切換及數(shù)據(jù)拷貝次數(shù),實現(xiàn)性能倍增。
openLooKeng 基于 TEE 的聯(lián)邦 SQL
openLooKeng 聯(lián)邦 SQL 是跨數(shù)據(jù)中心查詢的一種,典型場景如下,有三個數(shù)據(jù)中心:中心數(shù)據(jù)中心 A,邊緣數(shù)據(jù)中心 B 和邊緣數(shù)據(jù)中心 C。openLooKeng 集群部署在三個數(shù)據(jù)中心中,當數(shù)據(jù)中心 A 收到一次跨域查詢請求時,會下發(fā)執(zhí)行計劃到各數(shù)據(jù)中心,在邊緣數(shù)據(jù)中心 B 和 C 的 openLookeng 集群完成計算后,通過網(wǎng)絡將結果傳遞給數(shù)據(jù)中心 A 中的 openLookeng 集群完成聚合計算。在以上方案中,計算結果在不同數(shù)據(jù)中心的 openLookeng 集群之間傳遞,避免了網(wǎng)絡帶寬不足,一定程度上解決了跨域查詢問題。但是計算結果是從原始數(shù)據(jù)計算得到的,可能帶有敏感信息,導致數(shù)據(jù)出域存在一定安全和合規(guī)風險。怎么保護聚合計算過程中邊緣數(shù)據(jù)中心的計算結果,在中心數(shù)據(jù)中心實現(xiàn) “可用而不可見” 呢?這里我們一起看看與機密計算結合的解決方案。其基本思想是:數(shù)據(jù)中心 A 中,openLookeng 集群將聚合計算邏輯及算子拆分出獨立的模塊,部署到鯤鵬 TEE 環(huán)境上中;其他邊緣數(shù)據(jù)中心的計算結果通過安全通道傳輸?shù)綌?shù)據(jù)中心 A 的 TEE 中;所有數(shù)據(jù)最終在 TEE 中完成聚合計算,從而保護聚合計算過程中邊緣數(shù)據(jù)中心的計算結果不會被數(shù)據(jù)中心 A 上 REE 側特權程序或惡意程序獲取、篡改。
如圖所示,具體查詢流程如下:
用戶在數(shù)據(jù)中心 A 下發(fā)跨域查詢請求,openLooKeng 的 Coordinator 根據(jù)查詢 SQL 及數(shù)據(jù)源分布,拆解下發(fā)執(zhí)行計劃到本地工作節(jié)點以及邊緣數(shù)據(jù)中心的 coordinator,邊緣數(shù)據(jù)中心的 coordinator 再下發(fā)到本地工作節(jié)點。
各工作節(jié)點執(zhí)行計劃,得到本地計算結果。
邊緣數(shù)據(jù)中心通過 secGear 安全通道將本地計算結果加密后經(jīng)網(wǎng)絡傳到數(shù)據(jù)中心 A 的 REE 側,并中轉到 TEE 中,在 TEE 中解密計算結果。
數(shù)據(jù)中心 A 在 TEE 中對數(shù)據(jù)中心 A、B、C 的計算結果執(zhí)行聚合計算,得到最終執(zhí)行結果,并返回給用戶。
其中步驟 4,在存在大量查詢請求時,會頻繁觸發(fā) REE-TEE 調(diào)用,并且有大量數(shù)據(jù)的拷貝,導致性能直線下降。通過 secGear 零切換特性優(yōu)化,減少調(diào)用切換及數(shù)據(jù)拷貝次數(shù),實現(xiàn)性能倍增。
MindSpore 基于 TEE 的縱向聯(lián)邦特征保護
縱向聯(lián)邦學習是聯(lián)邦學習的一個重要分支,當不同的參與方擁有來自相同一批用戶但屬性不同的數(shù)據(jù)時,可以利用縱向聯(lián)邦學習進行協(xié)同訓練,方案流程如圖所示。
擁有屬性的參與方(Follower 方)都會持有一個底層網(wǎng)絡,參與方屬性輸入底層網(wǎng)絡得到中間結果,再將中間結果發(fā)送給擁有標簽的參與方(Leader 方)。
Leader 方使用各參與方的中間結果和標簽來訓練頂層網(wǎng)絡,再將計算得到的梯度回傳給各參與方來訓練底層網(wǎng)絡。
此方案避免了 Follower 方直接上傳自己的原始數(shù)據(jù),保護原始數(shù)據(jù)不出域,一定程度上保護了隱私安全。然而,攻擊者還是有可能從上傳的中間結果反推出用戶信息,導致存在隱私泄露風險。因此我們需要對訓練時出域的中間結果和梯度提供更強的隱私保護方案,來滿足安全合規(guī)要求。
借鑒之前三個場景的安全風險及解決方案可以發(fā)現(xiàn),想要達到中間結果出域后的 “可用不可見”,正是機密計算的 “拿手好戲”?;?TEE 的縱向聯(lián)邦特征保護方案如圖所示[4]。
Follower 方的中間結果通過 secGear 的安全通道加密后傳輸?shù)?Leader 方,Leader 方非安全世界接收到加密的中間結果后中轉到安全世界,在安全世界通過安全通道接口解密。
在安全世界中將中間結果輸入到聯(lián)邦拆分層計算模塊,完成結果計算。
以上過程中 Follower 方的中間結果明文只存在于安全世界內(nèi)存中,對 Leader 方來說就是黑盒子,無法訪問。
展望
2023 年 openEuler secGear 將持續(xù)演進,并發(fā)布支持零切換、安全通道、遠程證明等功能的穩(wěn)定版本,可用于構建商用的端到端機密計算解決方案。同時,openEuler 也會持續(xù)構建通用的中間件或服務,也期待您的參與貢獻,共同推動機密計算應用生態(tài)的發(fā)展。secGear 將一如既往地持續(xù)關注 AMD SEV、Intel TDX、ARM CCA 等技術,為打造安全易用的機密計算統(tǒng)一開發(fā)框架而不懈努力。
審核編輯 :李倩
-
數(shù)據(jù)
+關注
關注
8文章
7030瀏覽量
89034 -
網(wǎng)絡傳輸
+關注
關注
0文章
138瀏覽量
17401 -
數(shù)字經(jīng)濟
+關注
關注
2文章
1055瀏覽量
18287
原文標題:玩轉機密計算從 secGear 開始
文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論