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