沈文旭,張繼軍,毛 重
(空軍航空大學 教研保障中心,長春 130022)
由于用于模型訓練的樣本數量越多、質量越高,模型的性能越強,因此多個數據擁有方希望共同訓練模型的需求日趨強烈.在這種需求下,由于訓練的樣本來自多個數據擁有者,因此數據的隱私保護問題至關重要[1].如何在多個數據方間安全、可靠、高效地開展機器學習建模任務,已逐漸成為該領域的研究熱點[2-3].目前,該類研究統稱為隱私保護機器學習(privacy-preserving machine learning,PPML).
邏輯回歸是目前常用的一種機器學習算法,常用于醫療輔助診斷和金融分析等領域.當多個數據方想共同訓練一個邏輯回歸模型時,可借助安全多方計算(secure multi-party computation,MPC)[4-5]的相關技術完成聯合建模工作.安全多方計算能保證輸入隱私性與計算的正確性,是用于聯合建模的一種潛在技術.近年來,由于混淆電路(garbled circuits,GC)與不經意傳輸(oblivious transfer,OT)的快速發展,使得在實際問題中應用安全多方計算成為可能.
基于MPC的安全推理框架可在保證模型參數與客戶輸入數據隱私性的前提下,客戶獲得模型的預測結果.在該類框架中,服務器與客戶端之間運行安全多方計算的相關協議,完成模型的預測過程.CryptoNets[6]是一種基于同態加密(homomorphic encryption,HE)的隱私保護方案,其使用平方函數近似ReLU和Sigmoid函數,影響了模型的準確性.GAZELLE[7]優化了同態計算,并使用加法同態加密完成部分計算.Delphi[8]設置了一個預處理階段,在該階段集中進行GAZELLE中繁重的同態加密計算.CrypTFlow2[9]使用不經意傳輸實現比較運算,解決了已有工作在實現ReLU時通信開銷較大的弊端.MiniONN[10]是一個混合的框架,其采用了秘密共享(secret sharing,SS)、同態加密和混淆電路的相關技術.Chameleon[11]引入了一個可信第三方在離線階段輔助生成乘法三元組,極大減少了離線階段所需的時間.
基于MPC的安全訓練框架至少需要兩個服務器(計算方)參與.在訓練開始前,參與方將隱私數據以秘密共享的形式發送至各服務器,之后服務器間運行MPC的相關協議完成模型的訓練過程.SecureML[12]是基于兩方安全計算(secure two-party computation,2PC)的框架.該框架在滿足半誠實安全模型下,允許多個參與方共同訓練線性回歸、邏輯回歸和神經網絡模型.與SecureML類似,QUOTIENT[13]也是半誠實安全模型下的框架,其將模型的參數表示為三元組{-1,1,0},并使用OT完成相應的乘法計算.ABY3[14]是基于三方安全計算(secure three-party computation,3PC)的PPML框架,在三方的情況下,傳統的混淆電路無法部署,因此ABY3設計了新的混淆電路協議.SecureNN[15]是惡意敵手安全模型下的PPML框架,其使用秘密共享技術完成神經網絡中的所有計算.
目前,基于MPC的隱私保護方案面臨以下挑戰: 在Beaver協議中[16],使用預先生成的乘法三元組計算乘法,而生成乘法三元組消耗的時間較長; 對于邏輯回歸算法,在安全多方計算中計算Sigmoid函數與Softmax函數需要消耗大量時間; 在邏輯回歸算法中,涉及到矩陣間的計算,傳統方案未采取特殊的技術加速該過程.
為更高效、準確、安全地完成邏輯回歸模型的聯合建模任務,本文提出一種基于兩方安全計算的方案.該方案采用Beaver協議計算乘法,因此需要在離線階段提前生成乘法三元組.本文優化了現有的離線階段協議: 對于基于不經意傳輸的離線階段,提出一種新的壓縮方法,以加快該方案的執行效率; 對于基于同態加密的離線階段,本文將其向量化,以提升計算效率.對于邏輯回歸模型中的Sigmoid函數和Softmax函數,由于其在安全多方計算中難以計算,因此在計算過程中采用近似函數進行代替,使用線性函數代替Sigmoid函數和Softmax函數中的指數函數.由于邏輯回歸算法中涉及矩陣與向量間的計算,所以本文將所有的協議向量化,以提升聯合建模過程中的計算效率.此外,為獲得更快的計算速度,本文使用CUDA(compute unified device architecture)加速所有的計算.

