秦寶東,楊國(guó)棟,馬宇涵
(1.西安郵電大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,陜西 西安 710121;2.長(zhǎng)安大學(xué) 信息工程學(xué)院,陜西 西安 710064)
近年來(lái),人工智能技術(shù)迎來(lái)了暴發(fā)式發(fā)展。數(shù)據(jù)孤島和數(shù)據(jù)隱私保護(hù)是人工智能技術(shù)最主要的兩個(gè)挑戰(zhàn)[1],一方面,行業(yè)頂尖的巨頭公司壟斷了大量的數(shù)據(jù)信息,小公司很難得到這些數(shù)據(jù)[2],使得企業(yè)與企業(yè)之間形成了一個(gè)個(gè)數(shù)據(jù)孤島,導(dǎo)致企業(yè)間的差距不斷拉大。另一方面,中國(guó)在2017年6月起實(shí)施的《中華人民共和國(guó)網(wǎng)絡(luò)安全法》中指出網(wǎng)絡(luò)運(yùn)營(yíng)者不得泄露、篡改和毀壞其收集的個(gè)人信息,意味著企業(yè)與企業(yè)之間在沒(méi)有用戶授權(quán)的情況下不能交換數(shù)據(jù)。歐盟在2018年5月發(fā)布了《通用數(shù)據(jù)保護(hù)條例》(General Data Protection Regulation,GDPR)以加強(qiáng)對(duì)用戶數(shù)據(jù)的隱私保護(hù)和對(duì)數(shù)據(jù)的安全管理。為了有效應(yīng)對(duì)數(shù)據(jù)孤島和數(shù)據(jù)隱私安全保護(hù)問(wèn)題,聯(lián)邦學(xué)習(xí)(Federated Learning,FL)技術(shù)應(yīng)運(yùn)而生,為人工智能發(fā)展帶來(lái)了新的希望[3]。
聯(lián)邦學(xué)習(xí)是2016年由谷歌提出的一種保護(hù)隱私的機(jī)器學(xué)習(xí)框架[4],其主要思想是在客戶端上進(jìn)行本地模型的訓(xùn)練并將更新后的模型參數(shù)發(fā)送給服務(wù)器,然后服務(wù)器聚合客戶端發(fā)送來(lái)的模型參數(shù),以達(dá)到更新全局模型的效果[5]。由于所有本地模型都是根據(jù)存儲(chǔ)在本地客戶端的數(shù)據(jù)進(jìn)行訓(xùn)練,因此客戶端只需上傳模型參數(shù),無(wú)需上傳本地?cái)?shù)據(jù),就可以得到全局模型[6]。這使得跨企業(yè)的模型訓(xùn)練在保證模型準(zhǔn)確率的同時(shí)保證了數(shù)據(jù)安全[7]。上傳和下載模型參數(shù)的過(guò)程可以看作是通信過(guò)程,在每一輪通信中,只有屬于參與方的客戶端才會(huì)從服務(wù)器下載中心模型參數(shù),并作為本地模型的初始值。一旦本地訓(xùn)練完成,參與的客戶端將更新后的參數(shù)上傳給服務(wù)器,服務(wù)器通過(guò)聚合局部更新參數(shù)更新中心模型參數(shù)[8]。在此過(guò)程中,局部模型可以是任何類型的機(jī)器學(xué)習(xí)模型。然而,隨著機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN)被應(yīng)用于許多復(fù)雜問(wèn)題的解決,包括文本分類、圖像分類和語(yǔ)音識(shí)別等[9]。因此,聯(lián)邦學(xué)習(xí)中廣泛采用DNN作為局部模型,但DNN模型復(fù)雜、節(jié)點(diǎn)眾多,訓(xùn)練時(shí)間一般相對(duì)較長(zhǎng),在服務(wù)器與客戶端通信時(shí),也會(huì)導(dǎo)致通信開(kāi)銷過(guò)大等問(wèn)題[10]。
目前,聯(lián)邦學(xué)習(xí)的隱私保護(hù)受到了廣大研究者們的重視,很多學(xué)者將聯(lián)邦學(xué)習(xí)技術(shù)與秘密分享[11-13]、差分隱私[14-19]、安全多方計(jì)算和同態(tài)加密[20-21]等技術(shù)相結(jié)合,從而得到安全高效的聯(lián)邦學(xué)習(xí)方案。然而,這些方案主要基于同步模型,雖然訓(xùn)練的模型參數(shù)精度較高,但是服務(wù)器與客戶端之間的通信開(kāi)銷也較高。為了應(yīng)對(duì)聯(lián)邦學(xué)習(xí)中DNN模型在更新時(shí)通信開(kāi)銷過(guò)大的問(wèn)題,Chen等[22]提出了一種分層異步更新模型技術(shù)。在異步學(xué)習(xí)過(guò)程中,將DNN的不同層分為淺層和深層,分別對(duì)其進(jìn)行異步更新,提高了中心模型的精度和收斂性[23],該方案在通信代價(jià)和訓(xùn)練精度方面優(yōu)于同步更新模型。為了有效解決異步聯(lián)邦學(xué)習(xí)本地訓(xùn)練速度差異對(duì)聚合參數(shù)造成的負(fù)面影響,陳瑞峰等[24]提出了基于指數(shù)滑動(dòng)平均的聯(lián)邦學(xué)習(xí)方法,但該方案并不能抵御服務(wù)器與客戶端的推理攻擊。高勝等[25]為了解決異步聯(lián)邦學(xué)習(xí)中存在的單點(diǎn)失效與隱私泄露等問(wèn)題,一方面將區(qū)塊鏈技術(shù)與異步聯(lián)邦學(xué)習(xí)結(jié)合起來(lái),保證其可信性,另一方面為了均衡數(shù)據(jù)隱私與模型效用,利用差分隱私中的指數(shù)機(jī)制選擇模型參數(shù),但在準(zhǔn)確率上有明顯下降。準(zhǔn)確率表示聯(lián)邦學(xué)習(xí)模型在收斂時(shí)達(dá)到的精度?;谕侥P偷奈墨I(xiàn)[13]和文獻(xiàn)[20]方案,準(zhǔn)確率分別為95.91%和98.5%,基于異步模型的文獻(xiàn)[24]和文獻(xiàn)[25]方案,準(zhǔn)確率分別為92.74%和91.93%。不難發(fā)現(xiàn),基于同步模型的參數(shù)準(zhǔn)確率基本高于異步模型。因此,基于異步聯(lián)邦學(xué)習(xí)的模型收斂精度有待進(jìn)一步提升。
聯(lián)邦學(xué)習(xí)中攻擊者能夠根據(jù)共享的模型參數(shù)間接獲取用戶的敏感信息。共享的模型參數(shù)是由用戶的隱私數(shù)據(jù)訓(xùn)練得到,也就是說(shuō)隱私數(shù)據(jù)被編碼到模型參數(shù)中。通過(guò)構(gòu)造相應(yīng)的解碼器,可以針對(duì)用戶的模型參數(shù)逆向推理出用戶的隱私數(shù)據(jù),這種攻擊方式稱為推理攻擊。聯(lián)邦學(xué)習(xí)受到的推理攻擊主要包括成員推理攻擊和屬性推理攻擊兩種方式。成員推理攻擊是根據(jù)給定的一條記錄判定是否在訓(xùn)練數(shù)據(jù)中,屬性推理攻擊是獲取數(shù)據(jù)的屬性信息。然而,現(xiàn)有研究[26-28]表明,異步聯(lián)邦學(xué)習(xí)在隱私安全方面仍存在缺陷,模型參數(shù)信息會(huì)泄露用戶的隱私數(shù)據(jù),攻擊者可以通過(guò)客戶端上傳的模型參數(shù)間接推出標(biāo)簽信息和數(shù)據(jù)集的成員信息。Carlini等[29]從訓(xùn)練用戶語(yǔ)言數(shù)據(jù)的遞歸神經(jīng)網(wǎng)絡(luò)中提取出了用戶的敏感數(shù)據(jù),如特定的銀行卡號(hào)。Fredrikson等[30]研究了如何從模型信息中竊取數(shù)據(jù)隱私,并通過(guò)藥量預(yù)測(cè)實(shí)驗(yàn)實(shí)現(xiàn)了對(duì)線性回歸模型的反演攻擊,獲得了患者的敏感信息。
為了提升模型收斂精度并抵抗推理攻擊,擬提出一種基于異步聯(lián)邦學(xué)習(xí)的安全聚合機(jī)制。在異步聯(lián)邦學(xué)習(xí)的基礎(chǔ)上結(jié)合秘密分享和同態(tài)加密等技術(shù),保證異步聯(lián)邦學(xué)習(xí)的安全性,并且在誠(chéng)實(shí)但好奇的服務(wù)器下,對(duì)其客戶端不公開(kāi)的更新參數(shù)進(jìn)行安全聚合,從而得到正確的聚合結(jié)果。
聯(lián)邦平均算法可以被用于DNN中的非凸目標(biāo)函數(shù)[31],適用于任何形式的有限和目標(biāo)函數(shù),其計(jì)算表達(dá)式為
(1)
式中:ω為DNN的權(quán)重參數(shù);n為數(shù)據(jù)點(diǎn)的個(gè)數(shù);fi(ω)=l(xi,yi;ω)表示以ω為參數(shù)在樣本(xi,yi)上的預(yù)測(cè)損失。
假設(shè)在聯(lián)邦學(xué)習(xí)系統(tǒng)中有K個(gè)參與方,Pk是第k個(gè)參與方的數(shù)據(jù)索引集合,第k個(gè)參與方有nk個(gè)數(shù)據(jù)點(diǎn),則第k個(gè)參與方根據(jù)自身樣本數(shù)加權(quán)后的加權(quán)損失函數(shù)為
(2)
通過(guò)加權(quán)每個(gè)參與方的加權(quán)損失函數(shù)和數(shù)據(jù)點(diǎn),得到平均損失函數(shù)
(3)
采用聯(lián)邦平均算法協(xié)同訓(xùn)練各個(gè)服務(wù)器模型和客戶端模型。服務(wù)器執(zhí)行流程如圖1所示。
圖1 服務(wù)器執(zhí)行流程
服務(wù)器具體執(zhí)行步驟如下。
步驟1初始化參數(shù)ω0和T。ω0為初始全局DNN的權(quán)重,T為迭代次數(shù)。
步驟2選擇客戶端集合K,確定整個(gè)聯(lián)邦學(xué)習(xí)系統(tǒng)中有|K|個(gè)客戶端。
步驟3進(jìn)入迭代輪,并隨機(jī)選擇參與方的集合m。m表示所有客戶端集合K中,因主動(dòng)或被動(dòng)退出學(xué)習(xí)后的客戶端集合,且|m|=Max(C|K|,1),C表示每一輪執(zhí)行的客戶端比例。
步驟6判斷模型是否收斂,若模型收斂,即得到最終的全局權(quán)重;若不收斂,進(jìn)入下一輪,直至模型收斂為止。
客戶端執(zhí)行流程如圖2所示。
圖2 客戶端執(zhí)行流程
客戶端具體執(zhí)行步驟如下。
步驟2每個(gè)參與方k把本地的數(shù)據(jù)集Pk劃分為批量大小為B的小批量數(shù)據(jù),總共被劃分為E份。
步驟4在全局模型權(quán)重更新的第t個(gè)回合被選中的第k個(gè)參與方會(huì)計(jì)算gk=Fk(ωt),即在當(dāng)前參數(shù)為ωt的模型下,用本地?cái)?shù)據(jù)得到平均梯度,然后服務(wù)器根據(jù)聚合梯度,其中η為學(xué)習(xí)率。
步驟5服務(wù)器將更新后的模型參數(shù)發(fā)送給各個(gè)參與方。
降低聯(lián)邦學(xué)習(xí)通信成本的最本質(zhì)要求是在不影響中央模型性能的情況下上傳/下載盡可能少的數(shù)據(jù)[32]。在文獻(xiàn)[33]和文獻(xiàn)[34]中,通過(guò)微調(diào)DNN發(fā)現(xiàn)兩個(gè)主要特征:1)DNN的淺層學(xué)習(xí)適用于不同任務(wù)和數(shù)據(jù)集的一般特征,這意味著DNN中相對(duì)較小的一部分參數(shù),即較淺層的參數(shù)代表了不同數(shù)據(jù)集的一般特征。2)DNN的深層學(xué)習(xí)與特定數(shù)據(jù)集的特定特征相關(guān),并且大量參數(shù)關(guān)注特定數(shù)據(jù)的學(xué)習(xí)特征。在聯(lián)邦學(xué)習(xí)中,較淺層的參數(shù)數(shù)量相對(duì)較少,且對(duì)中心模型的性能更關(guān)鍵。相應(yīng)地,較淺層的更新頻率應(yīng)該比較深層的更新頻率高。因此,模型中淺層和深層的參數(shù)可以異步更新,從而減少服務(wù)器和客戶端之間發(fā)送的數(shù)據(jù)量。這種更新方式稱為分層異步模型更新,其主要思想便是通過(guò)對(duì)以上兩個(gè)特征的觀察得出,通過(guò)只更新本地模型的一部分參數(shù),減少上傳或下載的數(shù)據(jù)量,從而降低聯(lián)邦學(xué)習(xí)的通信成本。
將整個(gè)DNN分為淺層學(xué)習(xí)一般特征和深層學(xué)習(xí)特定特征,分別記為ωg和ωs,ωg和ωs的大小分別為Sg和Ss,通常情況下Sg 圖3 DNN淺層與深層 在異步學(xué)習(xí)策略中,淺層ωg的更新和上傳/下載頻率高于深層ωs。假設(shè)整個(gè)聯(lián)邦學(xué)習(xí)過(guò)程被劃分為多個(gè)循環(huán),每個(gè)循環(huán)有F輪模型更新。在每個(gè)循環(huán)中,ωg將在每一輪中更新和傳播,而ωs將只在f輪中更新和傳播,其中f 秘密分享是一種分發(fā)、保存和恢復(fù)秘密的方法,是密碼學(xué)和安全多方計(jì)算中的重要工具[35]。 假設(shè)有n個(gè)參與者,p是一個(gè)大素?cái)?shù),秘密空間與份額空間均為有限域GF(p),則基于該有限域進(jìn)行秘密分發(fā)和秘密重構(gòu)的計(jì)算過(guò)程如下。 1)秘密分發(fā)。隨機(jī)選擇一個(gè)GF(p)上的k-1次多項(xiàng)式f(x)=a0+a1x+…+ak-1xk-1,使得a0=S,在Zp中選擇n個(gè)互不相同的非零元素x1,x2,…,xn,并將這n個(gè)元素發(fā)送給n個(gè)參與者,n個(gè)參與者分別計(jì)算 (4) 式中,f(xi)只有參與者i自己知道。(xi,f(xi))為參與者i的秘密份額。 2)秘密重構(gòu)??紤]到至少需要k個(gè)參與者參與重構(gòu),因此假設(shè)恰好有k個(gè)參與者參與重構(gòu),根據(jù)拉格朗日插值公式 (5) 重構(gòu)出秘密S,即S=f(0)=a0。 如果k-1個(gè)參與者想獲得秘密S,可構(gòu)造出由k-1個(gè)方程構(gòu)成的線性方程組,其中有k個(gè)未知量。對(duì)GF(p)中的任一值S0,設(shè)f(0)=a0,這樣可得第k個(gè)方程,并由拉格朗日插值公式得出f(x)。因此,對(duì)每個(gè)a0∈GF(p)都有一個(gè)唯一的多項(xiàng)式滿足式(4),所以已知k-1個(gè)參與者并不能恢復(fù)出秘密S的任何信息。 Paillier同態(tài)加密是Paillier在1999年提出的,其是半同態(tài)加密算法中的加法同態(tài)加密算法,也是目前最常使用的同態(tài)加密算法之一。該加密算法包括秘鑰生成、加密、解密和加法同態(tài)性等4個(gè)階段。 c=Enc(m,r)=dmrN(modN2) (6) 3)解密階段。密文c對(duì)應(yīng)的明文為 (7) c1c2=Enc(m1,r1)Enc(m2,r2)=dm1+m2(r1r2)N(modN2) (8) 式(8)的解密結(jié)果為m1+m2,即密文的積的解密結(jié)果等于明文的和,即 Dec(c1c2)=Dec(Enc(m1,r1)Enc(m2,r2)(modN2))=m1+m2(modN) (9) 密文乘積時(shí)含有的明文是在指數(shù)上相加的,所以解密后可以得到明文相加的和。該算法的安全性建立在大整數(shù)分解問(wèn)題上,即無(wú)法將大整數(shù)N進(jìn)行分解得到兩個(gè)素?cái)?shù)因子p,q。該算法的正確性由模N2構(gòu)成的有限循環(huán)群的性質(zhì)決定,具體可參考文獻(xiàn)[36]。 基于異步聯(lián)邦學(xué)習(xí)的安全聚合機(jī)制給出了一個(gè)多客戶端異步模型更新的安全聚合方案。在誠(chéng)實(shí)但好奇的服務(wù)器下,允許多個(gè)用戶在參與異步模型更新中進(jìn)行安全的參數(shù)聚合。 每個(gè)客戶端k選擇自己的秘密ak,0和本地?cái)?shù)據(jù)點(diǎn)數(shù)nk,并隨機(jī)選擇秘密參數(shù)ak,j,其中,1≤j≤h-1。根據(jù)所選秘密和秘密參數(shù)分別構(gòu)造多項(xiàng)式 Sk(x)=ak,0+ak,1x+…+ak,h-1xh-1 (10) Nk(x)=nk+ak,1x+…+ak,h-1xh-1 (11) 式中:x為每個(gè)客戶端k的身份標(biāo)識(shí)號(hào)碼(Identity Document,ID);h為門(mén)限值。 系統(tǒng)中K個(gè)客戶端之間相互廣播。即客戶端j向客戶端k發(fā)送Sj(k)和Nj(k),且Sj(k)和Nj(k)只有客戶端k知道[37]??蛻舳酥g進(jìn)行廣播示意圖如圖4所示。 圖4 客戶端之間相互廣播 每個(gè)客戶端k收集其他客戶端j發(fā)送的Sj(k)和Nj(k),可分別計(jì)算得到 (12) (13) S(k)和N(k)即為客戶端k得到的秘密份額Sk和總數(shù)據(jù)點(diǎn)數(shù)份額Nk,且Sk和Nk只有客戶端k知道,對(duì)于其他客戶端是保密的??蛻舳薻將秘密份額Sk和Nk發(fā)送給服務(wù)器。服務(wù)器接收到所有客戶端的Sk和Nk后,根據(jù)客戶端的ID,由拉格朗日插值法恢復(fù)出總秘鑰和總數(shù)據(jù)點(diǎn)數(shù)分別為 (14) (15) 安全聚合機(jī)制分為在客戶端上執(zhí)行和在服務(wù)器上執(zhí)行兩部分。下面將詳細(xì)描述在客戶端上的執(zhí)行過(guò)程,具體流程如圖5所示。 圖5 安全聚合機(jī)制的客戶端執(zhí)行流程 客戶端具體執(zhí)行步驟如下。 步驟6若L被標(biāo)記為‘否’,則直接結(jié)束。 客戶端具體加密步驟如下。 (16) (17) 在服務(wù)器上的執(zhí)行流程如圖6所示。 圖6 安全聚合的服務(wù)器執(zhí)行 服務(wù)器具體執(zhí)行步驟如下。 步驟1服務(wù)器首先對(duì)參數(shù)ω0和T進(jìn)行初始化。ω0為DNN模型的初始權(quán)重參數(shù),經(jīng)過(guò)T輪模型收斂。 步驟2選擇客戶端集合K,確定整個(gè)聯(lián)邦學(xué)習(xí)系統(tǒng)中有|K|個(gè)客戶端,然后進(jìn)入迭代輪。 步驟3隨機(jī)選擇參與方的集合m,m表示所有客戶端集合K中,因主動(dòng)或被動(dòng)退出學(xué)習(xí)后的客戶端集合,且h≤|m|≤K,若|m| 步驟4當(dāng)前輪數(shù)模上R,若結(jié)果屬于Q集合,則把L標(biāo)記為“是”,否則把L標(biāo)記為“否”。R為更新輪數(shù)的分組,Q為每組更新輪數(shù)中指定深層DNN更新的集合。為了便于后續(xù)仿真,取R=15,Q={11,12,13,14,0}。 步驟6每個(gè)客戶端k在本地獨(dú)立地執(zhí)行模型參數(shù)更新,對(duì)更新結(jié)果進(jìn)行加密,并發(fā)送給服務(wù)器。 步驟7當(dāng)屬于m集合的客戶端均更新結(jié)束后,服務(wù)器對(duì)所有K個(gè)客戶端的更新結(jié)果進(jìn)行安全聚合。不屬于m集合的客戶端使用上一輪的更新結(jié)果進(jìn)行安全聚合。 步驟8若L為‘是’,則先對(duì)深層DNN參數(shù)進(jìn)行安全聚合。最后統(tǒng)一對(duì)淺層DNN參數(shù)進(jìn)行安全聚合。 步驟9根據(jù)聚合結(jié)果更新中央模型參數(shù),并進(jìn)入下一輪模型更新,直至模型收斂。 服務(wù)器具體解密步驟如下。 步驟2若L為‘是’,則先對(duì)深層DNN參數(shù)密文進(jìn)行聚合,得到密文的聚合結(jié)果 (18) 若L為‘否’,則直接跳到步驟6,對(duì)淺層DNN參數(shù)密文進(jìn)行聚合。 (19) 步驟4服務(wù)器用所有客戶端秘密份額Sk恢復(fù)出來(lái)的總秘鑰S對(duì)掩蓋的聚合參數(shù)進(jìn)行抵消,得到抵消結(jié)果,即明文的聚合結(jié)果為 (20) 步驟5服務(wù)器對(duì)聚合的結(jié)果除以恢復(fù)出來(lái)的總數(shù)據(jù)點(diǎn)數(shù)N,得到深層DNN參數(shù)的安全聚合結(jié)果 (21) 步驟6對(duì)淺層DNN參數(shù)密文進(jìn)行聚合,聚合方式與深層DNN參數(shù)密文聚合方式相同,服務(wù)器便可得到安全聚合淺層DNN的參數(shù)ωt+1,g。 安全聚合機(jī)制的設(shè)計(jì)目標(biāo)是出于對(duì)異步更新模型的參數(shù)保護(hù),保護(hù)每個(gè)客戶端本地更新的參數(shù)不被其他客戶端以及服務(wù)器知道。在此條件下,服務(wù)器還可以通過(guò)聚合每個(gè)參與方客戶端的密文參數(shù),然后解密得到明文的聚合參數(shù)。在此目標(biāo)前提下,對(duì)基于異步聯(lián)邦學(xué)習(xí)的安全聚合機(jī)制進(jìn)行如下安全性分析。 客戶端k選擇自己的秘密ak,0,并和K個(gè)參與模型更新的客戶端協(xié)商生成屬于自己的秘密份額Sk,然后將秘密份額Sk發(fā)送給服務(wù)器。服務(wù)器使用至少h個(gè)客戶端的ID和Sk恢復(fù)出總秘鑰S,此時(shí)的總密鑰S為K個(gè)客戶端的秘密的和??蛻舳薻使用秘密ak,0對(duì)明文參數(shù)進(jìn)行掩蓋,然后使用Paillier加密,進(jìn)一步對(duì)掩蓋的明文參數(shù)進(jìn)行加密,將加密結(jié)果發(fā)送給服務(wù)器。若攻擊者與服務(wù)器不共謀,則有以下結(jié)論。 定理1假設(shè)攻擊者與服務(wù)器不共謀,則客戶端的更新密文滿足語(yǔ)義安全性。 證明由于Paillier加密方案具有語(yǔ)義安全性,即給定任意兩個(gè)長(zhǎng)度相等的消息m0和m1,任意概率多項(xiàng)式時(shí)間攻擊者區(qū)分密文c0=Enc(m0,r0)和c1=Enc(m1,r1)的概率是可忽略的,所以對(duì)于任意攻擊者(與服務(wù)器不共謀)從客戶端密文中獲取訓(xùn)練參數(shù)的任何信息的概率是可忽略的。 通過(guò)定理1可以看出,對(duì)客戶端而言,可以獲取的信息有Paillier加密的公鑰、每個(gè)客戶端的ID,以及自己的秘密和秘密份額。假設(shè)存在惡意客戶端k,想通過(guò)已有信息分析出其他客戶端訓(xùn)練參數(shù)的明文信息。由于其他客戶端都使用了Paillier加密,所以,即使客戶端k截獲了其他客戶端發(fā)送給服務(wù)器的參數(shù)密文,仍然無(wú)法解密得到其他客戶端的參數(shù)明文。 定理2若攻擊者與服務(wù)器和部分客戶端共謀,并且合謀的客戶端數(shù)量少于門(mén)限值h時(shí),攻擊者無(wú)法獲取其他客戶端訓(xùn)練參數(shù)的任意信息。 證明根據(jù)門(mén)限秘密共享的性質(zhì)可知,對(duì)于一個(gè)秘密S的(h,n)門(mén)限秘密共享方案,當(dāng)參與恢復(fù)秘密的用戶數(shù)量少于門(mén)限值h時(shí),通過(guò)用戶的秘密份額無(wú)法得到S的任何信息。也就是說(shuō),對(duì)于這些用戶而言,S在信息論意義下是隨機(jī)的。因此,對(duì)于任意消息m,掩蓋后的消息m+S滿足一次一密安全性。所以,攻擊者通過(guò)與服務(wù)器和部分客戶端合謀,無(wú)法獲取其他客戶端訓(xùn)練參數(shù)的任何信息。 通過(guò)定理2可以看出,對(duì)于服務(wù)器而言(即攻擊者僅與服務(wù)器合謀),可以獲取的信息有Paillier加密的公鑰和私鑰,每個(gè)客戶端的ID和秘密份額Sk。此時(shí),服務(wù)器通過(guò)Paillier加密的私鑰對(duì)客戶端發(fā)送的參數(shù)密文進(jìn)行解密,解密后只能得到被客戶端秘密ak,0掩蓋后的參數(shù)信息。服務(wù)器通過(guò)每個(gè)客戶端的ID和秘密份額Sk,只能恢復(fù)出所有參與模型更新客戶端的秘密和,并無(wú)法分析出每個(gè)客戶端的具體秘密。只有服務(wù)器將所有參與模型更新的客戶端密文進(jìn)行聚合并解密之后,才能通過(guò)恢復(fù)出的客戶端的秘密的和S對(duì)聚合結(jié)果進(jìn)行抵消,得到正確的聚合結(jié)果明文。 如果部分惡意客戶端與服務(wù)器進(jìn)行合謀攻擊,例如服務(wù)器把自己的Paillier私鑰發(fā)送給部分惡意客戶端,惡意客戶端用服務(wù)器發(fā)送的私鑰對(duì)截獲的其他客戶端參數(shù)密文進(jìn)行解密,解密后只能得到其他客戶端用各自秘密掩蓋后的參數(shù)信息。由于惡意客戶端的數(shù)量少于門(mén)限值,所以惡意客戶端無(wú)法獲得其他客戶端的秘密,從而無(wú)法得到其他客戶端的參數(shù)明文。同理,如果部分惡意客戶端把自己的秘密發(fā)送給服務(wù)器,服務(wù)器用恢復(fù)出來(lái)的秘密和把部分惡意客戶端的秘密剔除,此時(shí)服務(wù)器仍然無(wú)法分析出其他客戶端的秘密。因此,服務(wù)器也無(wú)法得到其他客戶端的參數(shù)明文。 根據(jù)定理1和定理2,盡管服務(wù)器可以獲取客戶端的訓(xùn)練參數(shù)之和,但是無(wú)法獲取單個(gè)客戶端的訓(xùn)練參數(shù),從而能夠抵抗服務(wù)器的推理攻擊。也就是說(shuō),該機(jī)制保證了服務(wù)器以及部分惡意客戶端無(wú)法得到每個(gè)合法客戶端的明文參數(shù)的條件下,服務(wù)器依然能夠從聚合的密文中恢復(fù)出正確的聚合參數(shù)。 下面主要討論基于異步聯(lián)邦學(xué)習(xí)的安全聚合機(jī)制的計(jì)算效率。實(shí)驗(yàn)中所使用的設(shè)備配置為Intel(R) 酷睿(TM) i7-6700HQ CPU @ 2.60 GHz。由于資源有限,實(shí)驗(yàn)使用了多線程的思想,即在同一臺(tái)設(shè)備上創(chuàng)建多個(gè)線程模擬多個(gè)客戶端與服務(wù)器之間的交互。 實(shí)驗(yàn)所使用的數(shù)據(jù)集從MNIST(Mixed National Institute of Standards and Technology)數(shù)據(jù)集中選擇,MNIST數(shù)據(jù)集[38]包含60 000個(gè)訓(xùn)練數(shù)據(jù)樣本和10 000個(gè)測(cè)試數(shù)據(jù)樣本。為了模擬客戶端在非獨(dú)立同分布的數(shù)據(jù)集上訓(xùn)練的效果,首先將數(shù)據(jù)集按照數(shù)字標(biāo)簽排序并分為n份,然后通過(guò)調(diào)整用戶之間的數(shù)據(jù)類型,得到非獨(dú)立同分布的數(shù)據(jù)集。 實(shí)驗(yàn)中,客戶端的總數(shù)為K,參與更新的最少客戶端數(shù)量為h,K和h直接影響學(xué)習(xí)的效果。更新輪數(shù)的分組為R,每組更新輪數(shù)中指定深層DNN更新的集合為Q,R和Q直接影響異步模型更新的收斂性和精度。p、q和N的大小直接影響加密耗時(shí)。設(shè)置客戶端數(shù)量為20個(gè),每輪至少需要3個(gè)客戶端參與更新,模型更新輪數(shù)以15輪分為一組,每組更新輪數(shù)中指定深層DNN更新的集合為{11,12,13,14,0},用于Paillier加密的大素?cái)?shù)p和q均取512 bit,模N為1 024 bit。系統(tǒng)參數(shù)初始化如表1所示。 表1 系統(tǒng)參數(shù)初始化 為了分析異步聯(lián)邦學(xué)習(xí)和同步聯(lián)邦學(xué)習(xí)的準(zhǔn)確率和效率,分別對(duì)異步模型更新和同步模型更新進(jìn)行了仿真實(shí)驗(yàn),結(jié)果如圖7所示,其中每迭代一次意味著模型參數(shù)更新一次。 圖7 兩種模型準(zhǔn)確率對(duì)比結(jié)果 從圖7中可以看出,兩種模型更新的準(zhǔn)確率都隨著迭代次數(shù)的增多而增加,異步模型更新在迭代30次之后趨于收斂,同步模型更新在迭代70次之后趨于收斂,趨于收斂時(shí)的準(zhǔn)確率均達(dá)到95%以上。這說(shuō)明異步聯(lián)邦學(xué)習(xí)在效率方面優(yōu)于同步聯(lián)邦學(xué)習(xí),而且準(zhǔn)確率也與同步聯(lián)邦學(xué)習(xí)相當(dāng)。所提安全聚合機(jī)制基于異步聯(lián)邦學(xué)習(xí),因此在保證學(xué)習(xí)效率的基礎(chǔ)上又保證了安全性。 客戶端在模型訓(xùn)練的每輪都要獨(dú)立的對(duì)訓(xùn)練結(jié)果進(jìn)行加密。因此在實(shí)驗(yàn)中,模型更新一輪,即測(cè)試一次加密耗時(shí)。由于每個(gè)客戶端獨(dú)立訓(xùn)練,所以取本輪客戶端中加密耗時(shí)最長(zhǎng)的值,作為客戶端本輪的加密耗時(shí),實(shí)驗(yàn)結(jié)果如圖8所示。 圖8 客戶端加密耗時(shí) 異步模型更新的每15輪中,前10輪只對(duì)淺層DNN權(quán)重參數(shù)加密,而后5輪既對(duì)淺層DNN權(quán)重參數(shù)加密,又對(duì)深層DNN權(quán)重參數(shù)加密。因此可以分析出每15輪更新,前10輪加密耗時(shí)較短,后5輪加密耗時(shí)較長(zhǎng)。由圖8可以看出,前10輪加密耗時(shí)大約在170 ms左右,后5輪加密耗時(shí)大約在350 ms左右,客戶端每輪加密的平均耗時(shí)為226 ms。 同樣地,模型每更新一輪,即測(cè)試一次解密耗時(shí)。服務(wù)器接收到所有參與訓(xùn)練客戶端的上傳密文后,開(kāi)始進(jìn)行安全的聚合操作,并測(cè)試對(duì)聚合結(jié)果進(jìn)行解密所消耗的時(shí)間,實(shí)驗(yàn)結(jié)果如圖9所示。 圖9 服務(wù)器解密耗時(shí) 參與模型訓(xùn)練的客戶端,在異步模型更新的每15輪中,前10輪只發(fā)送淺層DNN的權(quán)重參數(shù)密文,后5輪既發(fā)送淺層DNN的權(quán)重參數(shù)密文,也發(fā)送深層DNN的權(quán)重參數(shù)密文。因此,服務(wù)器在前10輪只需要對(duì)淺層DNN的權(quán)重密文進(jìn)行解密,在后5輪要對(duì)淺層DNN權(quán)重密文和深層DNN權(quán)重密文進(jìn)行解密,可以分析出每15輪更新,前10輪的解密耗時(shí)較短,后5輪解密耗時(shí)較長(zhǎng)。由圖9可以看出,前10輪解密耗時(shí)大約在220 ms左右,后5輪解密耗時(shí)大約在560 ms左右,服務(wù)器每輪解密的平均耗時(shí)為363 ms。 對(duì)異步模型更新的安全聚合,不可避免地增加了時(shí)間消耗,但是異步模型更新的最大優(yōu)點(diǎn)就是降低服務(wù)器與客戶端之間的通信開(kāi)銷,極大地提升了學(xué)習(xí)效率。通過(guò)實(shí)驗(yàn)仿真可以看出,加密和解密的平均耗時(shí)基本控制在0.2~0.4 s。因此,在較小的時(shí)間開(kāi)銷內(nèi),基于異步聯(lián)邦學(xué)習(xí)的安全聚合機(jī)制換取了模型安全的聚合。 針對(duì)異步聯(lián)邦學(xué)習(xí)中的推理攻擊,利用秘密分享和Paillier同態(tài)加密等技術(shù),提出多個(gè)客戶端模型參數(shù)的安全更新與聚合方法,從而實(shí)現(xiàn)分層異步聯(lián)邦學(xué)習(xí)的安全聚合機(jī)制,確保了客戶端在不公開(kāi)模型更新參數(shù)的情況下,服務(wù)器能夠進(jìn)行安全聚合,并得到了正確的聚合結(jié)果。安全性分析證明,該機(jī)制能夠有效抵御來(lái)自服務(wù)器和用戶的攻擊。實(shí)驗(yàn)結(jié)果表明,該機(jī)制在學(xué)習(xí)效率和準(zhǔn)確率方面表現(xiàn)優(yōu)異,能夠在較小的時(shí)間開(kāi)銷內(nèi),換取模型安全的聚合。1.3 秘密分享
1.4 Paillier同態(tài)加密
2 安全聚合機(jī)制
2.1 秘密協(xié)商
2.2 客戶端執(zhí)行
2.3 服務(wù)器執(zhí)行
3 安全性及效率分析
3.1 安全性分析
3.2 效率分析
4 結(jié)語(yǔ)