魏立斐,李夢思,張 蕾,陳聰聰,陳玉嬌,王 勤
上海海洋大學(xué) 信息學(xué)院,上海201306
線性回歸(Linear Regression)作為一種廣泛使用的基礎(chǔ)型機(jī)器學(xué)習(xí)算法,是通過對多個影響因素和結(jié)果進(jìn)行擬合,從而以線性模型來建模一個或多個自變量與因變量之間相關(guān)關(guān)系的一種方法。為了提高和優(yōu)化回歸模型性能,通常需要訓(xùn)練大量的原始數(shù)據(jù),但本地計算資源及存儲資源有限,使得一些企業(yè)或機(jī)構(gòu)無法滿足獨自訓(xùn)練模型的需求。而云計算[1]的迅速發(fā)展,使得這一問題得到很好地解決,目前有許多云計算服務(wù)商業(yè)平臺(如亞馬遜和谷歌等)允許客戶端上傳數(shù)據(jù)到云服務(wù)器進(jìn)行各種機(jī)器學(xué)習(xí)任務(wù)。但因為云計算的不可信性[2],它可以查看并記錄用戶的數(shù)據(jù)信息,甚至可能遭受到敵手的攻擊而泄露用戶數(shù)據(jù),所以研究能夠保護(hù)隱私的線性回歸方案尤為重要。目前已經(jīng)有許多學(xué)者提出了具有隱私保護(hù)的線性回歸方案?;诓罘蛛[私的方法[3-5]是通過對回歸模型添加適當(dāng)噪聲的方式來實現(xiàn)隱私保護(hù),但引入噪聲的同時會導(dǎo)致模型性能有所下降?;谕瑧B(tài)加密(Homomorphic Encryption,HE)的方案[6-8]則通常需要客戶端使用同態(tài)加密算法對訓(xùn)練數(shù)據(jù)加密之后,由云服務(wù)器利用同態(tài)性質(zhì)在密文上進(jìn)行訓(xùn)練,但使用同態(tài)加密算法對大量的數(shù)據(jù)實現(xiàn)加密對于客戶端來說計算開銷太大,并且由于同態(tài)加密計算本身的限制,無法實現(xiàn)任意次的加法和乘法,在現(xiàn)實環(huán)境中并不實用。
安全多方計算(Secure Multi-party Computation,SMC)起源于1982年Yao[9]提出的百萬富翁問題,核心思想是在不泄露任何參與方的私有輸入情況下正確地計算目標(biāo)函數(shù)。作為安全計算領(lǐng)域里的核心內(nèi)容之一,SMC 是構(gòu)造多方計算協(xié)議的基礎(chǔ),可用于解決現(xiàn)實世界中的實際問題,但它需要借助現(xiàn)代密碼學(xué)中的其他技術(shù)來實現(xiàn)[10-12],比如基于秘密共享(Secret Sharing)、混淆電路(Garbled Circuits,GC)、同態(tài)加密等技術(shù)的安全多方計算線性回歸方案[13-15]。2011 年,Hall 等人[16]基于同態(tài)加密首次提出了一種可以達(dá)到安全性定義的安全兩方計算線性回歸協(xié)議,但該方案過于依賴計算開銷巨大的同態(tài)加密,無法應(yīng)用到數(shù)據(jù)條目龐大的數(shù)據(jù)集中。Martine 等人[17]基于文獻(xiàn)[16]在數(shù)據(jù)集分布于多個參與方的情境下,提出了一種能夠保護(hù)數(shù)據(jù)隱私的線性回歸方案,各計算方可以在不共享自己私有數(shù)據(jù)集的情況下協(xié)同訓(xùn)練線性回歸模型。Dankar[18]通過引入一個半可信第三方,在理論上提出了一種支持多個數(shù)據(jù)提供者參與的隱私保護(hù)線性回歸方案。Adrià等人[19]提出一種用于任意分布于多個參與方的訓(xùn)練集的隱私保護(hù)線性回歸方案,該方案結(jié)合了Yao的混淆電路和全同態(tài)加密方案。之后,Mohassel 等人[20]提出的SecureML 方案基于混淆電路和不經(jīng)意傳輸(Oblivious Transfer,OT)[21]協(xié)議,設(shè)計了支持安全兩方計算的隨機(jī)梯度下降算法,實現(xiàn)了線性回歸、邏輯回歸以及神經(jīng)網(wǎng)絡(luò)的模型訓(xùn)練任務(wù)。該方案由數(shù)據(jù)擁有者將私有數(shù)據(jù)通過秘密共享的方式分發(fā)給兩個服務(wù)器,由兩個服務(wù)器用安全多方計算的方式訓(xùn)練模型,實現(xiàn)了加法和乘法的分布式計算。在SecureML的基礎(chǔ)上,唐春明等人[22]借助基于OT協(xié)議生成的乘法三元組[23],提出了具有隱私性的回歸模型訓(xùn)練算法,同時實現(xiàn)了對訓(xùn)練數(shù)據(jù)及模型參數(shù)的隱私保護(hù)。Akavia 等人[24]提出一種能夠從多個數(shù)據(jù)所有者提供的數(shù)據(jù)集中學(xué)習(xí)線性回歸模型的數(shù)據(jù)隱私保護(hù)方案,該方案使用兩個非共謀服務(wù)器和線性同態(tài)加密(Linearly Homomorphic Encryption)來學(xué)習(xí)正則化線性回歸模型。Dong等人[25]提出了一個可以適應(yīng)半誠實和惡意環(huán)境下的分布式機(jī)器學(xué)習(xí)框架,每個參與者將自己的梯度分成共享份額,并分配給多個參數(shù)服務(wù)器,由參數(shù)服務(wù)器聚合梯度后發(fā)還給參與者,參與者在本地更新參數(shù)。
受安全多方計算核心思想的啟發(fā),本文擬采用安全兩方計算技術(shù)來解決線性回歸方案中的隱私保護(hù)問題。在此之前,Mohassel[20]和唐春明[22]提出的基于安全兩方計算的隱私保護(hù)方案,由兩個非共謀云服務(wù)器協(xié)作完成線性回歸任務(wù),但他們均使用通信復(fù)雜度較高的OT 協(xié)議,因此在規(guī)模比較大的數(shù)據(jù)集上使用會有一定的局限性。另外,文獻(xiàn)[20]中的線性回歸協(xié)議雖然解決了數(shù)據(jù)隱私保護(hù)問題,但需要兩個云服務(wù)器直接重構(gòu)模型參數(shù),因此該方案無法保證模型參數(shù)的隱私性。不同于文獻(xiàn)[20]和文獻(xiàn)[22],本文避免使用通信復(fù)雜度較高的OT 協(xié)議,而是通過使用加法同態(tài)加密和加法掩碼相結(jié)合的方法實現(xiàn)秘密共享值的乘法計算,避免兩方服務(wù)器私有信息的泄露。相比之下,本文方案在保證數(shù)據(jù)和模型參數(shù)隱私不被泄露的同時,所需要的通信開銷更低。本文主要貢獻(xiàn)包括以下兩方面:
(1)使用安全兩方計算的方式執(zhí)行小批量梯度下降算法更新模型參數(shù),通過將加法同態(tài)加密與加法掩碼相結(jié)合的方法,實現(xiàn)了秘密共享值之間的乘法計算。
(2)提出并實現(xiàn)了隱私保護(hù)的預(yù)測方案,確保云服務(wù)器在預(yù)測過程中無法獲得預(yù)測數(shù)據(jù)的具體信息,同時在預(yù)測結(jié)束后無法獲得真正的預(yù)測結(jié)果,實現(xiàn)了隱私保護(hù)線性回歸預(yù)測。
給定一個包含n條數(shù)據(jù)的訓(xùn)練集(X,y),其中X∈Rn×d表示具有d個特征的樣本集特征矩陣,y∈Rn表示n條數(shù)據(jù)樣本對應(yīng)的標(biāo)簽向量,線性回歸任務(wù)的目標(biāo)是從訓(xùn)練集(X,y) 學(xué)習(xí)模型M的一組回歸系數(shù)θ∈Rd,使得目標(biāo)值y≈Xθ。
為了衡量模型的好壞,需要對訓(xùn)練出的模型進(jìn)行性能評價,一個常用的評價標(biāo)準(zhǔn)是平方誤差和,即目標(biāo)值和預(yù)測結(jié)果之間差距的平方和,因此可以定量化損失函數(shù):
線性回歸的任務(wù)就是尋求使得L最小化時的θ值。
梯度下降是一個用來求目標(biāo)函數(shù)最小值的優(yōu)化算法,本文使用小批量梯度下降算法(Mini-Batch Gradient Descent,MBGD)來求出損失函數(shù)L(θ)的最小值。它在更新每一參數(shù)時都使用一部分樣本進(jìn)行更新,相比較隨機(jī)梯度下降算法(Stochastic Gradient Descent,SGD)和批量梯度下降算法(Batch Gradient Descent,BGD),該算法可以縮減模型收斂所需要的迭代次數(shù),同時使收斂的結(jié)果更接近梯度下降的效果。對于小批量數(shù)據(jù)集(XB,yB)的梯度下降算法的參數(shù)更新方式為:
其中,XB和yB分別表示小批量樣本集的特征值和目標(biāo)值,e表示當(dāng)前迭代次數(shù),α表示學(xué)習(xí)率,| |B表示小批量樣本數(shù)量。
同態(tài)加密最早是由Rivest 等人[26]提出,這種加密方法允許直接在密文上進(jìn)行某些特殊類型的計算而獲得密文結(jié)果,并且將密文結(jié)果解密后,其值與在明文上執(zhí)行的函數(shù)結(jié)果一致。本文使用支持加法同態(tài)加密的Paillier 加密系統(tǒng)[27],它是由Paillier 于1999 年基于復(fù)合剩余類困難問題建立的概率公鑰加密系統(tǒng)。該加密系統(tǒng)工作原理如下:
(l)密鑰生成KeyGen(·)→(pk,sk):隨機(jī)生成兩個大素數(shù)p、q滿足gcd(pq,(p-1)(q-1))=1,計算N=pq,λ=lcm(p-1,q-1),隨機(jī)選擇整數(shù),則公鑰pk=(g,N),私鑰sk=λ。
(2)加密過程Enc(pk,m)→c:選擇一個隨機(jī)數(shù)r∈,則明文m對應(yīng)的密文c=gmrNmodN2。
(3)解密過程Dec(sk,c)→m:對于密文c解密后的明文m=(L(cλmodN2)/L(gλmodN2))modN,其中L(u)=(u-1)/N。
對于明文m有:
本文Paillier同態(tài)加密利用python-paillier庫(https://python-paillier.readthedocs.io/)實現(xiàn),該加密庫支持浮點數(shù)的計算,因此對于實數(shù)k和明文m有(Enc(m))k=Enc(km)。
秘密共享就是指共享的秘密在多個計算方之間進(jìn)行合理分配,以達(dá)到由所有參與方共同掌管秘密的目的。Sharmir在1979年最早提出t-out-of-n秘密共享方案[28],允許將秘密s進(jìn)行分割并在n個參與者中共享,使得至少任意t個參與者合作才能夠還原秘密,而任何少于t個參與者均不可以得到秘密的任何信息。具體地,該方案由兩種算法組成:共享算法Share(·)和重構(gòu)算法Recon(·),算法描述如下:
(1)Share(s,t,n)→(s1,s2,…,sn):給定秘密s、閾值t以及共享份額數(shù)n,可以產(chǎn)生一組秘密共享值{s1,s2,…,sn}。
(2)Recon(Θ,t)→s:給定秘密共享值的子集Θ,其中Θ∈{s1,s2,…,sn}且 |Θ|≥t,則可以重構(gòu)出原始秘密s。
本文方案涉及兩方計算任務(wù),由兩個云服務(wù)器進(jìn)行交互式協(xié)作計算,因此本文采用2-out-of-2 秘密共享方案。即對于秘密a,通過共享算法Share(a,2,2)→(a0,a1)得到其對應(yīng)的兩個共享值ai(i=0,1);反之,由秘密共享值ai(i=0,1)恢復(fù)出原始秘密a的過程就叫作Recon({a0,a1},2)→a。其中a=a0+a1。
本文采用誠實且好奇的非共謀雙云服務(wù)器模型,即云服務(wù)器誠實地執(zhí)行預(yù)置的計算任務(wù),同時出于好奇會查看并記錄數(shù)據(jù)信息,但不會向另一方透露任何自己的輸入、中間計算參數(shù)以及輸出信息。如圖1 所示,本文系統(tǒng)模型包含一個數(shù)據(jù)提供者(Data Provider)、一個用戶(User)和兩個云服務(wù)器(Cloud Server,CS)。數(shù)據(jù)擁有者發(fā)布線性回歸模型的訓(xùn)練任務(wù)并提供必要的訓(xùn)練數(shù)據(jù),在與云服務(wù)器CSi(i=0,1)建立基于TSL/SSL協(xié)議的安全信道并進(jìn)行模型訓(xùn)練任務(wù)協(xié)商之后,利用秘密共享原理將訓(xùn)練數(shù)據(jù)分發(fā)給它們,由兩個云服務(wù)器協(xié)作完成訓(xùn)練任務(wù);在預(yù)測階段,具有預(yù)測請求的用戶在與服務(wù)器建立安全信道之后,將待預(yù)測數(shù)據(jù)通過秘密共享的方式分發(fā)給它們,兩個云服務(wù)器進(jìn)行協(xié)作預(yù)測,并將各自的預(yù)測值返還給用戶,由用戶重構(gòu)出最終的預(yù)測結(jié)果。
圖1 系統(tǒng)模型Fig.1 System model
本章主要描述基于安全兩方計算的隱私保護(hù)線性回歸方案,包括秘密共享值的乘法計算以及基于兩方計算的線性回歸安全訓(xùn)練和預(yù)測階段。其中秘密共享值的乘法計算(Multiplication of Secret Shared Values,MoSSV)協(xié)議作為訓(xùn)練及預(yù)測階段的基礎(chǔ)協(xié)議,主要用于雙云服務(wù)器的安全兩方計算。如圖2所示,訓(xùn)練階段和預(yù)測階段分別由三個主要模塊構(gòu)成。在訓(xùn)練階段,鑒于數(shù)據(jù)需要脫離數(shù)據(jù)提供者本地,但又不能向云服務(wù)器泄露任何數(shù)據(jù)信息,因此首先通過Share(·)算法將數(shù)據(jù)以秘密共享的方式進(jìn)行劃分;收到秘密共享數(shù)據(jù)之后,兩個云服務(wù)器共同協(xié)商并預(yù)置相同的訓(xùn)練參數(shù),即學(xué)習(xí)率、小批量樣本數(shù)目、最大迭代次數(shù)及損失閾值;最后由兩個云服務(wù)器執(zhí)行安全的小批量梯度下降算法進(jìn)行模型參數(shù)更新,直至模型收斂。在預(yù)測階段,同樣出于保護(hù)預(yù)測數(shù)據(jù)的隱私,首先將預(yù)測數(shù)據(jù)通過秘密共享Share(·)算法分發(fā)給雙云服務(wù)器;之后由雙云服務(wù)器執(zhí)行CalPred(·)模塊,得到預(yù)測結(jié)果的秘密共享值;最后由用戶執(zhí)行Recon(·)算法重構(gòu)最終的預(yù)測結(jié)果。
圖2 隱私保護(hù)線性回歸方案框架圖Fig.2 Framework of privacy protection linear regression
假設(shè)兩個計算方分別持有給定矩陣和向量的秘密共享值,那么如何在保證計算方各自的秘密共享值不被泄露的情況下,安全地完成秘密共享值之間的乘法運算呢?Du等人[29]在僅有兩個計算方參與的情形下,基于OT協(xié)議提出了一系列解決分布式線性代數(shù)問題的方案。由于OT 協(xié)議通信復(fù)雜度較高,陳莉等人[30]基于同態(tài)加密的性質(zhì)設(shè)計了用于求解分布式線性方程組問題的安全兩方計算協(xié)議?;谖墨I(xiàn)[30],本文利用加法同態(tài)加密和加法掩碼實現(xiàn)了適用于線性回歸任務(wù)中秘密共享值的乘法計算協(xié)議(MoSSV),其核心思想是在僅有兩個計算方參與的情況下,利用加法同態(tài)加密保護(hù)其中一個計算方的私有信息,利用加法掩碼掩蓋另一計算方的私有信息,最終計算雙方獲得矩陣-向量乘積的秘密共享值。下面給出了協(xié)議執(zhí)行過程的詳細(xì)描述,協(xié)議執(zhí)行過程如圖3所示。
圖3 秘密共享值的乘法計算協(xié)議流程圖Fig.3 Flowchart of multiplication calculation protocol for secret shared values
3.1.1 問題描述
秘密共享值的乘法計算問題可以描述為:對于給定的矩陣M和向量v(其中M的第二維度與v的第一維度一致),Mi和vi(i=0,1)是它們的秘密共享份額且分別為計算方Pi(i=0,1)所擁有,其中M=M0+M1,v=v0+v1,即計算方P0擁有私有矩陣M0和私有向量v0,另一計算方P1擁有私有矩陣M1和私有向量v1。執(zhí)行該協(xié)議之后,Pi(i=0,1)可以獲得乘積Mv的秘密共享份額pi=Multi(M0,M1,v0,v1)。
3.1.2 秘密共享值的乘法計算協(xié)議
輸入:P0的私有矩陣M0和私有向量v0,P1的私有矩陣M1和私有向量v1。
輸出:Pi(i=0,1)可得到pi=Multi(M0,M1,v0,v1)。
協(xié)議過程描述:
步驟1Pi各自生成同態(tài)加密密鑰對(pki,ski),其中pki和ski分別表示Pi的公鑰和私鑰,并將公鑰pki發(fā)給對方。
步驟2Pi使用自己的公鑰pki加密私有向量vi并將Encpki(vi)發(fā)給對方。
步驟3P1-i收到對方公鑰pki和加密向量Encpki(vi)后,隨機(jī)生成向量r1-i,并使用對方的公鑰pki加密得到Encpki(r1-i)。
步驟4P1-i計算Encpki(M1-ivi-r1-i)并將結(jié)果發(fā)給對方。
步驟5Pi收到Encpki(M1-ivi-r1-i)后,使用自己的私鑰ski解密得到M1-ivi-r1-i。
步驟6Pi計算得到pi=Mivi +(M1-ivi-r1-i)+ri,協(xié)議結(jié)束。
3.1.3 正確性
對于任意兩個秘密a、b,要求在避免使用可信第三方且不泄露a、b值的情況下求c=a +b。通過隨機(jī)數(shù)r,可以進(jìn)行以下構(gòu)造:a′=a-r,b′=b +r。因為隨機(jī)數(shù)可以相抵消,所以有c=a′+b′=(a-r)+(b +r)=a +b。
根據(jù)以上原理,對于MoSSV協(xié)議,有:
因此該協(xié)議是正確的。
3.1.4 安全性
在MoSSV協(xié)議執(zhí)行之前,計算方Pi(i=0,1)之間通過協(xié)商建立基于TSL/SSL協(xié)議的安全通道,以確保他們之間發(fā)送的任何敏感數(shù)據(jù)的安全性及完整性。該協(xié)議利用加法同態(tài)加密和加法掩碼的性質(zhì)保護(hù)計算雙方的私有信息,其安全性主要體現(xiàn)在協(xié)議計算過程步驟2~步驟4 中。在步驟2 中計算方Pi利用加法同態(tài)加密技術(shù),使用己方公鑰加密私有向量并發(fā)送給對方,因為對方不知道密文對應(yīng)的私鑰,所以無法解密,從而起到保護(hù)私有向量隱私性的作用;在步驟4 中,對方不能直接將加密的矩陣向量乘積發(fā)送回來,而是在步驟3利用加法掩碼的原理使用隨機(jī)向量將乘積進(jìn)行盲化,從而起到保護(hù)對方私有矩陣信息的作用。
綜上,在協(xié)議執(zhí)行過程中,Pi(i=0,1)可以獲得的信息如表1所示。
表1 在MoSSV協(xié)議步驟中參與方所獲得的信息Table 1 Information obtained by each participant in MoSSV protocol
(1)Share((X,y),2,2)→((X0,y0),(X1,y1))
數(shù)據(jù)提供者將私有訓(xùn)練數(shù)據(jù)(X,y),利用2-out-of-2秘密共享的原理隨機(jī)拆分為與原始數(shù)據(jù)維度大小相同的兩部分子數(shù)據(jù)(X0,y0)和(X1,y1),并通過基于TSL/SSL協(xié)議建立的安全信道分發(fā)給云服務(wù)器CS0和CS1。
(2)InitPara(CS0,CS1)→(θ0,θ1,α,|B|,E)
由于在線性回歸模型訓(xùn)練之前,參與訓(xùn)練模型的計算方需要共同預(yù)置一些必要的參數(shù),以高效準(zhǔn)確地完成回歸任務(wù)。因此CSi(i=0,1)首先共同協(xié)商學(xué)習(xí)率α、小批量樣本數(shù)目 |B|、最大迭代次數(shù)E,并分別初始化模型參數(shù)θi∈Rd(全0/1向量或者任意隨機(jī)數(shù))。
(3)ParaUpdate(·)→(θ0,θ1)
為了優(yōu)化模型收斂速度,云服務(wù)器CSi(i=0,1)之間使用安全的小批量梯度下降(MBGD)算法,根據(jù)式(2)更新模型參數(shù)。具體子步驟如下所示:
之后,CSi根據(jù)當(dāng)前更新的模型參數(shù)θi,利用MoSSV協(xié)議計算損失函數(shù)值Li并發(fā)給對方,兩個云服務(wù)器根據(jù)Recon(·)重構(gòu)出整個訓(xùn)練集的損失值,并判斷模型是否收斂,若收斂,訓(xùn)練結(jié)束,當(dāng)前CSi(i=0,1)所擁有的參數(shù)θi為線性回歸模型參數(shù)的秘密共享值;否則,以上子步驟會循環(huán)執(zhí)行。當(dāng)模型或者訓(xùn)練達(dá)到最大迭代次數(shù)E時,強(qiáng)行停止訓(xùn)練。
(1)Share(XU,2,2)→
已知云服務(wù)器CS0和CS1分別擁有模型參數(shù)的秘密共享值θ0和θ1,具有預(yù)測任務(wù)的用戶User可以利用云服務(wù)器強(qiáng)大的計算力進(jìn)行線性預(yù)測。首先將預(yù)測數(shù)據(jù)集XU進(jìn)行拆分預(yù)處理,得到兩個子數(shù)據(jù)集和并分別發(fā)送給云服務(wù)器CS0和CS1。
CSi(i=0,1)利用MoSSV 協(xié)議得出預(yù)測結(jié)果的秘密共享值
CSi(i=0,1)分別將秘密共享結(jié)果發(fā)送給用戶,由用戶根據(jù)秘密共享值重構(gòu)出真實的預(yù)測結(jié)果
本文方案實現(xiàn)了數(shù)據(jù)及模型參數(shù)的隱私保護(hù),如表2 所示。本文的線性回歸任務(wù)涉及兩個計算方安全地執(zhí)行小批量梯度下降算法,即由兩個云服務(wù)器進(jìn)行交互式協(xié)作計算,但因為云服務(wù)器是誠實且好奇的,對訓(xùn)練數(shù)據(jù)的安全存在一定的威脅,所以方案首先利用加法秘密共享將訓(xùn)練用的數(shù)據(jù)以適當(dāng)形式拆分后分發(fā)給不同計算方。本方案中兩個云服務(wù)器CS0和CS1非共謀,因此有效地避免了云服務(wù)器恢復(fù)原始數(shù)據(jù)信息的問題,實現(xiàn)了對訓(xùn)練數(shù)據(jù)的隱私保護(hù)。
表2 基于兩方計算的線性回歸方案對比Table 2 Comparison of linear regression schemes based on two-party computation
在參數(shù)更新過程中,涉及到兩方秘密共享值需要同時使用的計算操作,比如需要在保護(hù)各自秘密共享數(shù)據(jù)以及模型參數(shù)的情況下進(jìn)行安全計算。本文利用安全的MoSSV 協(xié)議,使用同態(tài)加密對各自模型參數(shù)θi進(jìn)行加密處理,根據(jù)加法掩碼的原理使用隨機(jī)向量掩蓋秘密共享數(shù)據(jù)的信息,防止對方使用私鑰解密獲得私有數(shù)據(jù)信息,根據(jù)表1 可知,云服務(wù)器無法獲取到任何關(guān)于對方的隱私信息。判斷模型收斂時,云服務(wù)器無法根據(jù)損失函數(shù)值Li恢復(fù)出對方的預(yù)測結(jié)果以及真實標(biāo)簽yi。預(yù)測階段僅涉及到秘密共享數(shù)據(jù)和模型參數(shù),其安全性分析同理。
值得注意的是,在訓(xùn)練階段結(jié)束之后,若數(shù)據(jù)提供者有模型使用需求,則可以直接向云服務(wù)器請求發(fā)還模型參數(shù)的秘密共享值,并在本地使用Recon(·)重構(gòu)出模型參數(shù)。因為數(shù)據(jù)提供者本身是具有模型訓(xùn)練任務(wù)的,所以該操作并不會涉及到模型參數(shù)私有信息的泄露問題。
與本文最接近的方案是文獻(xiàn)[20]和文獻(xiàn)[22],均屬于基于安全多方計算的隱私保護(hù)方案,但它們均使用通信復(fù)雜度較高的OT協(xié)議,方案通信成本過高,因此本文避免采用OT 協(xié)議,而是使用加法同態(tài)加密和加法掩碼技術(shù),對比如表2所示。傳統(tǒng)使用同態(tài)加密的隱私保護(hù)方案的一般做法是使用同態(tài)加密技術(shù)將原始訓(xùn)練數(shù)據(jù)加密處理后以密文的形式進(jìn)行訓(xùn)練,最后將模型同態(tài)解密。這種方法雖然可以實現(xiàn)數(shù)據(jù)及模型的隱私保護(hù),但是在密文數(shù)據(jù)上的訓(xùn)練會使得通信和計算開銷呈指數(shù)級增長,因此為了平衡計算通信開銷與隱私保護(hù)之間的矛盾,本文不論是在隱私保護(hù)線性回歸算法的訓(xùn)練階段還是預(yù)測階段,均首先引入加法秘密共享技術(shù),使用Share(·)算法將原始數(shù)據(jù)轉(zhuǎn)換為非敏感型數(shù)據(jù),并將拆分后的秘密共享數(shù)據(jù)直接以明文的形式分發(fā)給云服務(wù)器CS0和CS1,即通過明文傳輸?shù)姆椒ūWo(hù)原始數(shù)據(jù),而不是直接將數(shù)據(jù)進(jìn)行加密處理,有效避免了用戶與服務(wù)器之間的密文傳輸,從而既保護(hù)了原始數(shù)據(jù)的隱私,又極大降低了數(shù)據(jù)提供者(或用戶)與服務(wù)器之間的通信開銷。之后在模型訓(xùn)練ParaUpdate(·)和預(yù)測結(jié)果計算CalPred(·)模塊中,借助同態(tài)加密可以對密文直接進(jìn)行處理的特性,結(jié)合加法掩碼技術(shù),利用加法秘密共享值之間的加法和乘法計算特性,將模型參數(shù)更新公式進(jìn)行分解,使用MoSSV協(xié)議保護(hù)計算雙方的私有信息。相較于傳統(tǒng)的同態(tài)加密方案,這種方法不需要在雙云服務(wù)器之間進(jìn)行多維度密文數(shù)據(jù)的傳送,只需要在每一輪迭代過程發(fā)送單一維度的密文向量即可,從而不僅保護(hù)了數(shù)據(jù)和模型參數(shù)的隱私,而且大幅度降低了雙云服務(wù)器之間的通信開銷。
由于在不同的數(shù)據(jù)集上模型收斂的速度不同,本文僅針對一輪迭代訓(xùn)練過程中的時間及通信開銷進(jìn)行方案性能分析。在小批量梯度下降算法中,小批量樣本數(shù)目 |B|以及學(xué)習(xí)率α的選擇是很重要的,|B|太大或者太小都會導(dǎo)致訓(xùn)練時間過長。經(jīng)過大量的實驗驗證,最終本文將小批量樣本數(shù)目 |B|、最大迭代次數(shù)E及學(xué)習(xí)率α分別設(shè)置為10、100和0.1,并設(shè)置模型收斂條件(即損失閾值)為10-5。在本文的方案中,通信開銷主要來自于ParaUpdate(·)階段中的MoSSV 協(xié)議。ct表示一條密文大小,pt表示一條明文大小。那么在計算時,CSi(i=0,1)需要分別將向量θi和盲化的乘積向量的密文形式發(fā)給對方,因此通信開銷為對于的發(fā)送,通信開銷為 |B|×pt。當(dāng)判斷模型是否收斂時,需要計算訓(xùn)練集上的損失函數(shù),計算的過程需要的通信成本,另外CSi(i=0,1) 將損失函數(shù)值Li發(fā)送給對方需要n×pt。綜合以上,一輪迭代訓(xùn)練過程的總通信開銷為文獻(xiàn)[20]和文獻(xiàn)[22]的通信成本主要出現(xiàn)在小批量梯度下降算法的執(zhí)行以及OT協(xié)議中。其中文獻(xiàn)[20]執(zhí)行SGD_Linear 協(xié)議時,CSi(i=0,1)在每輪迭代過程中發(fā)送盲化之后的權(quán)重及誤差向量所需要的通信成本為而使用OT協(xié)議計算乘法三元組時通信量為則每輪迭代過程所需要的總通信成本為pt。在文獻(xiàn)[22]的線性回歸算法迭代訓(xùn)練過程中,CSi(i=0,1)計算預(yù)測值和梯度變化量時的通信成本均為而雙云服務(wù)器使用OT 協(xié)議計算乘法三元組需要通信成本為 |B|dl×pt,故每次迭代總通信成本為,其中表示比a大的最小整數(shù),l表示數(shù)據(jù)長度。
為了證明本文方案的有效性,對基于安全兩方計算的數(shù)據(jù)隱私保護(hù)線性回歸算法進(jìn)行了實驗驗證。實驗平臺配置為Intel?CoreTMi5-4200M、2.50 GHz、8 GB 內(nèi)存的計算機(jī),使用Python 語言進(jìn)行編程,通過兩個類分別模擬數(shù)據(jù)提供者和云服務(wù)器的行為。實驗數(shù)據(jù)選用Python的Scikit-learn庫提供的Boston數(shù)據(jù)集和Diabetes數(shù)據(jù)集。其中Boston 數(shù)據(jù)集涉及美國人口普查局收集的美國馬薩諸塞州波士頓住房價格的有關(guān)信息,包含506條樣本數(shù)據(jù),每條數(shù)據(jù)包含有13個輸入變量和1個輸出變量。Diabetes 數(shù)據(jù)集包含404 條醫(yī)療記錄,每條記錄有10 個輸入變量和1 個輸出變量。本文隨機(jī)選取數(shù)據(jù)集的80%用于訓(xùn)練模型,剩余的20%用于測試模型性能,并對其進(jìn)行歸一化處理。
圖4 展示了預(yù)測數(shù)據(jù)集真實標(biāo)簽值與明文域及密文域的預(yù)測值的對比曲線圖。其中明文狀態(tài)實驗結(jié)果是指由客戶端本地獨自訓(xùn)練模型的情形,曲線圖證明密文下的預(yù)測結(jié)果幾乎與明文下的預(yù)測結(jié)果一致。同時,本文以均方誤差(Mean-Square Error,MSE)、均方根誤差(Root-Mean-Square Error,RMSE)、平均絕對誤差(Mean Absolute Error,MAE)和R平方(R-Squared)作為線性回歸模型的評估指標(biāo)。與明文下的結(jié)果相比,本文方案幾乎實現(xiàn)了相同的預(yù)測性能,這表明本文基于兩方計算的保護(hù)數(shù)據(jù)隱私線性回歸方案是可行的。如表3 所示,Boston數(shù)據(jù)集完成一輪訓(xùn)練平均需要157.912 s,Diabetes數(shù)據(jù)集完成一輪訓(xùn)練需要128.340 s。雖然密文域的訓(xùn)練速度與明文相比慢,但是訓(xùn)練一次得到的模型可以用于多次預(yù)測,因此針對注重隱私性的醫(yī)療、基因、財務(wù)等數(shù)據(jù)而言,密文域的訓(xùn)練是可以接受的。
表3 明文和密文下的實驗結(jié)果對比Table 3 Comparison of implementation results between plaintext and ciphertext
圖4 明文域及密文域預(yù)測結(jié)果與真實標(biāo)簽值的對比圖Fig.4 Comparison of real and predicted label values in plaintext and ciphertext
本文提出了一種基于安全兩方計算的數(shù)據(jù)隱私保護(hù)線性回歸方案。為了在兩方計算過程中不泄露數(shù)據(jù)、模型參數(shù)及中間參數(shù)的信息,本文利用加法同態(tài)加密和加法掩碼保護(hù)兩個云服務(wù)器的秘密共享值,實現(xiàn)了秘密共享值的乘法計算協(xié)議MoSSV。實驗結(jié)果表明,本文方案在保證模型準(zhǔn)確度的情況下,實現(xiàn)了數(shù)據(jù)及模型參數(shù)的隱私保護(hù)。本文提出的方案保證了訓(xùn)練和預(yù)測過程的高效性,并達(dá)到了較高的準(zhǔn)確度。對于下一步的工作,計劃針對邏輯回歸、嶺回歸等回歸算法的數(shù)據(jù)隱私保護(hù)問題展開研究,并在隱私回歸問題的時間及通信成本方面進(jìn)一步優(yōu)化。