在MPC中,各參與方可在保證自己輸入不泄露的前提下,進行一個約定函數的計算.在協議運行過程中,即使一方或多方被控制、攻擊,MPC仍能保證各方輸入數據的隱私性.秘密共享[18-19]的主要思想是將數據拆分為n部分,每部分由不同的參與方保管.PPML常用的幾種秘密共享如下.

作為最終結果.乘法三元組不依賴任何數據,所以可在計算開始前提前生成三元組,該過程稱為離線階段.



GC是為兩方安全計算服務的技術,參與方有混淆器與評估器.計算時首先將目標函數轉換為布爾電路的形式,由單個門開始,加密整個電路.在加密時,混淆器為每個門生成混淆表.評估器與混淆器間運行不經意傳輸協議,評估器得到對應的秘鑰后,可以正確解密混淆表的其中一項,并將該項作為結果.
OT[20]是密碼學的基本協議源語之一,最常用的為1-out-of-2 OT,其中包括發送方與接收方兩種角色.發送方有一對消息m0和m1,接收方持有一個選擇比特b,協議運行結束后接收方獲得消息mb.在整個過程中,發送方無法得知b值,同時接收方也無法獲得任何關于m1-b的信息.本文使用(⊥;mb)←OT(m0,m1;b)表示該過程.
本文提出的基于兩方安全計算的隱私保護邏輯回歸方案如圖1所示.在該方案中,所有運算均由兩個非共謀的計算服務器Server0(S0)和Server1(S1)完成.計算服務器可由參與建模任務的數據擁有方擔任,也可由獨立的第三方提供.

圖1 基于兩方安全計算的隱私保護邏輯回歸方案Fig.1 Privacy-preserving logistic regression scheme based on two-party secure computation
在建模任務開始前,需要完成兩項預處理工作: 1) 數據預處理,在該階段所有的參與方作為客戶端將自身的數據拆分為算術秘密共享的形式,然后將拆分后的數據上傳至S0和S1,所有的參與方不必再參與后續的計算過程; 2) 完成離線階段的計算,生成乘法三元組,為后續的計算提供支持.當所有的預處理工作完成后,S0和S1開始執行建模任務.在該過程中,S0和S1之間運行相應的兩方安全計算協議,同步完成所有計算.
在安全多方計算中,根據參與計算方的行為可將其分為以下幾類: 誠實的協議參與者、半誠實的協議參與者和惡意參與者.在實際應用中,主要存在半誠實協議參與者和惡意參與者,因此設計了半誠實模型和惡意敵手模型[21-23].
在半誠實模型中,參與者嚴格遵守協議的執行流程.參與者掌握自身的輸入信息,并且會保留協議運行過程中與自身有關的中間數據.該模型中的參與者可能會根據自身的輸入及中間數據推導其他的額外信息,但攻擊者不會主動攻擊或者聯合其他參與方破壞協議的執行.在惡意敵手模型中,參與者掌握自身的輸入信息和協議運行過程中與自身有關的中間數據,并且可能會嘗試監聽其他信道上的信息.在該模型中,攻擊者不一定遵守協議的運行規則,攻擊者可能會通過修改輸入數據,或者惡意篡改中間計算結果等方法分析、竊取其他參與方的數據; 或者提前終止并拒絕參加協議的執行以迫使協議終止.
本文對現有離線階段的兩種方案進行了相應的改進,以提高計算效率.對在安全多方計算中難以計算的激活函數,本文使用近似函數進行代替.最終,本文構造了基于兩方安全計算隱私保護邏輯方案,該方案能高效、安全地訓練模型,并且滿足半誠實模型.
由于本文用Beaver協議計算乘法,因此需要一個單獨的離線階段生成所需的乘法三元組.目前的主流方案有基于同態加密和不經意傳輸兩種.
2.1.1 基于HE的離線階段
為加快模型的訓練速度,一般采用mini-batch技術.假設輸入為X|B|×d(每批數據的樣本數量為|B|,每個樣本的特征個數為d),模型的參數矩陣為Wd×n.在邏輯回歸算法中,需計算X|B|×d×Wd×n,借助向量化后的三元組〈Z|B|×n〉=〈U|B|×d〉×〈Vd×n〉可完成計算.首先Si計算〈E〉i=〈X〉i-〈U〉i和〈F〉i=〈W〉i-〈V〉i,然后執行E=Rec(〈E〉)和F=Rec(〈F〉),最后Si計算
-i·E×F+〈X〉i×F+E×〈W〉i+〈Z〉i.
在生成三元組時,需計算
〈Z〉=〈U〉×〈V〉=(〈U〉0+〈U〉1)×(〈V〉0+〈V〉1),
關鍵是計算其中的交叉項〈U〉0×〈V〉1和〈U〉1×〈V〉0,〈U〉i×〈V〉i可由Si在本地進行計算.下面以計算〈U〉0×〈V〉1為例(〈U〉1×〈V〉0的計算可采用相同方法)介紹基于HE的離線階段方案.

