符芳誠 侯忱 程勇 陶陽宇
(1.北京大學(xué)信息科學(xué)技術(shù)學(xué)院高可信軟件技術(shù)重點實驗室,北京 100871;2.騰訊數(shù)據(jù)平臺部數(shù)據(jù)中心,北京 100083)
隨著數(shù)字經(jīng)濟(jì)的深入發(fā)展,大數(shù)據(jù)已經(jīng)成為一種新的生產(chǎn)要素和戰(zhàn)略資源。大數(shù)據(jù)產(chǎn)業(yè)的發(fā)展和應(yīng)用普及能夠顯著提高生產(chǎn)效率和社會智能化程度?;诖髷?shù)據(jù)的人工智能(Artificial Intelligence,AI)技術(shù)已經(jīng)開始規(guī)模商用,逐漸進(jìn)入生產(chǎn)、生活的方方面面,如人臉識別、語音識別、文本翻譯、商品推薦等。一方面,各行各業(yè)都受益于大數(shù)據(jù)和AI產(chǎn)業(yè)帶來的便捷和智能化;另一方面,潛在的數(shù)據(jù)濫用和用戶隱私泄露風(fēng)險也是不可忽視的問題。在實際應(yīng)用中,由于隱私保護(hù)、數(shù)據(jù)安全、商業(yè)競爭等原因,不同機(jī)構(gòu)擁有的數(shù)據(jù)很難整合到一起,導(dǎo)致在不同機(jī)構(gòu)之間形成數(shù)據(jù)孤島,阻礙大數(shù)據(jù)和AI的應(yīng)用發(fā)展。協(xié)同多個機(jī)構(gòu)的數(shù)據(jù)進(jìn)行聯(lián)合計算、建模與分析,在保護(hù)每個機(jī)構(gòu)用戶隱私與數(shù)據(jù)安全的同時,增強(qiáng)機(jī)器學(xué)習(xí)模型表達(dá)能力、釋放更多的數(shù)據(jù)協(xié)同價值,成為學(xué)術(shù)界與產(chǎn)業(yè)界廣泛研究的課題。為解決跨機(jī)構(gòu)數(shù)據(jù)協(xié)同應(yīng)用與隱私保護(hù)矛盾,隱私計算(Privacy Preserving Computing)應(yīng)運而生[1-4],受到業(yè)界廣泛關(guān)注。
隱私計算是一種由兩個或多個參與方進(jìn)行聯(lián)合計算的技術(shù)和系統(tǒng),在不泄露各自數(shù)據(jù)的前提下,參與方通過協(xié)作對他們的數(shù)據(jù)進(jìn)行聯(lián)合機(jī)器學(xué)習(xí)或聯(lián)合分析。在隱私計算框架下,參與方的數(shù)據(jù)明文不出本地,在保護(hù)數(shù)據(jù)安全的同時實現(xiàn)多方數(shù)據(jù)協(xié)同應(yīng)用和聯(lián)合計算,可以破解數(shù)據(jù)融合應(yīng)用與隱私保護(hù)難題。近年來,在數(shù)據(jù)協(xié)同和隱私保護(hù)的雙重驅(qū)動下,隱私計算受到廣泛關(guān)注,成為當(dāng)前政府、產(chǎn)業(yè)、學(xué)術(shù)研究等各界關(guān)注的熱點。伴隨著應(yīng)用密碼學(xué)、硬件技術(shù)的發(fā)展以及加速商業(yè)化,隱私計算技術(shù)的路徑也處于高速的演進(jìn)和產(chǎn)品化過程中,其中聯(lián)邦學(xué)習(xí)、多方安全計算和可信計算是當(dāng)前的主流技術(shù)路徑,也是當(dāng)下產(chǎn)品化的主要方向[5-7,10]。隨著隱私計算技術(shù)和產(chǎn)品的發(fā)展,且在數(shù)據(jù)協(xié)同應(yīng)用的驅(qū)動下,有多個機(jī)構(gòu)推出了隱私計算平臺型產(chǎn)品。本文主要介紹隱私計算的關(guān)鍵技術(shù)與創(chuàng)新,并對這些技術(shù)與創(chuàng)新在Angel PowerFL通用隱私計算平臺中的應(yīng)用進(jìn)行分析和研究。
1.1.1 PSI是隱私計算關(guān)鍵技術(shù)之一
隱私集合求交(Private Set Intersection,PSI)[15-17]是多方安全計算領(lǐng)域中的經(jīng)典問題,它要求參與方在互相不公開本地集合的前提下,共同計算得出多個參與方的集合的交集,且不能向任何參與方泄露交集以外的信息。PSI是隱私計算關(guān)鍵技術(shù)之一,也是縱向聯(lián)邦學(xué)習(xí)的關(guān)鍵支撐技術(shù)。在縱向聯(lián)邦學(xué)習(xí)場景中,PSI也被稱為樣本對齊(Sample Alignment)或者數(shù)據(jù)庫撞庫,即各參與方需要首先求出各自的訓(xùn)練樣本ID集合之間的交集,基于計算得到的訓(xùn)練樣本ID交集進(jìn)行后續(xù)的縱向聯(lián)邦模型訓(xùn)練。考慮到PSI在縱向聯(lián)邦學(xué)習(xí)中的重要作用,本文重點介紹多方PSI、工程優(yōu)化、安全性提升、軟硬件結(jié)合這4個方向上的創(chuàng)新。
1.1.2 多方PSI
在多方場景中,即隱私計算參與方大于等于3的場景(見圖1),PSI算法的計算復(fù)雜度會顯著變高。為避免過大的時間消耗,通常采用兩兩求交集的替代方法來實現(xiàn)“等效的多方PSI”,包括基于Diffie-Hellman密鑰交換的DH算法[11,14]、基于盲簽名的Blind-RSA算法[11,13]和基于不經(jīng)意傳輸(Oblivious Transfer,OT)的算法[11]。然而,盡管這一方法可以降低計算的復(fù)雜度,卻會帶來一個非常嚴(yán)重的安全隱患,即會泄露那些屬于兩方交集但不屬于多方交集的數(shù)據(jù)。針對此問題,基于Freedman協(xié)議提出了一種嚴(yán)格的多方安全PSI協(xié)議[17],可以保證除了多方樣本ID交集信息之外,任何其他信息均不會泄露。進(jìn)一步通過工程實現(xiàn)以上的優(yōu)化,將多方PSI的計算復(fù)雜度從O(n3)降低為O(n),實現(xiàn)了可以在實際應(yīng)用中支撐海量數(shù)據(jù)計算的多方PSI協(xié)議。
圖1 多方PSI(除三方集合的交集,其他任何信息都不能暴露)
多方PSI協(xié)議的核心思想是將樣本ID集合編碼成特殊的數(shù)據(jù)結(jié)構(gòu),即不經(jīng)意多項式,其中每一個樣本ID均為不經(jīng)意多項式的根。利用半同態(tài)加密算法對多項式參數(shù)進(jìn)行保護(hù),使多個參與方可以在密文空間下進(jìn)行多項式求值,同時又無法讀取多項式參數(shù)的明文。然而,大整數(shù)多項式系數(shù)展開和求值的計算復(fù)雜度均為O(n3),為了解決這一計算瓶頸,提出了一種基于哈希分桶的優(yōu)化方法。具體而言,利用哈希分桶技術(shù)將ID集合均勻映射到若干ID分桶中,這里要求各參與方使用相同的哈希函數(shù),以便確保相同的樣本ID被映射到相同的分桶中。這樣一來,只需要進(jìn)行“桶內(nèi)計算、桶間合并”即可得到完整的多方ID集合的交集。將單個桶內(nèi)樣本數(shù)量視為一個常數(shù),算法的計算復(fù)雜度可以優(yōu)化到O(n)。實際測試結(jié)果顯示,在通過哈希分桶技術(shù)優(yōu)化后,三方PSI任務(wù)可以得到9倍以上的效率提升。
1.1.3 非對稱隱私集合求交
在某些實際應(yīng)用場景里,一個參與方A的樣本量遠(yuǎn)遠(yuǎn)小于另一參與方B,這里稱擁有樣本量少的A為弱勢方,稱擁有樣本量多的B為強(qiáng)勢方(見圖2)。此時,PSI的計算結(jié)果可能非常接近弱勢方的真實樣本ID集合,存在一定的數(shù)據(jù)泄露風(fēng)險。例如,廣告平臺和商家進(jìn)行聯(lián)邦建模,廣告平臺擁有海量用戶,商家客戶數(shù)量少且具有高度隱私性(如購買某種特定類別的藥物的客戶),若商家將客戶ID信息暴露給廣告平臺方,可能會使客戶隱私受到侵害。業(yè)界將這種場景定義為非對稱聯(lián)邦學(xué)習(xí)場景[18]。
圖2 非對稱PSI場景
針對上述非對稱聯(lián)邦學(xué)習(xí)場景,在PSI流程中,提出從強(qiáng)勢方的ID集合中隨機(jī)抽取部分密文ID數(shù)據(jù)混入最終交集中,可以得到如下效果。
(1)最終計算得到的PSI交集由真實交集和混淆集合組成,其中混淆集合全部來自強(qiáng)勢方的樣本ID。
(2)弱勢方可以獲得PSI交集,同時可以通過對比本地ID集合和ID交集得到真實的樣本ID交集,但是無法獲取混淆交集部分的樣本ID(由密文保護(hù)),保護(hù)了強(qiáng)勢方的數(shù)據(jù)安全。
(3)強(qiáng)勢方可以獲得PSI交集,但是無法判斷哪些樣本屬于真實ID交集。
(4)在實際場景中,當(dāng)弱勢方和強(qiáng)勢方數(shù)據(jù)量之比在1:100時,只需要取真實交集與強(qiáng)勢方集合數(shù)據(jù)量之比為1:10,即可將弱勢方數(shù)據(jù)的安全性提升10倍。
1.1.4 利用可信執(zhí)行環(huán)境實現(xiàn)PSI
可信執(zhí)行環(huán)境(Trusted Execution Environment,TEE)是一種硬件技術(shù),借助硬件構(gòu)建安全的“飛地”(Enclave),用于存放敏感數(shù)據(jù)與代碼,并保證它們的機(jī)密性與完整性。目前,在隱私計算領(lǐng)域最常用的TEE是因特爾公司推出的SGX[25]。通過采用TEE作為可信計算模塊,結(jié)合聯(lián)合計算軟件框架和TEE硬件模塊,可以為隱私計算應(yīng)用場景提供定制化解決方案,例如基于TEE的PSI方案(見圖3)。
圖3 基于TEE/SGX的PSI解決方案
基于TEE的PSI方案已經(jīng)在很多場景落地應(yīng)用,可以支持任意數(shù)量的參與方,且只要求其中至少一方部署TEE服務(wù)即可。在計算開始階段,各參與方將本地樣本ID集合排序并加密,均勻分配并上傳到部署TEE服務(wù)的若干個參與方,由TEE可信計算模塊解密并完成樣本ID集合求交。與傳統(tǒng)純軟件實現(xiàn)的PSI方案相比,基于TEE的PSI方案部署靈活,可適用于多種場景。由于使用硬件代替多方安全算法來保護(hù)數(shù)據(jù),計算時間得到很大優(yōu)化,例如兩方PSI場景的十億級別數(shù)據(jù)計算速度可提升3倍以上,三方PSI場景的十億級別數(shù)據(jù)計算速度可提升10倍以上。
谷歌于2016年率先提出了聯(lián)邦學(xué)習(xí)的概念[6],主要用來解決如何在數(shù)據(jù)不出域的情況下,聯(lián)合多個終端(如智能手機(jī))中的數(shù)據(jù)進(jìn)行模型訓(xùn)練的問題,并應(yīng)用在輸入法預(yù)測改進(jìn)等場景。國內(nèi)的學(xué)者進(jìn)一步拓展了聯(lián)邦學(xué)習(xí)的概念[5],提出了橫向(Horizontal)和 縱向(Vertical)兩種聯(lián)邦學(xué)習(xí)框架(見圖4)。其中,谷歌提出的聯(lián)邦學(xué)習(xí)范式可以看作是橫向聯(lián)邦學(xué)習(xí)。隨著技術(shù)的不斷發(fā)展成熟,以及人工智能落地過程中數(shù)據(jù)痛點愈發(fā)凸顯,聯(lián)邦學(xué)習(xí)得到了更多的關(guān)注,學(xué)術(shù)界和工業(yè)界開始聯(lián)合起來系統(tǒng)化地研究整個技術(shù)體系,越來越多的企業(yè)開始嘗試引入聯(lián)邦學(xué)習(xí)并將其作為打通多方數(shù)據(jù)的一種解決方案。實踐已經(jīng)證明,縱向聯(lián)邦學(xué)習(xí)可以顯著提升機(jī)器學(xué)習(xí)模型的效果和表達(dá)能力。
圖4 聯(lián)邦學(xué)習(xí)兩種形態(tài):橫向、縱向聯(lián)邦學(xué)習(xí)
在實際應(yīng)用場景中,還有一種聯(lián)邦學(xué)習(xí)形態(tài),稱之為斜向聯(lián)邦學(xué)習(xí)(Diagonal Federated Learning,DFL)。在斜向聯(lián)邦學(xué)習(xí)場景里,參與方A和參與方B各擁有一部分特征,且兩個參與方分別擁有一部分由兩方PSI獲得的交集中的樣本的標(biāo)簽信息,具體參見圖5。
圖5 聯(lián)邦學(xué)習(xí)第三種形態(tài):斜向聯(lián)邦學(xué)習(xí)
兩方斜向聯(lián)邦學(xué)習(xí)適用的場景是聯(lián)邦學(xué)習(xí)的兩個參與方A和B的訓(xùn)練數(shù)據(jù)有重疊的數(shù)據(jù)樣本,兩方擁有的數(shù)據(jù)特征卻不同,兩方數(shù)據(jù)特征空間形成互補(bǔ),類似于縱向聯(lián)邦學(xué)習(xí)場景。與縱向聯(lián)邦學(xué)習(xí)不同的是,在兩方斜向聯(lián)邦學(xué)習(xí)里,參與方A和參與方B各擁有一部分PSI交集里的樣本對應(yīng)的標(biāo)簽信息,甚至參與方A和參與方B可能同時擁有一部分樣本的標(biāo)簽信息。因此,從標(biāo)簽信息維度看,斜向聯(lián)邦學(xué)習(xí)又類似于橫向聯(lián)邦學(xué)習(xí)。
斜向聯(lián)邦學(xué)習(xí)的應(yīng)用場景常見于金融領(lǐng)域。不同的金融機(jī)構(gòu)(如銀行與支付平臺)擁有的數(shù)據(jù)特征不一樣,且可能各自擁有一部分樣本的標(biāo)簽信息。斜向聯(lián)邦學(xué)習(xí)的算法協(xié)議可以從縱向聯(lián)邦學(xué)習(xí)演化發(fā)展得到。例如,在兩方縱向聯(lián)邦邏輯回歸(Logistic Regression,LR)協(xié)議里,擁有標(biāo)簽信息的一方稱為Guest,另外一方稱為Host。在兩方斜向聯(lián)邦LR協(xié)議里,可以請兩個參與方A和B分別輪流擔(dān)任Guest和Host的角色,這樣就可以分別使用參與方A和B擁有的標(biāo)簽信息。需要注意的是,在進(jìn)行小批次(Mini-batch)數(shù)據(jù)劃分時,每個小批次中的訓(xùn)練樣本的標(biāo)簽信息必須屬于同一個參與方。如參與方A和B都擁有某些樣本的標(biāo)簽信息,那么可以通過協(xié)商,提前約定使用哪一方的標(biāo)簽信息,或者通過試驗來確定使用哪一方的標(biāo)簽信息訓(xùn)練的模型效果更好。
在聯(lián)邦學(xué)習(xí)中,由于數(shù)據(jù)來源于不同的參與方,聯(lián)邦學(xué)習(xí)算法通常需要在多個參與方之間進(jìn)行加密中間計算結(jié)果或轉(zhuǎn)化結(jié)果的交換,導(dǎo)致不同參與方之間的計算邏輯存在依賴性。例如,在縱向聯(lián)邦學(xué)習(xí)中,為了保護(hù)標(biāo)簽信息,擁有標(biāo)簽信息的Guest方需要對模型損失函數(shù)的反向偏導(dǎo)數(shù)進(jìn)行加密,再將加密后的偏導(dǎo)數(shù)發(fā)送至其他Host方進(jìn)行后續(xù)計算。最后,Guest方還需將Host方的計算結(jié)果進(jìn)行收集、解密。顯然,這種依賴性容易導(dǎo)致參與方之間的互相等待。例如,在Guest方完成加密操作之前,Host方將處于一個等待接收的空閑狀態(tài);Guest方等待接收Host方的計算結(jié)果的期間也存在一個較長的空閑狀態(tài);在Guest方完成解密操作之前,Host方將再次陷入空閑等待的狀態(tài)。毫無疑問,這種交替的互相等待,將極大地降低聯(lián)邦學(xué)習(xí)系統(tǒng)的整體運行效率以及資源使用率。
在傳統(tǒng)機(jī)器學(xué)習(xí)的研究與應(yīng)用中,有許多使用異步并行優(yōu)化來減少空閑等待時間的技術(shù),如異步并行更新(Asynchronous Parallel,ASP)、梯度編碼(Gradient Coding)等。然而,這類相關(guān)工作所關(guān)注的通常是數(shù)據(jù)并行中節(jié)點之間的同步開銷,在這種場景中,每個節(jié)點擁有完整的機(jī)器學(xué)習(xí)模型,并可以自主地完成模型的正向計算與梯度反向傳播。而在聯(lián)邦學(xué)習(xí)場景中,特別是縱向聯(lián)邦學(xué)習(xí)場景中,每個參與方通常無法獨立完成計算,所以現(xiàn)有的異步并行優(yōu)化技術(shù)無法直接應(yīng)用于縱向聯(lián)邦學(xué)習(xí)中。
為解決計算和交互效率痛點,提出了參與方之間的異步并行計算優(yōu)化技術(shù)(見圖6),主要的技術(shù)手段包括:將數(shù)據(jù)進(jìn)行分批處理,不同的小批量數(shù)據(jù)之間可以異步并行計算,從而實現(xiàn)參與方的計算與跨參與方的通信之間的重疊,顯著降低每個參與方的空閑等待時間;并借助機(jī)器學(xué)習(xí)模型對延遲更新的魯棒性,使用異步更新打破不同迭代之間的壁壘,實現(xiàn)更進(jìn)一步的多批次的異步并行。
圖6 基于Spark的異步并行計算:計算與通信重疊
隱私保護(hù)是聯(lián)邦學(xué)習(xí)最主要的目標(biāo)之一,因此聯(lián)邦學(xué)習(xí)通常需要采用半同態(tài)加密的手段來對重要信息進(jìn)行加密保護(hù)。然而,半同態(tài)加密會帶來密文膨脹問題,引入巨大的通信開銷,例如采用3072位Paillier同態(tài)加密后[12],單個浮點數(shù)的體積可能膨脹至6144位,在進(jìn)行密文傳輸時,通信開銷凸顯,阻礙實際應(yīng)用。
在機(jī)器學(xué)習(xí)中,模型參數(shù)與中間計算結(jié)果(正向計算激活輸出、反向梯度等)通常會落在一個非常小的值域范圍內(nèi)?;谶@個事實,許多已有的研究工作都考慮對數(shù)據(jù)進(jìn)行量化壓縮,從而降低通信量。然而,已有的量化壓縮方法所適用的對象均為浮點數(shù),對于聯(lián)邦學(xué)習(xí)涉及的密文傳輸,已有的量化壓縮方法并不適用。
盡管現(xiàn)有方法無法直接應(yīng)用于密文傳輸,關(guān)于數(shù)據(jù)值域的分析提供了新的解決思路,即為了對浮點數(shù)進(jìn)行加密,通常做法是對其進(jìn)行某種大整數(shù)編碼,相比于大整數(shù)的最大表示范圍(如1024位),編碼后的大整數(shù)真實值往往落在一個非常狹小的范圍內(nèi)。借助這一性質(zhì),提出了一種基于多項式偏移的密文打包壓縮算法,例如該算法可將64個密文進(jìn)行打包壓縮,從而將密文的通信開銷降低了64倍,顯著提高了算法的運行效率和降低了通信開銷。
在聯(lián)邦學(xué)習(xí)場景里,參與方之間需要進(jìn)行加密中間計算結(jié)果或轉(zhuǎn)化結(jié)果的交互,因此需要允許參與方之間開放端口以進(jìn)行網(wǎng)絡(luò)通信。然而,在金融領(lǐng)域,金融機(jī)構(gòu)網(wǎng)絡(luò)防火墻的策略往往比較嚴(yán)格,內(nèi)部任務(wù)不允許監(jiān)聽任何對外端口,即不允許對外暴露端口。在此背景下,一方無法主動向另一方(如銀行)發(fā)送數(shù)據(jù),導(dǎo)致現(xiàn)有的雙向主動通信框架不可用。為了應(yīng)對這一挑戰(zhàn),對跨參與方的通信架構(gòu)進(jìn)行了改造,以支持單向發(fā)起主動通信的模式。
如圖7所示,以基于Pulsar消息隊列的通信框架為例,與傳統(tǒng)的雙向主動發(fā)起通信模式不同,在單向主動發(fā)起通信模式中,參與方A不需要對參與方B暴露網(wǎng)絡(luò)端口信息,只有參與方B向參與方A提供網(wǎng)絡(luò)端口信息。在單向主動發(fā)起通信模式下,參與方A通過拉取的方式接收參與方B發(fā)送的消息,即參與方A向參與方B主動發(fā)送Pull消息,參與方B通過回復(fù)Response消息來向參與方A發(fā)送消息。在這種單向主動發(fā)起通信設(shè)計下,有較高網(wǎng)絡(luò)安全要求的一方(參與方A)不再需要對外暴露網(wǎng)絡(luò)端口,極大地提高了安全性,適用于眾多與銀行、保險、政務(wù)等行業(yè)的聯(lián)邦學(xué)習(xí)應(yīng)用場景。
圖7 傳統(tǒng)雙向發(fā)起通信與單向發(fā)起通信的對比
安全多方聯(lián)合數(shù)據(jù)分析也是隱私計算重要的應(yīng)用場景。通過和實際業(yè)務(wù)的深入接觸,發(fā)現(xiàn)在非機(jī)器學(xué)習(xí)的場景中,隱私數(shù)據(jù)的聯(lián)合統(tǒng)計分析有著很大的需求和應(yīng)用空間。例如,參與方A和B分別持有一些數(shù)據(jù),需要聯(lián)合統(tǒng)計某些維度上的數(shù)據(jù),產(chǎn)出一份聯(lián)合數(shù)據(jù)分析報表,但是又不能向彼此泄露原始數(shù)據(jù)。為了在符合安全隱私計算規(guī)范的條件下滿足上述需求,基于結(jié)構(gòu)化數(shù)據(jù)查詢與處理工具,設(shè)計了安全聯(lián)合數(shù)據(jù)分析框架。根據(jù)用戶不同的安全等級需求,定制化地提供不同的安全聯(lián)合查詢、計算、統(tǒng)計等功能。
安全聯(lián)合數(shù)據(jù)分析的整體技術(shù)架構(gòu)如圖8所示,主要分為三層功能組件。
圖8 聯(lián)合數(shù)據(jù)分析技術(shù)架構(gòu)
(1)用戶接口層:聯(lián)合數(shù)據(jù)分析充分借鑒傳統(tǒng)的SQL用戶接口習(xí)慣,通過安聯(lián)合計算編譯器,對用戶SQL進(jìn)行編譯,解析抽象語法樹(Abstract Syntax Tree,AST)。
(2)優(yōu)化策略層:對查詢命令進(jìn)行最小功能劃分,把AST轉(zhuǎn)換成以安全計算算子為原子任務(wù)的分布式執(zhí)行計劃,然后分發(fā)到執(zhí)行引擎。
(3)安全計算層:在底層計算協(xié)議的實現(xiàn)上,采用半同態(tài)加密、秘密分享、多方安全計算等技術(shù)構(gòu)建安全算子,在不泄露用戶隱私的條件下實現(xiàn)原子任務(wù)的執(zhí)行。具體安全算子的實例有PSI、安全GroupBy、跨源用戶定義函數(shù)(User Defined Function,UDF)與用戶定義聚合函數(shù)(User-Defined Aggregate Functions,UDAF)等。
為了滿足易用性,聯(lián)合數(shù)據(jù)分析需要嚴(yán)格遵循SQL語法,其編譯優(yōu)化技術(shù)??梢苑譃橐韵氯?。
(1)AST轉(zhuǎn)化:與傳統(tǒng)的數(shù)據(jù)庫查詢相同,首先將用戶輸入的SQL進(jìn)行詞法分析與語法分析,得到對應(yīng)的AST。
(2)安全計算分析:在解析得到AST后,對AST進(jìn)行安全計算分析。一方面,對AST中所有涉及兩表關(guān)聯(lián)查詢(如Join操作)替換成安全算子,對于可能造成隱私泄露的(如單列查詢),如果未經(jīng)授權(quán)則編譯發(fā)出警告;另一方面,對AST中涉及到的所有表與字段進(jìn)行權(quán)限分析,若發(fā)起方嘗試對未被授權(quán)訪問的表或字段進(jìn)行查詢,將會拒絕該查詢請求。
(3)執(zhí)行計劃優(yōu)化:在完成AST安全分析后,將AST映射為實際的執(zhí)行計劃。在生成執(zhí)行計劃時,還進(jìn)行了兩方面的優(yōu)化。首先,傳統(tǒng)的查詢優(yōu)化技術(shù)可以無縫銜接到聯(lián)合數(shù)據(jù)分析平臺中。此外,著重對聯(lián)合安全算子進(jìn)行了分析優(yōu)化。其主要原因為,與傳統(tǒng)的算子相比,聯(lián)合安全算子涉及多方的安全計算,所需要的耗時往往更長,計算代價更高。為此,可以采用數(shù)種基于代價的優(yōu)化策略,如列裁剪、謂詞下推、常量折疊等,對聯(lián)合安全分析進(jìn)行有針對性的優(yōu)化。
聯(lián)合數(shù)據(jù)分析的關(guān)鍵點在于如何在聯(lián)合多個參與方的數(shù)據(jù)進(jìn)行分析時,保證各方的數(shù)據(jù)隱私安全。為此,設(shè)計了全棧的安全算子,以覆蓋絕大多數(shù)的應(yīng)用場景,如Join算子(見圖9)。
圖9 聯(lián)合數(shù)據(jù)分析中的安全Join算子
2.3.1 PSI算子
兩表或多表求交集(如Join操作)是數(shù)據(jù)庫中最重要和常用的操作之一。在安全聯(lián)合數(shù)據(jù)分析中,Join操作同樣有著十分廣泛的應(yīng)用場景。例如,參與方A為某應(yīng)用(如游戲、社交、短視頻APP等)的運營部門,持有用戶行為日志(如注冊、登錄、使用時長、充值行為等),參與方B為渠道方,持有曝光數(shù)據(jù),A和B雙方希望聯(lián)合計算某時間段內(nèi)指定渠道的曝光量或充值情況,這需要對雙方的數(shù)據(jù)表進(jìn)行求交,抽取符合條件的數(shù)據(jù)進(jìn)行統(tǒng)計。
由于不同的數(shù)據(jù)表來自于不同的參與方,在進(jìn)行數(shù)據(jù)表求交的同時,還需對交集之外的行ID進(jìn)行保護(hù),可以使用前文所介紹的PSI技術(shù)來實現(xiàn)安全數(shù)據(jù)分析中的Join操作,在高效完成數(shù)據(jù)表求交的同時,保證各參與方的數(shù)據(jù)安全。
2.3.2 安全GroupBy與UDAF
多方聚合計算同樣是安全聯(lián)合數(shù)據(jù)分析中最常見的操作之一。隨著數(shù)據(jù)隱私保護(hù)條例的出臺,不同職能的公司、機(jī)構(gòu)所擁有的用戶數(shù)據(jù)有著很大的易構(gòu)性。因此,為了實現(xiàn)更細(xì)粒度的用戶數(shù)據(jù)統(tǒng)計與分析,多方安全聚合是至關(guān)重要的一項技術(shù)。
常見的聯(lián)合數(shù)據(jù)分析應(yīng)用包括兩種多方安全聚合計算場景,具體如下。
(1)“單方分組,聯(lián)邦聚合”,即以一方的數(shù)據(jù)作為分組條件,對另一方的數(shù)據(jù)進(jìn)行聚合操作。
(2)“聯(lián)邦分組,聯(lián)邦聚合”,即將分組條件拓展至使用兩個或多個參與方的數(shù)據(jù),并進(jìn)行指定數(shù)據(jù)列的聚合操作。
基于半同態(tài)加密、秘密分享等技術(shù)手段,可以實現(xiàn)求和、求最值、取平均等多種安全聚合算子。此外,還提供用戶自定義安全聚合接口,用戶可根據(jù)實際業(yè)務(wù)需求以及數(shù)據(jù)安全接口,實現(xiàn)自定義的聚合操作,服務(wù)于更廣泛的業(yè)務(wù)場景。
Angel PowerFL(簡稱PowerFL)安全聯(lián)合計算平臺是通用型隱私計算平臺,兼顧了工業(yè)界的高可用性和學(xué)術(shù)界的創(chuàng)新性,同時支持聯(lián)邦建模與聯(lián)合數(shù)據(jù)分析,并已在金融、廣告、醫(yī)療、政務(wù)等多個行業(yè)應(yīng)用落地。
在數(shù)據(jù)保護(hù)方面,PowerFL平臺提供多種隱私保護(hù)機(jī)制,包括半同態(tài)加密、秘密分享、差分隱私、TEE等[21-25]。并且PowerFL采用去中心化的架構(gòu)設(shè)計,不依賴任何中心節(jié)點。PowerFL平臺提供多樣化的、可按需選擇的隱私保護(hù)機(jī)制,更加安全,適合實際應(yīng)用場景。
在功能方面,PowerFL平臺擁有全棧的安全聯(lián)合機(jī)器學(xué)習(xí)和深度學(xué)習(xí)功能,支持多方及非對稱PSI、斜向聯(lián)邦學(xué)習(xí)、多方聯(lián)邦在線預(yù)測和模型版本管理,并支持多方安全聯(lián)合數(shù)據(jù)分析功能。
在性能方面,依托Angel機(jī)器學(xué)習(xí)平臺的海量數(shù)據(jù)處理能力,PowerFL支持千億級別的海量數(shù)據(jù)計算,通過異步高并發(fā)計算、通信消息壓縮、硬件加速等多種技術(shù)創(chuàng)新來提高計算和通信效率?;赑ulsar消息隊列的底層通信組件更加增強(qiáng)了系統(tǒng)的穩(wěn)定性和容錯能力?;赟park的計算框架和基于Pulsar的底層通信框架都是業(yè)界首創(chuàng)。
在易用性方面,PowerFL平臺采用云原生設(shè)計,支持容器化部署、支持基于YARN和K8S的靈活資源擴(kuò)縮容等特性。PowerFL平臺采用計算層和服務(wù)層分離,在高并發(fā)計算和靈活資源擴(kuò)縮容方面優(yōu)勢凸顯。
如圖10所示,PowerFL平臺包括五層功能組件,自底向上依次如下。
圖10 Angel PowerFL平臺框架
(1)資源管理:PowerFL支持YARN和K8S兩種主流的計算資源調(diào)度方式,并支持從多種數(shù)據(jù)源讀取數(shù)據(jù),包括HDFS、Ceph、COS云存儲等。
(2)計算框架:基于Angel-PS的高性能分布式參數(shù)服務(wù)器[8-9],PowerFL支持多種高效的分布式聯(lián)邦機(jī)器學(xué)習(xí)算法,提供基于Spark SQL的聯(lián)合數(shù)據(jù)查詢與數(shù)據(jù)分析功能。PowerFL支持Pulsar消息隊列、gRPC、Socket等多種通信機(jī)制,在保證數(shù)據(jù)安全的前提下,實現(xiàn)了穩(wěn)定可靠的高性能跨網(wǎng)傳輸。
(3)算法協(xié)議:PowerFL針對不同場景實現(xiàn)了常見的聯(lián)邦學(xué)習(xí)算法協(xié)議,包括多方聯(lián)邦LR、XGBoost模型用戶自定義神經(jīng)網(wǎng)絡(luò)模型等,以及常用的聯(lián)合數(shù)據(jù)分析算子。
(4)產(chǎn)品交互:PowerFL既支持以REST API的形式調(diào)起任務(wù),也支持各參與方在聯(lián)合工作區(qū)上協(xié)同工作。
(5)應(yīng)用場景:PowerFL平臺已經(jīng)在金融、廣告、智慧政務(wù)、智慧醫(yī)療等多個行業(yè)應(yīng)用落地。
圖11展示了PowerFL平臺在兩方協(xié)同場景下的系統(tǒng)架構(gòu)圖。在整個聯(lián)合建模與分析的過程中,A和B雙方的原始數(shù)據(jù)均不出本地。PowerFL系統(tǒng)架構(gòu)具有以下特點。
圖11 Angel PowerFL平臺系統(tǒng)設(shè)計
(1)A、B兩方獨立部署PowerFL的本地框架,支持YARN、K8S等多種資源申請方式,與現(xiàn)有大數(shù)據(jù)業(yè)務(wù)系統(tǒng)完全兼容。
(2)本地PowerFL Executor的計算采用Spark,充分利用其內(nèi)存優(yōu)先和分布式異步并行的優(yōu)點,效率高且易于和現(xiàn)有大數(shù)據(jù)生態(tài)(如HDFS等)對接。
(3)本地平臺構(gòu)建在Angel-PS參數(shù)服務(wù)器之上,支持海量數(shù)據(jù)的分布式訓(xùn)練。Angel-PS支持Checkpoint,具有很好的容錯性和斷點續(xù)訓(xùn)功能。
(4)在A、B兩方之間直接進(jìn)行安全通信,實現(xiàn)了“去中心化”,整個隱私計算流程僅需要協(xié)調(diào)雙方。
本文主要介紹了隱私計算的關(guān)鍵技術(shù)與創(chuàng)新,并介紹了這些技術(shù)與創(chuàng)新在Angel PowerFL通用隱私計算平臺中的應(yīng)用。隱私計算和聯(lián)邦學(xué)習(xí)技術(shù)正在快速演進(jìn)和產(chǎn)品化,規(guī)?;虡I(yè)應(yīng)用還處于起步階段,在安全方面還沒有一套完善且業(yè)界認(rèn)可的標(biāo)準(zhǔn)規(guī)范,加密和解密帶來的計算開銷和通信開銷也需要進(jìn)一步優(yōu)化。隱私計算是解決數(shù)據(jù)協(xié)同與隱私保護(hù)矛盾的有效技術(shù)方案,并將隨著大數(shù)據(jù)與AI產(chǎn)業(yè)的發(fā)展,在跨機(jī)構(gòu)數(shù)據(jù)協(xié)同、數(shù)據(jù)隱私保護(hù)等方面將會發(fā)揮越來越重要的作用,有著廣闊的應(yīng)用前景。