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