算法1基于HE的離線階段算法.
輸入: 矩陣〈U|B|×d〉和〈Vd×n〉;
輸出: 〈Z|B|×n〉滿足〈Z|B|×n〉=〈U|B|×d〉×〈Vd×n〉;
步驟1) fori=1,2,…,ddo
步驟2) forj=1,2,…,ndo
步驟3)S1對〈V〉1的每項vi,j進行加密Enc(vi,j),并將加密結果發送至S0;
步驟4) fori=1,2,…,|B| do
步驟5) forj=1,2,…,ndo
步驟6)S0選取隨機數ri,j;

步驟8)S1解密收到的zi,j,并將加密結果作為輸出〈zi,j〉1=Dec(zi,j);
步驟9)S0將ri,j作為輸出〈zi,j〉0=(-ri,j).
對于三元組〈Z|B|×n〉=〈U|B|×d〉×〈Vd×n〉,如果使用Paillier同態加密算法直接計算,若不采用算法1中的方式,則在計算每一項〈ui,j〉0·〈vj,i〉1時通信量為2·|N|(N為密文大小),生成〈Z|B|×n〉=〈U|B|×d〉×〈Vd×n〉的通信量為4·|B|·d·n·|N|.而使用算法1的通信量為2·(|B|+d)·n·|N|,減少了計算過程中的通信量.
由于采用Paillier算法,在算法1中存在大量的模冪運算,使用CPU計算非常耗時.因此,本文使用CUDA加速算法1中的所有計算.實驗結果表明,使用CUDA加速后,計算效率約提升了10倍.
2.1.2 基于OT的離線階段

為提升效率,一般采用OT擴展協議.在OT擴展協議中,每個消息會被一個隨機函數的輸出掩蓋(隨機函數的輸出至少為128比特).常用的隨機函數包括SHA256或者AES.對于〈U〉0×〈V〉1,其中〈V〉1的某項vi,j會被〈U〉0中的uk,j(k=1,2,…,|B|)相乘,該情形可簡化為A·b(A=(a1,a2,…,an),n=|B|),ai和b均為l比特的整數.在計算A·b時,b[k]都將作為計算ai·b(i=1,2,…,n)時第k次OT的選擇比特,而ai·2k的低k位均為0,所以在執行OT時,只需考慮傳輸ai·2k的非零位.因此,對于消息
M0=(r1·2k,r2·2k,…,rn·2k),
M1=((ai+r1)·2k,(a2+r2)·2k,…,(an+rn)·2k),

算法2基于OT的離線階段算法
輸入:A=(a1,a2,…,an),b;
輸出: 〈Z〉滿足〈zi〉=ai·b;
步驟1) fork=1,2,…,l-1 do
步驟2)S0選擇隨機序列(r1,r2,…,rn);
步驟3)S0計算M0=(r1·2k,r2·2k,…,rn·2k)和
M1=((a1+r1)·2k,(a2+r2)·2k,…,(an+rn)·2k);

步驟5) fori=1,2,…,ndo

步驟7)S0和S1執行OT協議(⊥;m0)←OT(m0,m1;b[k]);
步驟8)S0計算〈zi〉0=〈zi〉0-ri·2k;
步驟9)S1計算〈zi〉1=〈zi〉1+b[k]·(ai+ri)·2k+ri·2k.

圖2 Sigmoid函數與近似線性函數Fig.2 Sigmoid function and approximate linear function



算法3隱私保護邏輯回歸算法.
輸入: 樣本數據〈XN×d〉,標簽〈YN×1〉,模型參數〈Wd×1〉;
輸出:Wd×1;
步驟1)S0和S1將選取合適的|B|,將〈XN×d〉和〈YN×1〉分為t批數據,每批數據的樣本量為|B|;
步驟2) fori=1,2,…,tdo

步驟4) forj=1,2,…,|B| do

步驟6)S0選取隨機數r1,生成
和

