隱私計(jì)算在大數(shù)據(jù)AI領(lǐng)域的應(yīng)用實(shí)踐
01 隱私計(jì)算的背景和現(xiàn)狀
1. 隱私計(jì)算的背景
隱私計(jì)算目前已經(jīng)成為剛需。一方面,個(gè)人用戶對個(gè)人隱私和信息安全的需求變強(qiáng)了。另一方面,有大量隱私安全相關(guān)的法律法規(guī)發(fā)布,例如歐盟的GDPR,美國的CCPA和國內(nèi)的個(gè)人信息保護(hù)法等,法規(guī)政策也逐漸從寬松走向嚴(yán)格,主要體現(xiàn)在權(quán)力權(quán)益、執(zhí)行范圍和執(zhí)行力度等方面。以GDPR為例,自2018年生效后,已出現(xiàn)了1000多個(gè)判例,罰款總額超過110億,單筆最高罰款超過50億(Amazon)。
?
2. 隱私計(jì)算的現(xiàn)狀
在這樣的大背景下,數(shù)據(jù)安全從可選項(xiàng)變成了必選項(xiàng)。這導(dǎo)致大量企業(yè)、投資、初創(chuàng)公司和從業(yè)者投入到安全和隱私技術(shù)的生態(tài)中,學(xué)術(shù)圈更是針對工業(yè)界的需求進(jìn)行很多前瞻性的探索。這些因素促使近幾年安全和隱私技術(shù)和生態(tài)蓬勃發(fā)展,其中的差分隱私、可信執(zhí)行環(huán)境、同態(tài)加密、安全多方計(jì)算和聯(lián)邦學(xué)習(xí)等技術(shù)都得到了長足發(fā)展。Gartner 對這一領(lǐng)域的發(fā)展也秉持著樂觀的態(tài)度,認(rèn)為其在未來將會(huì)是一個(gè)百億甚至千億的市場。
?
02 大數(shù)據(jù)AI+隱私計(jì)算
1. 大數(shù)據(jù)AI背景
回到大數(shù)據(jù)AI這個(gè)背景,從行業(yè)的宏觀角度來看,大數(shù)據(jù)框架和技術(shù)已經(jīng)大規(guī)模商用和普及。我們可能每時(shí)每刻都在使用大數(shù)據(jù)的技術(shù),但我們卻感受不到程序和模型訓(xùn)練是跑在一個(gè)上千甚至上萬節(jié)點(diǎn)的服務(wù)器集群和大規(guī)模數(shù)據(jù)上。近年來,該領(lǐng)域的發(fā)展方向有兩個(gè)新趨勢:一是易用性的提高,二是應(yīng)用方向的細(xì)化。前者大大降低的大數(shù)據(jù)技術(shù)的使用門檻,而后者不斷為新出現(xiàn)的需求和問題提供新的解決方案,比如數(shù)據(jù)湖等。
從與AI框架的結(jié)合來看,現(xiàn)在大數(shù)據(jù)和AI生態(tài)是緊密結(jié)合的。因?yàn)閷τ贏I模型來說,數(shù)據(jù)量越大、質(zhì)量越高,模型的訓(xùn)練效果就越好,所以大數(shù)據(jù)和AI這兩個(gè)領(lǐng)域會(huì)天然地結(jié)合在一起。
?
然而即使如此,將大數(shù)據(jù)框架和AI框架進(jìn)行融合也并非易事。在應(yīng)用的開發(fā)、數(shù)據(jù)的獲取、清洗、分析和部署的過程中,會(huì)涉及很多大數(shù)據(jù)和AI框架。如果需要保障在關(guān)鍵流程中的數(shù)據(jù)安全和隱私,就會(huì)涉及到很多環(huán)節(jié)和框架,包括不同的安全技術(shù)、加密技術(shù)和密鑰管理技術(shù)等,使得改造和遷移成本大大提高。
?
2. 大數(shù)據(jù)AI+隱私計(jì)算
兩年前,在和行業(yè)內(nèi)大數(shù)據(jù)及AI應(yīng)用相關(guān)的客戶溝通的過程中,我們收集到了一些用戶痛點(diǎn)。除了常規(guī)的性能問題之外,大多數(shù)客戶關(guān)心的第一個(gè)問題是兼容性問題。比如,一些客戶已經(jīng)有了上千甚至上萬節(jié)點(diǎn)的集群,如果需要將其中的部分模塊或者環(huán)節(jié)進(jìn)行安全處理,應(yīng)用隱私計(jì)算的技術(shù)從而實(shí)現(xiàn)隱私保護(hù)的功能,則可能需要對現(xiàn)有應(yīng)用進(jìn)行更改,甚至引入一些全新的框架或基礎(chǔ)設(shè)施,這些沖擊是客戶需要考慮的首要問題。其次,客戶會(huì)考慮數(shù)據(jù)規(guī)模對安全技術(shù)的影響,希望引入的新框架和技術(shù)能夠支持大規(guī)模數(shù)據(jù)的計(jì)算且具有較高的計(jì)算效率。最后客戶才會(huì)考慮聯(lián)邦學(xué)習(xí)技術(shù)是否能解決數(shù)據(jù)孤島的問題。
基于調(diào)研得出的客戶需求,我們推出了BigDL PPML方案,其首要目標(biāo)是讓常規(guī)的、標(biāo)準(zhǔn)的大數(shù)據(jù)及AI方案能在安全環(huán)境中運(yùn)行,確保端到端都是安全的。為此,計(jì)算過程需要被SGX(硬件級的TEE)保護(hù)。同時(shí),需要保證存儲(chǔ)和網(wǎng)絡(luò)被加密,整個(gè)鏈路需要進(jìn)行遠(yuǎn)程證明(也被稱為遠(yuǎn)程簽鑒),確保計(jì)算的機(jī)密性和完整性。
?
接下來我們以Apache Spark這一常用的大數(shù)據(jù)框架為例詳細(xì)闡述該方案的必要性。Apache Spark是大數(shù)據(jù)AI領(lǐng)域比較常用的分布式計(jì)算框架,它已經(jīng)有很多與安全相關(guān)的功能了,例如,網(wǎng)絡(luò)方面可以進(jìn)行加密和認(rèn)證,通信和RPC都被TLS和AES保護(hù);存儲(chǔ)方面主要涉及本地shuffle存儲(chǔ),也采用AES保護(hù);但計(jì)算方面存在較大的問題,因?yàn)榧词故亲钚掳姹镜腟park也只能進(jìn)行明文計(jì)算。萬一計(jì)算環(huán)境或者節(jié)點(diǎn)被攻破,其就能獲取到大量敏感數(shù)據(jù)。
?
SGX技術(shù)是以Intel CPU為底層設(shè)施的軟硬件結(jié)合的可信計(jì)算環(huán)境技術(shù),它具有:
- 硬件級的可信執(zhí)行環(huán)境
- 相對小的攻擊面:哪怕部分系統(tǒng)已經(jīng)被攻破,只要CPU是安全的就能夠確保整個(gè)程序的安全性
- 性能影響小
- 足夠大的飛地(最大1TB)?
回到之前提到的Apache Spark這個(gè)應(yīng)用場景:
左邊是計(jì)算環(huán)境沒有受到保護(hù)的情況,哪怕使用了加密存儲(chǔ),只要在明文計(jì)算階段遭到攻擊,就會(huì)有數(shù)據(jù)泄露的風(fēng)險(xiǎn);右邊則是Spark社區(qū)的一些嘗試,通過把SparkSQL相關(guān)的一些關(guān)鍵步驟提取出來,用SGX SDK重寫這部分邏輯,既能夠?qū)崿F(xiàn)性能的最大化,又能實(shí)現(xiàn)攻擊面最小化。但這一方法缺點(diǎn)也很明顯,即開發(fā)代價(jià)太大,成本太高。重新SparkSQL核心邏輯,需要對Spark有清晰明確的認(rèn)識(shí);同時(shí),代碼無法復(fù)用到其他項(xiàng)目。
?
為了解決以上提到的缺點(diǎn),我們使用了LibOS方案,簡而言之就是通過LibOS這一中間層,降低開發(fā)和遷移的難度,將系統(tǒng)API的調(diào)用轉(zhuǎn)換成SGX SDK能夠識(shí)別的形式,從而實(shí)現(xiàn)一些常規(guī)應(yīng)用的無縫遷移。常見的LibOS解決方案有螞蟻集團(tuán)的Occlum、英特爾參與的Gramine以及帝國理工主導(dǎo)的sgx-lkl方案等。以上LibOS都有各自的特性和優(yōu)勢,它們通過不同的方式解決了SGX的易用性和易遷移性的問題。
?
有了LibOS就不再需要重寫Spark中的核心邏輯,而是能夠通過LibOS將整個(gè)Spark放入SGX中,同時(shí)無需修改Spark和現(xiàn)有應(yīng)用。
?
在Spark的分布式計(jì)算中,可以將分布式中的各個(gè)模塊分別用LibOS和SGX保護(hù),存儲(chǔ)端可以配置密鑰管理和加密存儲(chǔ),executor獲取密文數(shù)據(jù)后在SGX中解密并計(jì)算。整個(gè)流程對開發(fā)人員較為無感,對現(xiàn)有應(yīng)用的沖擊較少。
不過,與單機(jī)應(yīng)用相比,分布式應(yīng)用中的安全問題也更為復(fù)雜。攻擊者可能將部分運(yùn)行節(jié)點(diǎn)攻破,或者與資源管理節(jié)點(diǎn)形成共謀,從而用惡意的運(yùn)行環(huán)境替換SGX環(huán)境。這樣就能非法獲取密鑰和加密數(shù)據(jù),并最終造成隱私數(shù)據(jù)泄露。
為了解決這問題,需要應(yīng)用遠(yuǎn)程證明技術(shù)。簡單來說,就是跑在SGX中的應(yīng)用可以提供證明或證書,且該證明或證書是不可篡改的。證書能夠證實(shí)該應(yīng)用是否在SGX中運(yùn)行、應(yīng)用是否被篡改,平臺(tái)是否符合安全標(biāo)準(zhǔn)等。
為分布式應(yīng)用加入遠(yuǎn)程證明存在兩種實(shí)現(xiàn)方式。左邊是一套比較完備但改動(dòng)較大的方案,在driver端和executor端互相做遠(yuǎn)程證明,需要對Spark做一定程度的修改。另外一種方案則通過第三方的遠(yuǎn)程證明服務(wù)器實(shí)現(xiàn)集中式的遠(yuǎn)程證明,并使用不可更改的證書阻斷被攻擊者控制的模塊獲取數(shù)據(jù)。第二種方案不需要修改應(yīng)用程序,只需對小部分啟動(dòng)腳本進(jìn)行修改即可。
雖然LibOS可以讓Spark運(yùn)行在SGX中,但進(jìn)行Spark的LibOS和SGX適配依舊需要花費(fèi)一定人力和時(shí)間成本。為此我們推出了PPML的一站式解決方案,其中很多步驟都能實(shí)現(xiàn)自動(dòng)化處理,并且實(shí)現(xiàn)無縫遷移,極大地減少遷移成本。
從工作流的角度來說,此方案還有另外一個(gè)優(yōu)點(diǎn),即數(shù)據(jù)科學(xué)家感知不到底層的變化,只有集群管理員需要參與SGX的部署和準(zhǔn)備工作,數(shù)據(jù)科學(xué)家可以正常地進(jìn)行建模和查詢工作,完全感知不到底層的環(huán)境已經(jīng)發(fā)生了變化。這樣就可以很好地解決現(xiàn)有應(yīng)用的兼容性和遷移問題,也不會(huì)阻礙數(shù)據(jù)科學(xué)家和開發(fā)人員的日常工作。
以下是整個(gè)PPML方案的全貌。為了滿足客戶的不同需求,在最近這兩年內(nèi)PPML支持的功能也在不斷拓展。例如,中間層Library and Framework中,Spark、Flink和Ray等常用的計(jì)算框架均在支持范圍內(nèi);同時(shí)PPML也支持機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、聯(lián)邦學(xué)習(xí)功能,并配有加密存儲(chǔ)和同態(tài)加密的支持,保證端到端的全鏈路安全性。
03 應(yīng)用實(shí)踐
下面是一些客戶的應(yīng)用實(shí)踐案例,其中比較有名的是去年的天池大賽。在去年的一個(gè)分賽中,參賽方希望訓(xùn)練和模型推理過程能完全被SGX保護(hù),通過PPML提供的Flink功能,結(jié)合螞蟻集團(tuán)的LibOS項(xiàng)目Occlum,實(shí)現(xiàn)訓(xùn)練和模型推理在應(yīng)用層面無感。最終整個(gè)比賽有4000多支隊(duì)伍參加,應(yīng)用了上百臺(tái)服務(wù)器,證明了PPML能夠支持大規(guī)模商用,并且整體而言,運(yùn)營方并沒有感知到很大的變化。
在同年9-10月份,韓國電信希望搭建一個(gè)端到端安全的、基于BigDL和Flink的實(shí)時(shí)模型推理環(huán)境,他們對性能的要求更加苛刻。經(jīng)過天池的歷練,BigDL基于Flink和SGX的實(shí)時(shí)模型推理的方案更加成熟,端到端的性能損失小于5%,吞吐量也達(dá)到了韓國電信的基本需求。
我們也進(jìn)行了Spark的性能測試。結(jié)論而言,即使測試數(shù)據(jù)達(dá)到上百GB,PPML方案運(yùn)行Spark也沒有出現(xiàn)拓展性和性能問題。根據(jù)客戶的需求,我們專門選了一個(gè)對SGX不友好的IO密集型應(yīng)用TPC-DS。TPC-DS是一個(gè)常用的SQL benchmark標(biāo)準(zhǔn),它對IO和計(jì)算的要求比較高,在數(shù)據(jù)量較大時(shí),會(huì)出現(xiàn)大規(guī)模的磁盤、內(nèi)存和網(wǎng)絡(luò)IO。而作為硬件級的TEE,數(shù)據(jù)進(jìn)出SGX都需要經(jīng)過解密和加密,因此讀取和寫出數(shù)據(jù)的開銷會(huì)比非SGX大。經(jīng)過完整的TPC-DS測試,整個(gè)端到端的損失在2倍以內(nèi),達(dá)到了客戶的預(yù)期。通過TPC-DS的benchmark,我們證明了,哪怕是在這種最壞的情況下,我們都能確保端到端的損失降到可接受的范圍內(nèi)(1.8)。
實(shí)現(xiàn)了大數(shù)據(jù)應(yīng)用的無縫遷移之后,我們也和部分客戶進(jìn)行了聯(lián)邦學(xué)習(xí)的嘗試。因?yàn)镾GX提供了安全的環(huán)境,恰好可以解決聯(lián)邦學(xué)習(xí)過程中最關(guān)鍵的服務(wù)器和本地?cái)?shù)據(jù)的安全問題。BigDL提供的聯(lián)邦學(xué)習(xí)方案和一般方案有一個(gè)很大的差異,即整個(gè)方案本質(zhì)上是一個(gè)面向大規(guī)模數(shù)據(jù)的聯(lián)邦學(xué)習(xí)方案。其中,每個(gè)worker的工作負(fù)載和針對的數(shù)據(jù)規(guī)模較大,每一個(gè)worker相當(dāng)于一個(gè)小集群。我們和部分客戶驗(yàn)證了該方案的可行性和有效性。
04 總結(jié)和展望
如前文所說,在和客戶兩年多的溝通和合作中,我們挖掘到了隱私計(jì)算和大數(shù)據(jù)AI相關(guān)的若干痛點(diǎn)。這些痛點(diǎn)均可以通過SGX等安全技術(shù)解決。其中,LibOS能夠解決兼容性問題,SGX能夠解決安全環(huán)境和性能問題;Spark或Flink的支持能夠解決大數(shù)據(jù)及遷移的問題;聯(lián)邦學(xué)習(xí)能夠解決數(shù)據(jù)孤島問題。BigDL PPML則是綜合了上述服務(wù)的一站式隱私計(jì)算方案。
SGX和TEE的生態(tài)目前正在快速發(fā)展。在可預(yù)見的未來,TEE在易用性、安全性和性能等方面會(huì)有很大的提高,例如英特爾下一代的TDX能直接提供OS的支持,可以從根本上解決應(yīng)用的兼容性問題;開源社區(qū)也在完善機(jī)密容器的支持,確保container的安全性,大大降低應(yīng)用遷移的成本。從安全性角度來說,也會(huì)出現(xiàn)如微內(nèi)核之類工作,進(jìn)一步強(qiáng)化TEE生態(tài)的安全性。從拓展性的角度來看,英特爾和社區(qū)也在推進(jìn)對加速器和IO設(shè)備的支持,將其納入可信域內(nèi),降低數(shù)據(jù)流轉(zhuǎn)的性能開銷。