步驟7)S1選取隨機數r2,生成
和




步驟11)S0和S1使用預先生成的三元組計算〈W*〉=〈X*〉·(Y-Y*);

步驟12)W=Rec(〈W〉).


假設一個潛在的半誠實敵手能控制算法3中的S0或S1以及m個參與方(m 算法3中的乘法三元組在離線階段生成,與數據無關,并且是隨機的.此外,算法3中所有發送、接收的數據也是隨機的,因此敵手在現實世界與理想世界的視圖是不可區分的.對于算法3中使用的GC和OT,其本身的安全性已有相應的證明,故略.綜上可知,算法3滿足半誠實模型. 本文用C++實現隱私保護邏輯回歸: 矩陣間的計算用libtorch實現(PyTorch的C++版本,支持CUDA加速); GC和OT基于emp-toolkit(https://github.com/emp-toolkit)實現; Paillier同態加密基于cuda-fixnum(https://github.com/unzvfu/cuda-fixnum)實現. 實驗使用的機器配置為: GTX1080Ti GPU,64 GB RAM.通過設置網絡延遲和速率的方式,模擬廣域網(LAN)和局域網(WAN)的環境.對于局域網,延遲設為0.05 ms,速度為300 MB/s; 對于廣域網,平均延遲為50 ms,速度為25 MB/s.默認情況下學習率設為2-4,批大小設為|B|=128,ld=12. 本文采用的數據集為MNIST和GISETTE.MNIST是一個包含數字0~9的手寫數據集,其中每個樣本為28×28像素的圖片,每個像素的值為0~255.整個數據集共有60 000張圖片用于訓練,10 000張圖片用于驗證.GISETTE則是由數據集MNIST構建的,其只包括數字4和9[29]. 本文已優化了基于HE和OT的兩種離線階段方案,將其向量化,并使用CUDA加速計算.表1列出了本文的兩種離線方案效率,其中的數據表示在訓練總樣本數(N)和每個樣本特征數量(d)確定的情況下,生成算法3中需要三元組數據的耗時.由表1可見: 對于基于HE的離線階段,與已有的工作[12]相比,本文算法的效率約提升10倍; 對于基于OT的離線階段,與已有的工作[10,18]相比,在LAN中運行時,本文的效率提升了2~4倍; 當在LAN中運行時,基于HE的離線階段比基于OT的離線階段約慢了10倍; 當在WAN中運行時,基于 HE的離線階段則比基于OT的離線階段約快了6倍.因此,應根據部署的環境,在兩種方案中合理地進行選擇. 表1 離線階段效率 表2列出了用算法3訓練用于二分類任務的邏輯回歸模型的性能.用MNIST訓練用于二分類任務的邏輯回歸模型時,將非零數字的樣本標簽設為1.訓練的目標為識別數據集中的數字0和其他數字.在明文數據集上進行訓練時,模型的準確率能達到99.1%.用算法3在2×106個樣本上完成訓練后,模型的準確率可達到98.6%.在LAN中運行的時間為267 s(不包括離線階段所需的時間),在WAN中運行的時間為1 600 s.在數據集GISETTE上使用明文數據訓練邏輯回歸模型時,最終模型的準確率為98%.而使用算法3訓練的情況下,設ld=10時,模型的準確率為86%,設ld=16時,模型的準確率為98%,與在明文數據上進行訓練一致.此時訓練的總樣本數量為2×106個,訓練時間為275 s. 表2 用算法3訓練邏輯回歸模型的性能 圖3 不同ld設置下,在數據集MNIST 上訓練時模型的準確率Fig.3 Accuracy of models trained on MNIST dataset under different ld settings 而在數據集MNIST上訓練用于多分類任務的邏輯回歸模型時,模型的準確率達到89%.圖3為第一輪訓練時,在每批數據上迭代訓練后模型的準確率變化趨勢.由圖3可見,當ld=8時,模型的準確率已經與在明文上進行訓練的準確率相當. 綜上所述,本文提出了一個基于兩方安全計算的隱私保護邏輯回歸的訓練方案,可允許多個參與方在不泄露自身隱私數據的前提下,共同完成邏輯回歸模型的訓練任務.首先優化了基于HE和OT的離線階段,并將其向量化; 然后構造了MPC友好的近似函數,代替原有激活函數參和計算,提升了計算效率; 最后用CUDA加速本地的矩陣運算和同態加密的計算.實驗結果表明,本文方案可以高效、安全地完成聯合建模任務.3 性能評價


