方晨,郭淵博,王一豐,胡永進(jìn),馬佳利,張晗,胡陽(yáng)陽(yáng)
(1.信息工程大學(xué)密碼工程學(xué)院,河南 鄭州 450001;2.鄭州大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,河南 鄭州 450003;3.加利福尼亞大學(xué)河濱分校,河濱 CA92521)
邊緣計(jì)算是一種將計(jì)算、存儲(chǔ)資源從云平臺(tái)遷移到網(wǎng)絡(luò)邊緣的分布式服務(wù)架構(gòu),它由多個(gè)位于云服務(wù)器和本地設(shè)備間的邊緣節(jié)點(diǎn)協(xié)同完成數(shù)據(jù)分析任務(wù)。由于其更靠近本地設(shè)備,因此能夠提供時(shí)延更小的服務(wù),如自動(dòng)駕駛、虛擬現(xiàn)實(shí)、智慧城市等[1]。但是由于邊緣節(jié)點(diǎn)通常位于不可信環(huán)境中,也面臨各種安全和隱私威脅。如本地設(shè)備可能添加投毒樣本或者將低質(zhì)量數(shù)據(jù)發(fā)送給邊緣節(jié)點(diǎn),邊緣節(jié)點(diǎn)可能推測(cè)本地設(shè)備的數(shù)據(jù)隱私,或者篡改計(jì)算結(jié)果來(lái)破壞協(xié)議的執(zhí)行。因此設(shè)計(jì)邊緣計(jì)算隱私保護(hù)的新方法需要考慮數(shù)據(jù)隱私性、計(jì)算結(jié)果正確性和數(shù)據(jù)處理過(guò)程可審計(jì)性3 個(gè)方面。
聯(lián)邦學(xué)習(xí)[2]作為一種新型的分布式機(jī)器學(xué)習(xí)框架,可以聯(lián)合多個(gè)本地設(shè)備在僅共享模型參數(shù)的前提下協(xié)同訓(xùn)練機(jī)器學(xué)習(xí)模型,能夠有效避免本地設(shè)備向邊緣節(jié)點(diǎn)直接傳輸數(shù)據(jù)造成的隱私泄露問(wèn)題。而區(qū)塊鏈作為一種分布式賬本,以透明的方式記錄數(shù)據(jù)處理過(guò)程,且具有去中心化、可追溯以及難以篡改等一系列特性[3],可以滿(mǎn)足邊緣計(jì)算的可審計(jì)性需求。它與聯(lián)邦學(xué)習(xí)相結(jié)合,可以代替中央服務(wù)器執(zhí)行模型參數(shù)聚合,避免單點(diǎn)故障攻擊問(wèn)題。鑒于以上優(yōu)點(diǎn),近兩年陸續(xù)有學(xué)者基于區(qū)塊鏈和聯(lián)邦學(xué)習(xí)對(duì)邊緣計(jì)算的隱私保護(hù)展開(kāi)研究。
Kim 等[4]基于區(qū)塊鏈框架提出了一種應(yīng)用于設(shè)備端的聯(lián)邦學(xué)習(xí)方法,將每輪迭代的本地梯度經(jīng)過(guò)驗(yàn)證和共識(shí)后存儲(chǔ)在區(qū)塊中,并分析了端到端時(shí)延和最優(yōu)的區(qū)塊生成速率。Qu 等[5]通過(guò)結(jié)合區(qū)塊鏈和聯(lián)邦學(xué)習(xí),為工業(yè)4.0 中的認(rèn)知計(jì)算技術(shù)開(kāi)發(fā)了一種去中心化數(shù)據(jù)平臺(tái),解決數(shù)據(jù)孤島和激勵(lì)機(jī)制的問(wèn)題。Wang 等[6]提出了支持異構(gòu)模型的區(qū)塊鏈聯(lián)邦學(xué)習(xí)系統(tǒng),并設(shè)計(jì)了線(xiàn)下和線(xiàn)上2 種挖掘方法抵抗拜占庭攻擊。但是上述方法均使用工作量證明(PoW,proof of work)作為共識(shí)算法,高強(qiáng)度的計(jì)算消耗使其難以適用于計(jì)算資源有限且寶貴的邊緣計(jì)算。為此,Lu 等[7]采用輕量級(jí)的委托權(quán)益證明(DPoS,delegated proof of stake)作為共識(shí)算法,并針對(duì)車(chē)聯(lián)網(wǎng)中數(shù)據(jù)共享的安全需求和效率提出了混合區(qū)塊鏈結(jié)構(gòu)。上述方法均將模型參數(shù)作為交易記錄存儲(chǔ)在區(qū)塊鏈中,這雖然保證了訓(xùn)練過(guò)程的可審計(jì)性,但是一旦攻擊者獲取區(qū)塊鏈內(nèi)容,依然可以發(fā)起最新的模型提取攻擊和模型逆向攻擊,從模型參數(shù)中推斷出訓(xùn)練數(shù)據(jù)信息。為了進(jìn)一步提高隱私安全性,Qu 等[8]設(shè)計(jì)了一種基于數(shù)字簽名和加密協(xié)議的混合身份機(jī)制,以防止攻擊者竊取區(qū)塊鏈中存儲(chǔ)的數(shù)據(jù)信息。但是當(dāng)聯(lián)邦學(xué)習(xí)迭代次數(shù)過(guò)多時(shí),這種機(jī)制將消耗大量的計(jì)算開(kāi)銷(xiāo),難以部署于本地設(shè)備中。Zhao 等[9]為了保護(hù)家居場(chǎng)景中用戶(hù)的隱私數(shù)據(jù),在卷積層提取的特征中加入差分隱私噪聲后再上傳至區(qū)塊鏈。Lu 等[10]和Qi 等[11]將本地差分隱私技術(shù)應(yīng)用于區(qū)塊鏈聯(lián)邦學(xué)習(xí)中,通過(guò)在原始數(shù)據(jù)上添加噪聲擾動(dòng)以保護(hù)工業(yè)互聯(lián)網(wǎng)和智慧交通領(lǐng)域的數(shù)據(jù)隱私。但是在帶噪數(shù)據(jù)上訓(xùn)練得到的聯(lián)邦學(xué)習(xí)模型普遍存在準(zhǔn)確性較低的問(wèn)題。另外,如果部分參與訓(xùn)練的設(shè)備的數(shù)據(jù)集質(zhì)量過(guò)低或者被攻擊者發(fā)起中毒攻擊,則其上傳的模型參數(shù)將導(dǎo)致聯(lián)邦學(xué)習(xí)偏離正常的訓(xùn)練方向,這將給邊緣計(jì)算應(yīng)用帶來(lái)極大的安全隱患。Liu 等[12]在執(zhí)行模型聚合前利用包含驗(yàn)證數(shù)據(jù)集的智能合約自動(dòng)評(píng)估設(shè)備上傳的更新,以檢測(cè)是否存在中毒攻擊。Short 等[13]基于驗(yàn)證數(shù)據(jù)集測(cè)試加入設(shè)備上傳的參數(shù)后模型準(zhǔn)確性是否有所提升,進(jìn)而篩選出可靠的更新。但是這2 種方法均需假設(shè)提前擁有一個(gè)與訓(xùn)練數(shù)據(jù)集同分布的驗(yàn)證測(cè)試集,這會(huì)增加許多敏感信息領(lǐng)域如醫(yī)療等的隱私泄露風(fēng)險(xiǎn)。
綜上所述,當(dāng)前在邊緣計(jì)算中應(yīng)用區(qū)塊鏈和聯(lián)邦學(xué)習(xí)方法存在以下幾個(gè)問(wèn)題。
1) 區(qū)塊鏈賬本的公開(kāi)透明性雖然保證了聯(lián)邦訓(xùn)練的可審計(jì)性,但是其以明文形式存儲(chǔ)的模型參數(shù)會(huì)被攻擊者利用推測(cè)本地設(shè)備的數(shù)據(jù)隱私。
2) 本地設(shè)備的數(shù)據(jù)集中一旦存在投毒樣本就會(huì)威脅聯(lián)邦學(xué)習(xí)的正確性。
3) 本地設(shè)備的資源有限性要求區(qū)塊鏈與聯(lián)邦學(xué)習(xí)結(jié)合后的效率需要進(jìn)一步提高。雖然上述文獻(xiàn)針對(duì)其中個(gè)別問(wèn)題提出了解決方案,但均存在不足。
為此,本文提出了一種基于區(qū)塊鏈和聯(lián)邦學(xué)習(xí)的邊緣計(jì)算隱私保護(hù)方法,可以在互不信任的本地設(shè)備間構(gòu)建一個(gè)安全可靠的智能邊緣計(jì)算框架。不需要任何可信的中央服務(wù)器,多個(gè)分布式設(shè)備即可實(shí)現(xiàn)高效安全的協(xié)同訓(xùn)練。主要貢獻(xiàn)有以下幾點(diǎn)。
1) 設(shè)計(jì)了一個(gè)基于區(qū)塊鏈的聯(lián)邦學(xué)習(xí)框架,不僅使聯(lián)邦學(xué)習(xí)具備防篡改和抗單點(diǎn)故障特性,還提供了激勵(lì)機(jī)制鼓勵(lì)更多設(shè)備參與聯(lián)邦訓(xùn)練。
2) 提出了一種自適應(yīng)差分隱私機(jī)制,保護(hù)參數(shù)隱私的同時(shí)可根據(jù)訓(xùn)練進(jìn)度自適應(yīng)調(diào)整裁剪閾值,緩解噪聲對(duì)模型準(zhǔn)確性的負(fù)面影響。
3) 設(shè)計(jì)了梯度驗(yàn)證機(jī)制,不僅可以防止惡意設(shè)備獲取額外獎(jiǎng)勵(lì),還能夠檢測(cè)一定比例的中毒攻擊,確保聯(lián)邦學(xué)習(xí)更加安全。
區(qū)塊鏈作為一種去中心化、難以篡改的數(shù)字賬本,能夠在無(wú)信任環(huán)境下以安全可驗(yàn)證的方式構(gòu)建分類(lèi)賬,在物聯(lián)網(wǎng)、大數(shù)據(jù)、云計(jì)算和邊緣計(jì)算等領(lǐng)域得到了廣泛的應(yīng)用。在區(qū)塊鏈中,所有參與節(jié)點(diǎn)都可以進(jìn)行事務(wù)的驗(yàn)證和轉(zhuǎn)發(fā),并通過(guò)共識(shí)算法維護(hù)全網(wǎng)一致的分類(lèi)賬,賬本中的每個(gè)區(qū)塊記錄一系列事務(wù)和前一個(gè)區(qū)塊的散列值,從而將當(dāng)前區(qū)塊鏈接到前一個(gè)區(qū)塊。
共識(shí)算法是區(qū)塊鏈技術(shù)的核心。工作量證明是比特幣網(wǎng)絡(luò)使用的共識(shí)算法,它要求網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都計(jì)算特定的哈希散列值。哈希散列值滿(mǎn)足一定條件的節(jié)點(diǎn)得到生成新區(qū)塊的權(quán)利。新區(qū)塊通過(guò)驗(yàn)證后會(huì)廣播給網(wǎng)絡(luò)中的所有節(jié)點(diǎn)以保持賬本的一致性。但是這種共識(shí)機(jī)制會(huì)浪費(fèi)大量的計(jì)算資源,因此以太坊提出權(quán)益證明(PoS,proof of stake),節(jié)點(diǎn)利用持幣數(shù)以及持有的時(shí)間來(lái)競(jìng)爭(zhēng)生成新區(qū)塊的權(quán)利,相比之下避免了不必要的資源浪費(fèi),但仍面臨易分叉和擴(kuò)展性的問(wèn)題。委托權(quán)益證明在PoS 的基礎(chǔ)上進(jìn)行了改進(jìn),由節(jié)點(diǎn)投票選舉出特定數(shù)目的代理節(jié)點(diǎn)負(fù)責(zé)區(qū)塊的生成和驗(yàn)證,因此在犧牲部分去中心化特性的情況下加快了區(qū)塊的確認(rèn)速度。拜占庭容錯(cuò)算法(BFT,byzantine fault tolerance)來(lái)源于拜占庭將軍問(wèn)題,是考慮在有惡意節(jié)點(diǎn)的情況下達(dá)成共識(shí)。它要求所有節(jié)點(diǎn)之間兩兩通信,因此節(jié)點(diǎn)數(shù)量不能太多,可擴(kuò)展性較弱。最新提出的Algorand 協(xié)議[14]是一個(gè)采用純PoS 共識(shí)的公鏈項(xiàng)目,其結(jié)合密碼抽簽技術(shù)和改進(jìn)的拜占庭共識(shí)協(xié)議,能夠?qū)崿F(xiàn)快速的交易確認(rèn),并且用戶(hù)數(shù)量可無(wú)限擴(kuò)展,被宣稱(chēng)能解決區(qū)塊鏈中“可擴(kuò)展性、安全性和去中心化”的三角難題。其中,1) 可擴(kuò)展性:Algorand 采用可驗(yàn)證隨機(jī)函數(shù)(VRF,verifiable random function)選出若干個(gè)驗(yàn)證者,無(wú)論網(wǎng)絡(luò)中有多少用戶(hù),每生成一個(gè)新區(qū)塊只需要在少數(shù)驗(yàn)證者上進(jìn)行驗(yàn)證,具有較高的吞吐量(TPS,transactions per second)。2) 安全性:只有當(dāng)區(qū)塊生產(chǎn)者和驗(yàn)證者確定自己被選中并廣播相應(yīng)的證明信息時(shí)才會(huì)被披露,攻擊者無(wú)法提前預(yù)測(cè),即使發(fā)起攻擊也無(wú)法阻止新區(qū)塊在網(wǎng)絡(luò)中傳播。3) 去中心化:Algorand 在每一輪中都重新隨機(jī)選取區(qū)塊生產(chǎn)者和驗(yàn)證者,具有較好的去中心化性。
由于區(qū)塊鏈天然的泛中心分布式可信機(jī)制,為構(gòu)建更加安全的邊緣智能計(jì)算框架提供了新的思路,可以有效解決本地設(shè)備協(xié)作時(shí)面臨的網(wǎng)絡(luò)安全攻擊問(wèn)題。
在分布式場(chǎng)景中,傳統(tǒng)的機(jī)器學(xué)習(xí)算法要求用戶(hù)將數(shù)據(jù)上傳至數(shù)據(jù)中心再進(jìn)行訓(xùn)練。然而,數(shù)據(jù)中可能包含隱私信息,部分用戶(hù)不愿意共享其數(shù)據(jù),這就造成了嚴(yán)重的數(shù)據(jù)孤島現(xiàn)象,阻礙了機(jī)器學(xué)習(xí)進(jìn)一步的發(fā)展。為了解決這一問(wèn)題,谷歌于2016 年提出一種新的分布式機(jī)器學(xué)習(xí)框架——聯(lián)邦學(xué)習(xí),用于在移動(dòng)終端與服務(wù)器間建立共享模型,從而在終端數(shù)據(jù)不出本地的情況下實(shí)現(xiàn)數(shù)據(jù)“可用不可見(jiàn)”。在該框架下,每個(gè)分布式終端基于本地?cái)?shù)據(jù)集訓(xùn)練機(jī)器學(xué)習(xí)模型,然后將模型參數(shù)發(fā)送給中央服務(wù)器。服務(wù)器聚合所有上傳的參數(shù)后得到全局模型,下發(fā)給各個(gè)終端,用以更新它們的本地模型。假設(shè)聯(lián)邦學(xué)習(xí)系統(tǒng)中有K個(gè)終端,每個(gè)終端持有包含個(gè)樣本的本地?cái)?shù)據(jù)集DBi(1≤i≤K),則中央服務(wù)器的損失函數(shù)為
差分隱私是一種嚴(yán)格可證明的數(shù)學(xué)框架,其基本思想是通過(guò)對(duì)函數(shù)的輸入或輸出結(jié)果添加精心設(shè)計(jì)的噪聲,使數(shù)據(jù)集中任意單個(gè)記錄的修改都不會(huì)對(duì)輸出結(jié)果造成顯著的影響,因此攻擊者不能通過(guò)分析輸出結(jié)果來(lái)推測(cè)數(shù)據(jù)集中的隱私信息。相關(guān)定義如下。
定義1[15](ε,)δ-差分隱私。令A(yù):D→R為隨機(jī)算法,D和D′是最多有一條記錄不同的2 個(gè)數(shù)據(jù)集,O∈R為算法A的輸出,若算法A滿(mǎn)足
則稱(chēng)A滿(mǎn)足(ε,)δ-差分隱私。其中,ε為差分隱私預(yù)算,該值越小說(shuō)明隱私保護(hù)程度越高,但同時(shí)對(duì)于算法A的精度損失越大;δ表示允許違背嚴(yán)格差分隱私的概率,一般值較小。
定義 2[15]敏感度。對(duì)于任意的查詢(xún)函數(shù)f:D→Rd,D為輸入數(shù)據(jù)集,Rd為函數(shù)輸出的d維向量,則函數(shù)f的敏感度為
其中,D和D′為最多相差一條記錄的相鄰數(shù)據(jù)集,表示Lp范數(shù)。敏感度反映了查詢(xún)函數(shù)f在一對(duì)相鄰數(shù)據(jù)集上輸出結(jié)果的最大變化范圍。敏感度越小,則實(shí)現(xiàn)差分隱私時(shí)需要向輸出結(jié)果添加的噪聲就越少。
定義3[15]高斯機(jī)制。若使用L2范數(shù)計(jì)算函數(shù)f的敏感度,則可以通過(guò)向函數(shù)f的輸出添加高斯噪聲來(lái)實(shí)現(xiàn)(ε,)δ-差分隱私,如式(4)所示。
其中,高斯噪聲是滿(mǎn)足均值為0、協(xié)方差為(Δfσ)2I的高斯分布,I為單位矩陣。
差分隱私滿(mǎn)足以下特性。
1) 后處理性。若一個(gè)算法的輸出結(jié)果滿(mǎn)足差分隱私,則在這個(gè)結(jié)果上進(jìn)行的任何操作都不會(huì)造成額外的隱私損失。
2) 序列化組合原理。差分隱私算法的序列化組合依然滿(mǎn)足差分隱私性質(zhì)。
本節(jié)給出在邊緣計(jì)算中應(yīng)用聯(lián)邦學(xué)習(xí)面臨的安全威脅。
威脅1潛在隱私泄露。雖然聯(lián)邦學(xué)習(xí)只傳輸模型參數(shù)而不傳輸原始數(shù)據(jù),但是最新的隱私攻擊[16]表明通過(guò)利用模型參數(shù)依然可以推測(cè)出本地設(shè)備數(shù)據(jù)的部分隱私信息。
威脅2中毒攻擊。惡意設(shè)備可以通過(guò)篡改原始數(shù)據(jù)或者提交錯(cuò)誤的本地梯度來(lái)破壞聯(lián)邦學(xué)習(xí)的正確性。
威脅3單點(diǎn)故障攻擊。中央服務(wù)器一旦被攻擊者癱瘓,則整個(gè)聯(lián)邦學(xué)習(xí)訓(xùn)練就會(huì)失敗。
下面介紹本文方案中常用的術(shù)語(yǔ)和符號(hào)。
本地設(shè)備。部署在網(wǎng)絡(luò)邊緣的本地設(shè)備,如工業(yè)物聯(lián)網(wǎng)中的傳感器、智慧城市中的攝像機(jī)、車(chē)聯(lián)網(wǎng)中的汽車(chē)等,擁有有限的本地?cái)?shù)據(jù)集和計(jì)算能力,希望在保護(hù)數(shù)據(jù)隱私的前提下和其他設(shè)備通過(guò)聯(lián)邦學(xué)習(xí)構(gòu)建一個(gè)更準(zhǔn)確的機(jī)器學(xué)習(xí)模型,以提供更加智能的服務(wù)。
礦工。即邊緣節(jié)點(diǎn),通常配備了一定的計(jì)算資源和通信資源,如工業(yè)物聯(lián)網(wǎng)中的邊緣服務(wù)器、移動(dòng)通信網(wǎng)中的基站、車(chē)聯(lián)網(wǎng)中的路邊單元等。提供區(qū)塊鏈中的驗(yàn)證、共識(shí)等服務(wù),并由此獲取相應(yīng)的代幣作為收益。
事務(wù)。即區(qū)塊鏈節(jié)點(diǎn)間交互的數(shù)據(jù)記錄,比如比特幣中事務(wù)記錄的是資金轉(zhuǎn)移。在本文中,事務(wù)記錄的是模型的梯度以及相關(guān)訓(xùn)練信息。
協(xié)同訓(xùn)練。所有設(shè)備以相同的初始化參數(shù)為起點(diǎn),共同迭代訓(xùn)練同一個(gè)深度學(xué)習(xí)模型。在每輪迭代中,設(shè)備將本地訓(xùn)練得到的模型更新上傳給區(qū)塊鏈,然后由區(qū)塊鏈完成模型聚合和共識(shí),得到的新區(qū)塊由設(shè)備下載以更新本地模型,接著進(jìn)行下一輪訓(xùn)練。
代幣。本區(qū)塊鏈中的資產(chǎn),主要用于激勵(lì)設(shè)備和礦工參加訓(xùn)練。當(dāng)設(shè)備的更新被驗(yàn)證為合法、礦工參與驗(yàn)證或生成新區(qū)塊時(shí),都能夠獲取一定數(shù)量的代幣作為獎(jiǎng)勵(lì)。這種設(shè)置已經(jīng)在很多基于模型定價(jià)的場(chǎng)景中[17-18]進(jìn)行應(yīng)用。例如,在車(chē)聯(lián)網(wǎng)場(chǎng)景中[19],汽車(chē)積極參與聯(lián)邦訓(xùn)練以獲取代幣獎(jiǎng)勵(lì),路邊單元提供有償?shù)膮^(qū)塊鏈服務(wù)以增加自己收益。與現(xiàn)有工作不同的是,本文給代幣設(shè)置一個(gè)有效期,即經(jīng)過(guò)一定輪數(shù)的訓(xùn)練后,代幣即失效。這將用于后面的共識(shí)機(jī)制中防止財(cái)富過(guò)度累積。由于本文使用Algorand作為共識(shí)協(xié)議,因此為了確保安全性,假設(shè)惡意代幣(即被惡意礦工持有)的數(shù)量不超過(guò)1/3[14]。
如圖1 所示,假設(shè)本系統(tǒng)由K個(gè)本地設(shè)備和若干個(gè)邊緣節(jié)點(diǎn)充當(dāng)?shù)牡V工組成,其中,本地設(shè)備可以是汽車(chē)、手機(jī)或者攝像頭等具備部分計(jì)算能力的智能終端,擁有包含ni(1≤i≤K)個(gè)樣本的本地?cái)?shù)據(jù)集。其一輪完整的訓(xùn)練流程可概括如下。
步驟1所有礦工和設(shè)備向任務(wù)發(fā)布者申請(qǐng)注冊(cè),其中,設(shè)備注冊(cè)信息中含有其本地?cái)?shù)據(jù)集大小。任務(wù)發(fā)布者為它們分配用于簽名的公鑰和私鑰,根據(jù)訓(xùn)練任務(wù)創(chuàng)建創(chuàng)世塊(即區(qū)塊鏈中第一個(gè)區(qū)塊)并通過(guò)安全鏈路分發(fā)給所有本地設(shè)備和礦工以執(zhí)行模型初始化。創(chuàng)世塊主要包含以下信息:1) 模型初始化參數(shù)w0和總訓(xùn)練輪數(shù)T;2) 所有礦工和設(shè)備用于簽名的公鑰;3) 所有設(shè)備的本地?cái)?shù)據(jù)集大小ni(1≤i≤K);4) 所有設(shè)備和礦工的初始代幣數(shù)量;5) 代幣抵押和獎(jiǎng)勵(lì)函數(shù);6) 隨機(jī)數(shù)種子seed0,后續(xù)每輪訓(xùn)練都會(huì)根據(jù)前一輪訓(xùn)練的隨機(jī)種子seedt?1生成seedt,主要用于保證共識(shí)階段選舉領(lǐng)導(dǎo)者時(shí)的隨機(jī)性(見(jiàn)3.3.3 節(jié))。本文假設(shè)創(chuàng)世塊中的信息是可靠且不能被攻擊者篡改的,這里的任務(wù)發(fā)布者僅僅起到一個(gè)引導(dǎo)訓(xùn)練過(guò)程的作用,可由可信權(quán)威代替。
步驟2設(shè)備在本地?cái)?shù)據(jù)集上訓(xùn)練機(jī)器學(xué)習(xí)模型,迭代ni次后在得到的梯度上添加差分隱私噪聲(詳細(xì)介紹見(jiàn)3.3.1 節(jié)),以應(yīng)對(duì)威脅1。
步驟3設(shè)備將帶噪梯度、本地運(yùn)算時(shí)間以及數(shù)字簽名,以區(qū)塊鏈?zhǔn)聞?wù)的形式上傳給關(guān)聯(lián)的礦工。本文假設(shè)本地運(yùn)算時(shí)間是可信的,可利用Intel SGX 可信硬件技術(shù)下的消耗時(shí)間證明機(jī)制[20]實(shí)現(xiàn)。
步驟4礦工收到數(shù)據(jù)后,首先驗(yàn)證簽名的合法性,以防止攻擊者對(duì)數(shù)據(jù)進(jìn)行篡改。若簽名合法,則驗(yàn)證梯度的可靠性,并組成驗(yàn)證委員會(huì)檢測(cè)是否存在惡意更新(詳細(xì)介紹見(jiàn)3.3.2 節(jié)),以應(yīng)對(duì)威脅2。
步驟5基于隨機(jī)種子和代幣數(shù)量從礦工中選舉領(lǐng)導(dǎo)者,負(fù)責(zé)計(jì)算全局梯度并生成新區(qū)塊(詳細(xì)介紹見(jiàn)3.3.3 節(jié))。
步驟6驗(yàn)證委員會(huì)對(duì)新區(qū)塊的合法性進(jìn)行驗(yàn)證,并廣播通過(guò)驗(yàn)證的區(qū)塊,同步全網(wǎng)的賬本(詳細(xì)介紹見(jiàn)3.3.3 節(jié)),以應(yīng)對(duì)威脅3。
步驟7設(shè)備從其關(guān)聯(lián)的礦工處下載新區(qū)塊,從中獲取全局梯度來(lái)更新本地模型,并從步驟2開(kāi)始下一輪訓(xùn)練,直至模型收斂或達(dá)到最大訓(xùn)練輪數(shù)。
本文使用的主要符號(hào)如表1 所示。
表1 主要符號(hào)
本文方案主要由3 個(gè)關(guān)鍵部分實(shí)現(xiàn)基于聯(lián)邦學(xué)習(xí)和區(qū)塊鏈的隱私保護(hù)方法,即自適應(yīng)差分隱私機(jī)制、驗(yàn)證和激勵(lì)機(jī)制以及共識(shí)協(xié)議。下面分別對(duì)其進(jìn)行詳細(xì)介紹。
3.3.1 自適應(yīng)差分隱私機(jī)制
所有設(shè)備在本地?cái)?shù)據(jù)集上訓(xùn)練得到模型梯度,將其上傳給礦工之前,需對(duì)梯度做隱私保護(hù)處理以應(yīng)對(duì)威脅1。為此,文獻(xiàn)[21]和文獻(xiàn)[22]分別提出利用門(mén)限Paillier 加密算法和Shamir 秘密共享算法來(lái)保護(hù)本地梯度,但均存在計(jì)算開(kāi)銷(xiāo)過(guò)大的問(wèn)題;相比之下,差分隱私技術(shù)計(jì)算量小,更適用于資源受限的邊緣計(jì)算設(shè)備。文獻(xiàn)[11]利用本地差分隱私技術(shù)在原始訓(xùn)練數(shù)據(jù)上添加噪聲以保護(hù)隱私,但會(huì)造成較大的模型精度損失。文獻(xiàn)[23]利用全局閾值C裁剪梯度后添加高斯噪聲以保護(hù)隱私,但未說(shuō)明閾值C的選取依據(jù)。C值對(duì)于深度學(xué)習(xí)模型來(lái)說(shuō)至關(guān)重要:C值過(guò)大會(huì)添加過(guò)量噪聲,C值過(guò)小會(huì)過(guò)度裁剪梯度,二者都會(huì)造成模型精度嚴(yán)重受損。文獻(xiàn)[24]令C值取所有設(shè)備梯度范數(shù)的中位數(shù),但要求服務(wù)器獲取所有設(shè)備的明文梯度,依然面臨威脅1 的挑戰(zhàn)。為此,本文借鑒RMSProp 優(yōu)化算法的思想,提出一種適用于本地設(shè)備的自適應(yīng)差分隱私機(jī)制,可根據(jù)訓(xùn)練過(guò)程靈活調(diào)整裁剪閾值,以減小噪聲對(duì)模型精度的負(fù)面影響。
RMSProp 優(yōu)化算法作為梯度下降算法的一種優(yōu)化,主要通過(guò)調(diào)整步長(zhǎng)來(lái)加快收斂速度。其迭代更新計(jì)算式為
其中,θ t代表第t輪訓(xùn)練時(shí)的模型參數(shù),gt代表模型梯度,η是學(xué)習(xí)速率,ε0為了確保除數(shù)不為零,一般定為10?8,E[g2]t?1用于估計(jì)歷史梯度的累積平方。鑒于優(yōu)化過(guò)程的連續(xù)性和漸進(jìn)性,歷史梯度通??捎糜诠烙?jì)當(dāng)前梯度的值[25]。因此,RMSProp優(yōu)化算法中的E[g2]t?1可以看作當(dāng)前梯度的先驗(yàn)知識(shí)。
已有算法[26]令閾值來(lái)實(shí)現(xiàn)近似最優(yōu)裁剪效果,而依據(jù)3.2 節(jié)中的訓(xùn)練流程,本文算法中設(shè)備在上傳梯度前無(wú)法獲取當(dāng)前訓(xùn)練輪次的全局梯度。因此本文借鑒RMSProp 優(yōu)化算法中的思想,利用先驗(yàn)知識(shí)E[]t?1預(yù)測(cè)本輪的全局梯度,并將其作為本輪的裁剪閾值Ct,即,其中,β為本地裁剪因子,先驗(yàn)知識(shí)E[]t?1的計(jì)算式為
綜上所述,在第t輪訓(xùn)練中,設(shè)備i(1≤i≤K)在本地端裁剪梯度gi,t并添加噪聲的過(guò)程可表示為
3.3.2 驗(yàn)證和激勵(lì)機(jī)制
由于本地設(shè)備收集的數(shù)據(jù)中可能包含用戶(hù)的隱私信息,且訓(xùn)練模型需要消耗計(jì)算資源,因此部分設(shè)備不愿意參與聯(lián)邦訓(xùn)練,甚至?xí)霈F(xiàn)部分惡意的設(shè)備上傳虛假參數(shù)誤導(dǎo)聯(lián)邦訓(xùn)練等。為了吸引更多的設(shè)備參與訓(xùn)練并誠(chéng)實(shí)地執(zhí)行計(jì)算任務(wù),本文利用Multi-KRUM 算法[27]來(lái)檢測(cè)中毒攻擊,并根據(jù)區(qū)塊鏈的特點(diǎn)設(shè)計(jì)了激勵(lì)機(jī)制。其中,Multi-KRUM 算法可以解決參與分布式梯度下降算法中的R個(gè)設(shè)備間存在f個(gè)拜占庭設(shè)備(需滿(mǎn)足2f+2 如3.2 節(jié)中的訓(xùn)練流程步驟3~步驟4 所述,當(dāng)?shù)V工收到其關(guān)聯(lián)設(shè)備上傳的數(shù)據(jù)后,首先驗(yàn)證簽名的合法性來(lái)確保數(shù)據(jù)傳輸過(guò)程中不被篡改。然后判斷本地運(yùn)算時(shí)間是否與該設(shè)備的本地?cái)?shù)據(jù)集大小ni成正比,以驗(yàn)證梯度的可靠性,并將可靠的梯度放入事務(wù)池中。接著采用可驗(yàn)證隨機(jī)函數(shù)(VRF,verifiable random function)[14]從礦工中選出驗(yàn)證委員會(huì),通過(guò)Multi-KRUM 算法過(guò)濾事務(wù)池中可能由中毒攻擊產(chǎn)生的惡意更新。主要步驟如下。 步驟1假設(shè)R為事務(wù)池中梯度的總數(shù)量,f為拜占庭梯度的數(shù)量。將每個(gè)梯度與其最近的R?f?2 個(gè)梯度的歐氏距離相加,作為該梯度的質(zhì)量得分。 其中,i→j表示屬于離最近的R?f?2 個(gè)梯度之一。 步驟2選擇質(zhì)量得分最低的R?f個(gè)梯度作為合法更新,并對(duì)其進(jìn)行簽名,同時(shí)刪除其余的梯度。 針對(duì)區(qū)塊鏈中的設(shè)備和礦工,分別設(shè)計(jì)了2 種不同形式的激勵(lì):數(shù)據(jù)獎(jiǎng)勵(lì)和挖礦獎(jiǎng)勵(lì)。其中,1) 數(shù)據(jù)獎(jiǎng)勵(lì)用于激勵(lì)本地設(shè)備向聯(lián)邦學(xué)習(xí)貢獻(xiàn)更多的數(shù)據(jù)集:在設(shè)備向礦工上傳數(shù)據(jù)前,先繳納一定數(shù)量的代幣作為押金。若設(shè)備的梯度被驗(yàn)證為合法更新,由礦工退還設(shè)備的押金,并且分發(fā)一定數(shù)量的代幣作為數(shù)據(jù)獎(jiǎng)勵(lì),代幣數(shù)量與該設(shè)備的本地?cái)?shù)據(jù)集大小ni成正比。為了防止惡意設(shè)備通過(guò)偽造數(shù)據(jù)集大小來(lái)獲取更多的獎(jiǎng)勵(lì),令設(shè)備將梯度與本地運(yùn)算時(shí)間一同上傳給礦工,通過(guò)比較數(shù)據(jù)集大小與該運(yùn)算時(shí)間來(lái)驗(yàn)證可靠性;若設(shè)備的梯度被驗(yàn)證為惡意更新,則扣除該設(shè)備繳納的押金,作為懲罰。當(dāng)該設(shè)備的代幣數(shù)量歸零時(shí),將其加入黑名單不允許參與訓(xùn)練。2) 挖礦獎(jiǎng)勵(lì)用于激勵(lì)礦工從更多的設(shè)備中收集數(shù)據(jù)并參與區(qū)塊鏈驗(yàn)證與共識(shí)環(huán)節(jié):當(dāng)?shù)V工完成梯度驗(yàn)證或生成新區(qū)塊時(shí),區(qū)塊鏈向其分發(fā)一定數(shù)量的代幣作為挖礦獎(jiǎng)勵(lì),代幣數(shù)量與礦工相關(guān)聯(lián)的設(shè)備的數(shù)據(jù)集總量成正比,即,其中,Nmj代表與礦工mj相關(guān)聯(lián)的設(shè)備數(shù)量。 3.3.3 共識(shí)協(xié)議 共識(shí)協(xié)議對(duì)于區(qū)塊鏈來(lái)說(shuō)至關(guān)重要。PoW 通過(guò)讓所有礦工計(jì)算隨機(jī)哈希值來(lái)爭(zhēng)奪記賬權(quán),已被文獻(xiàn)[4-6]采用作為共識(shí)協(xié)議,但是其存在浪費(fèi)計(jì)算資源、共識(shí)效率慢、吞吐量低的問(wèn)題。Algorand 協(xié)議基于PoS 隨機(jī)選擇區(qū)塊生產(chǎn)者以及驗(yàn)證者,具有較高的共識(shí)效率,且可以通過(guò)引入可驗(yàn)證隨機(jī)函數(shù)、種子參數(shù)等抵抗DDoS 攻擊、女巫攻擊等,具有較高的安全性,更加適用于計(jì)算資源有限、面臨更多復(fù)雜攻擊的邊緣計(jì)算場(chǎng)景。文獻(xiàn)[9]已將Algorand協(xié)議應(yīng)用于智能家居場(chǎng)景,但是其在共識(shí)協(xié)議中未設(shè)計(jì)激勵(lì)機(jī)制。本文將礦工設(shè)定為工業(yè)物聯(lián)網(wǎng)中的邊緣服務(wù)器、移動(dòng)通信網(wǎng)中的基站、車(chē)聯(lián)網(wǎng)中的路邊單元等,他們?cè)谔峁﹨^(qū)塊鏈服務(wù)時(shí)需要消耗一定的計(jì)算、存儲(chǔ)、通信等開(kāi)銷(xiāo),因此,為了維持礦工持續(xù)性提供區(qū)塊鏈服務(wù)的積極性,本文在原有Algorand 協(xié)議的基礎(chǔ)上增加了相應(yīng)的代幣獎(jiǎng)勵(lì)機(jī)制來(lái)激勵(lì)礦工維護(hù)區(qū)塊鏈。協(xié)議主要包含3 個(gè)步驟。 步驟1領(lǐng)導(dǎo)者選舉。在每一輪訓(xùn)練中,利用Algorand 協(xié)議中的加密抽簽算法從持有合法更新的礦工中隨機(jī)選舉出領(lǐng)導(dǎo)者,主要包含以下2 個(gè)函數(shù)。 其中,hashlen 代表hash 的長(zhǎng)度,說(shuō)明該礦工有j個(gè)子用戶(hù)被選擇,這也代表該礦工的優(yōu)先級(jí)??梢?jiàn)礦工被選舉為領(lǐng)導(dǎo)者的概率與其持有的代幣數(shù)量w成正比。為了避免財(cái)富累積,本共識(shí)算法中的w只計(jì)算在有效期內(nèi)的代幣。通過(guò)上述過(guò)程,擁有最高優(yōu)先級(jí)的礦工被選舉為本輪訓(xùn)練的領(lǐng)導(dǎo)者,其他礦工可以通過(guò)證明proof 對(duì)其優(yōu)先級(jí)進(jìn)行驗(yàn)證。 領(lǐng)導(dǎo)者從事務(wù)池中獲取所有合法更新,并通過(guò)聯(lián)邦平均算法計(jì)算全局梯度,如式(10)所示。 然后領(lǐng)導(dǎo)者生成這一輪訓(xùn)練的區(qū)塊,如圖2 所示。除了包含用于鏈接前一個(gè)區(qū)塊的哈希值以外,還包含該輪的全局梯度、所有合法更新及其簽名,以及用于下一輪領(lǐng)導(dǎo)者選舉的隨機(jī)種子seedt+1等。 步驟2委員會(huì)驗(yàn)證。驗(yàn)證委員會(huì)對(duì)生成的新區(qū)塊進(jìn)行驗(yàn)證,主要檢查其中包含的梯度更新簽名是否合法,以及全局梯度計(jì)算是否正確等。只有當(dāng)超過(guò)2/3 的委員驗(yàn)證通過(guò)時(shí),該區(qū)塊才被認(rèn)定為有效,相應(yīng)的領(lǐng)導(dǎo)者和驗(yàn)證者從區(qū)塊鏈中獲取一定數(shù)量的代幣作為挖礦獎(jiǎng)勵(lì);否則,生成一個(gè)空區(qū)塊。 步驟3鄰居廣播。委員會(huì)中的每個(gè)驗(yàn)證者執(zhí)行Gossip 協(xié)議[28]向鄰居廣播新區(qū)塊,同步全網(wǎng)的賬本。 在給定隱私預(yù)算的情況下,如何計(jì)算算法在訓(xùn)練過(guò)程中的隱私損失十分關(guān)鍵。本文基于Abadi等[23]提出的時(shí)刻統(tǒng)計(jì)來(lái)計(jì)算隱私損失。相關(guān)定義如下。 定義4[23]隱私損失。令A(yù):D→R為隨機(jī)算法,D和D′為相鄰數(shù)據(jù)集,A在輸出O∈R處的隱私損失為 定義5[23]時(shí)刻統(tǒng)計(jì)。算法A在λ時(shí)刻的時(shí)刻統(tǒng)計(jì)為 定理1[23](組合性)若算法A由一系列子算法A1,A2,…,Ak組成,則對(duì)于任一時(shí)刻λ,算法A的時(shí)刻統(tǒng)計(jì)上界為所有子算法A1,A2,…,Ak的時(shí)刻統(tǒng)計(jì)之和。 定理2[23](尾界限)對(duì)于任意ε>0,若式(14)成立,算法A滿(mǎn)足(ε,)δ-差分隱私。 基于定理1,本文聯(lián)邦學(xué)習(xí)算法的隱私損失與設(shè)備端總數(shù)和全局訓(xùn)練輪數(shù)成正比。假設(shè)設(shè)備數(shù)量為K,全局訓(xùn)練輪數(shù)為T(mén),算法總的時(shí)刻統(tǒng)計(jì)為α(λ),第t輪訓(xùn)練時(shí)設(shè)備i(1≤i≤K)的時(shí)刻統(tǒng)計(jì)為α i,t(λ),則根據(jù)定理1 中的組合性,有 其中,αi,t(λ)主要體現(xiàn)在設(shè)備在裁剪后的梯度上添加高斯噪聲ξ~N(0,(Ctσ)2I),如式(7)所示。αi,t(λ)的計(jì)算過(guò)程如下[23]。 由于所有設(shè)備在本地添加的噪聲ξ~N(0,(Ctσ)2I)是一樣的,因此所有設(shè)備的αi,t(λ)也是一樣的。在計(jì)算得到總的時(shí)刻統(tǒng)計(jì)α(λ)后,利用定理2 得到算法滿(mǎn)足隱私的形式。算法在實(shí)際運(yùn)行過(guò)程中,整數(shù)時(shí)刻λ的取值范圍通常為0≤λ≤100。 實(shí)驗(yàn)在Ubuntu 18.04 系統(tǒng)下進(jìn)行,硬件配置為Intel i7-8700K CPU,GTX 1080T GPU,16 GB RAM。使用Go 語(yǔ)言來(lái)處理方案中涉及區(qū)塊鏈的部分,使用Pytorch 1.4.0 訓(xùn)練深度學(xué)習(xí)模型和添加差分隱私噪聲,并通過(guò)go-python v1.0 庫(kù)搭建Python 和Go的接口。網(wǎng)絡(luò)結(jié)構(gòu)采用卷積神經(jīng)網(wǎng)絡(luò)(CNN,conventional neural network),由2 個(gè)5×5 的卷積層、一個(gè)全連接層和一個(gè)softmax 輸出層組成。模型中的權(quán)重初始化為從正太分布N(0,0.022)采樣的隨機(jī)值,并將偏差初始化為0。實(shí)驗(yàn)數(shù)據(jù)集采用MNIST和CIFAR10,這2 個(gè)數(shù)據(jù)集可代表本地設(shè)備所收集的復(fù)雜度中等的數(shù)據(jù),也被大量基于邊緣計(jì)算場(chǎng)景的聯(lián)邦學(xué)習(xí)算法[5-7,9]作為測(cè)試數(shù)據(jù)使用。其中,MNIST 是一個(gè)包含60 000 個(gè)訓(xùn)練樣本和10 000 個(gè)測(cè)試樣本的手寫(xiě)數(shù)據(jù)集,每個(gè)樣本是一個(gè)28×28 的灰度圖像,標(biāo)簽為0~9;CIFAR10 是一個(gè)包含50 000 個(gè)訓(xùn)練樣本和10 000 個(gè)測(cè)試樣本的圖像數(shù)據(jù)集,每個(gè)樣本是一個(gè)32×32 的RGB 圖像,標(biāo)簽包含“飛機(jī)”“狗”“汽車(chē)”等10 類(lèi)普適物體。實(shí)驗(yàn)中令RMSProp優(yōu)化算法中的γ=0.1,η=0.002,ε0=10?6,自適應(yīng)差分隱私中的G=10?6,β=1.2,σ=4,δ=10?4。在MNIST 數(shù)據(jù)集上初始裁剪閾值C=4,隱私預(yù)算ε=2;在CIFAR10 數(shù)據(jù)集上C=3,ε=4。為了模擬聯(lián)邦學(xué)習(xí)的分布式環(huán)境,假設(shè)系統(tǒng)中有20 個(gè)本地設(shè)備,并將實(shí)驗(yàn)數(shù)據(jù)集隨機(jī)均勻劃分為20 份分給每個(gè)設(shè)備作為本地?cái)?shù)據(jù)集。設(shè)備在本地訓(xùn)練批次大小為64,通過(guò)使用pickle 模塊,將梯度參數(shù)轉(zhuǎn)換為字節(jié)流進(jìn)行傳輸,默認(rèn)采用64 bit 的精度。 為了衡量本算法中自適應(yīng)差分隱私機(jī)制在減少隱私預(yù)算消耗方面的作用,采用文獻(xiàn)[24]中的差分隱私聯(lián)邦學(xué)習(xí)算法(DPFL)作對(duì)比,即在MNIST和CIFAR10 數(shù)據(jù)集上分別將裁剪閾值固定為C=4和C=3,記錄2 種算法到達(dá)指定準(zhǔn)確率時(shí)所消耗的隱私預(yù)算,如表2 所示,其中,εD和εA分別代表DPFL 和本文算法所消耗的隱私預(yù)算。 表2 本文算法和DPFL 所消耗的隱私預(yù)算 由表2 可知,當(dāng)準(zhǔn)確率相同時(shí),本文算法在MNIST 和CIFAR10 數(shù)據(jù)集上比DPFL 平均減小了37%和29%的隱私預(yù)算,由此證明了本文算法通過(guò)自適應(yīng)差分隱私機(jī)制有效減少了隱私預(yù)算的消耗。由于隱私預(yù)算越大,隱私保護(hù)程度越低,為了在模型準(zhǔn)確率和隱私保護(hù)之間取得平衡,本文算法在MNIST 數(shù)據(jù)集上令ε=2,在CIFAR10 數(shù)據(jù)集上令ε=4。 為了衡量差分隱私機(jī)制對(duì)于算法準(zhǔn)確性的影響,給定相同的隱私預(yù)算,將本文算法與DPFL 在準(zhǔn)確率上進(jìn)行對(duì)比。同時(shí)采用原始聯(lián)邦學(xué)習(xí)算法作為比較基準(zhǔn)。結(jié)果如圖3 所示。 根據(jù)圖3(a)可知,在MNIST 數(shù)據(jù)集上,原始聯(lián)邦學(xué)習(xí)算法取得98.8%的準(zhǔn)確率,而由于隱私預(yù)算ε=2 的限制,本文算法訓(xùn)練至35 輪時(shí)停止,準(zhǔn)確率達(dá)到96.3%,DPFL 算法訓(xùn)練至26 輪時(shí)停止,準(zhǔn)確率達(dá)到93.7%。如圖3(b)所示,在CIFAR10 數(shù)據(jù)集上,原始聯(lián)邦學(xué)習(xí)算法取得72%的準(zhǔn)確率,而由于隱私預(yù)算ε=4 的限制,本文算法訓(xùn)練至54 輪時(shí)停止,準(zhǔn)確率達(dá)到69.2%,DPFL 訓(xùn)練至46 輪時(shí)停止,準(zhǔn)確率達(dá)到67.8%。 由此可見(jiàn),通過(guò)自適應(yīng)差分隱私機(jī)制,本文算法在相同的隱私預(yù)算下能夠訓(xùn)練更多輪次,達(dá)到更高的準(zhǔn)確率,僅略低于原始聯(lián)邦學(xué)習(xí)算法。因此本文算法適用于對(duì)精度要求高、需要隱私保護(hù)的應(yīng)用場(chǎng)景。 系統(tǒng)吞吐量TPS 是評(píng)估區(qū)塊鏈性能的重要因素,即區(qū)塊鏈每秒處理的事務(wù)數(shù)。由于本文將區(qū)塊鏈與聯(lián)邦學(xué)習(xí)相結(jié)合應(yīng)用于邊緣計(jì)算場(chǎng)景,則一個(gè)設(shè)備向區(qū)塊鏈上傳的模型梯度等信息代表一個(gè)事務(wù),事務(wù)在區(qū)塊鏈中的處理流程包括梯度驗(yàn)證和共識(shí)2 個(gè)階段。統(tǒng)計(jì)在不同的設(shè)備數(shù)量(即不同的事務(wù)數(shù)量)下,每一輪訓(xùn)練中梯度驗(yàn)證和共識(shí)2 個(gè)階段分別消耗的平均時(shí)間,如圖4 所示。其中梯度驗(yàn)證階段對(duì)應(yīng)于3.2 節(jié)訓(xùn)練流程中的步驟4,共識(shí)階段對(duì)應(yīng)于步驟5~步驟6。 由圖4 可知,梯度驗(yàn)證的時(shí)間小于共識(shí)階段的時(shí)間,這是因?yàn)楣沧R(shí)階段需要執(zhí)行領(lǐng)導(dǎo)者選舉、聯(lián)邦平均以及委員會(huì)驗(yàn)證等操作,需要較大的計(jì)算開(kāi)銷(xiāo)。但是梯度驗(yàn)證的運(yùn)行時(shí)間隨著設(shè)備數(shù)量的增加而增加,這是由Multi-KRUM 算法的計(jì)算復(fù)雜度所決定的。 因此,為了更加直觀地反映在共識(shí)協(xié)議中融入梯度驗(yàn)證后對(duì)于區(qū)塊鏈TPS 的影響,計(jì)算在不同的設(shè)備數(shù)量下,未加入梯度驗(yàn)證的TPS 和加入梯度驗(yàn)證后的TPS。具體地,未加入梯度驗(yàn)證的TPS 的計(jì)算式為,加入梯度驗(yàn)證后的TPS 的計(jì)算式為,結(jié)果如表3 所示??梢钥闯觯荻闰?yàn)證機(jī)制在一定程度上降低了區(qū)塊鏈的TPS,且隨著設(shè)備數(shù)量的增加,對(duì)于TPS 的影響越大。說(shuō)明梯度驗(yàn)證機(jī)制以犧牲部分TPS 為代價(jià)來(lái)強(qiáng)化邊緣計(jì)算的安全性,但是當(dāng)設(shè)備小于一定數(shù)量時(shí),TPS 減少率依然在一個(gè)可接受的范圍內(nèi)。如設(shè)備數(shù)量小于50 時(shí),TPS 減少率小于40%。 表3 梯度驗(yàn)證機(jī)制對(duì)于區(qū)塊鏈TPS 的影響 為了進(jìn)一步探討區(qū)塊鏈與聯(lián)邦學(xué)習(xí)結(jié)合后對(duì)算法運(yùn)行效率的影響,將本文算法與原始聯(lián)邦學(xué)習(xí)算法[2]在運(yùn)行時(shí)間上進(jìn)行對(duì)比,結(jié)果如圖5 所示,其中,本文算法的訓(xùn)練曲線(xiàn)在隱私預(yù)算消耗完畢時(shí)截止,原始聯(lián)邦學(xué)習(xí)算法的訓(xùn)練曲線(xiàn)在算法收斂時(shí)截止。 由圖5 可知,當(dāng)模型收斂時(shí),對(duì)于MNIST 數(shù)據(jù)集,本文算法的運(yùn)行時(shí)間約為原始聯(lián)邦學(xué)習(xí)算法的3.4 倍,分別為1 088 s 和323 s;對(duì)于CIFAR10 數(shù)據(jù)集,本文算法的運(yùn)行時(shí)間約為原始聯(lián)邦學(xué)習(xí)算法的2.2 倍,分別為1 825 s 和820 s??梢?jiàn)區(qū)塊鏈中的共識(shí)和驗(yàn)證機(jī)制會(huì)增加算法的運(yùn)行時(shí)間,但同時(shí)為邊緣計(jì)算提供了更高的安全性和穩(wěn)定性。因此,本文算法適用于對(duì)安全性要求較高的邊緣計(jì)算場(chǎng)景。 為了測(cè)試本方法抵抗中毒攻擊的能力,采用文獻(xiàn)[29]中的標(biāo)簽翻轉(zhuǎn)攻擊生成投毒樣本,即更改訓(xùn)練樣本的標(biāo)簽并保持樣本特征不變,然后將投毒樣本分配給指定的攻擊者。具體地,對(duì)于MNIST 數(shù)據(jù)集,將樣本中的源標(biāo)簽“1”改為目標(biāo)標(biāo)簽“8”;對(duì)于CIFAR10 數(shù)據(jù)集,將樣本中的源標(biāo)簽“狗”改為目標(biāo)標(biāo)簽“馬”。為了消除其他標(biāo)簽的影響,僅使用帶有目標(biāo)和源標(biāo)簽的樣本訓(xùn)練二進(jìn)制分類(lèi)器,并從測(cè)試數(shù)據(jù)集中隨機(jī)選擇500 個(gè)帶有源標(biāo)簽的樣本測(cè)試攻擊成功率,即樣本的源標(biāo)簽被預(yù)測(cè)為目標(biāo)標(biāo)簽所占的比例。 首先將投毒樣本的比例分為設(shè)置為30%、40%和50%,運(yùn)行20 次實(shí)驗(yàn),取平均值,并與原始的聯(lián)邦學(xué)習(xí)算法[2]進(jìn)行對(duì)比,如圖6 所示。 由圖6 可知,由于隱私預(yù)算的限制,本文算法在MNIST 和CIFAR10 數(shù)據(jù)集上迭代至一定輪數(shù)時(shí)停止。當(dāng)投毒樣本為30%時(shí),本文算法在迭代后期能夠逐漸收斂至接近于無(wú)投毒樣本的原始聯(lián)邦學(xué)習(xí)。但是當(dāng)投毒樣本為40%和50%時(shí),本文算法難以收斂。因此可認(rèn)為本文算法能夠抵抗30%的中毒攻擊。 圖7 進(jìn)一步展示了30%的投毒樣本對(duì)于原始聯(lián)邦學(xué)習(xí)和本文算法的攻擊成功率??梢?jiàn),由于原始聯(lián)邦學(xué)習(xí)無(wú)法檢測(cè)中毒攻擊,導(dǎo)致攻擊成功率幾乎一直大于50%。而本文算法的攻擊成功率在迭代后期逐漸降至10%以下。這是因?yàn)楸疚乃惴ㄔ?.3.2 節(jié)的激勵(lì)機(jī)制中規(guī)定,設(shè)備一旦被檢測(cè)出中毒攻擊就會(huì)被扣除一定數(shù)量的代幣,且當(dāng)代幣數(shù)量歸零時(shí)不允許參與訓(xùn)練。實(shí)驗(yàn)數(shù)據(jù)表明,本文算法進(jìn)入迭代后期時(shí),在MNIST 和CIFAR10 數(shù)據(jù)集上分別有4 個(gè)和5 個(gè)設(shè)備被禁止參與訓(xùn)練,因此本文算法有效降低了攻擊成功率。 本文通過(guò)結(jié)合區(qū)塊鏈和聯(lián)邦學(xué)習(xí)提出了一種應(yīng)用于邊緣計(jì)算的隱私保護(hù)方法。利用聯(lián)邦學(xué)習(xí)為多設(shè)備建立協(xié)同訓(xùn)練平臺(tái),引入?yún)^(qū)塊鏈實(shí)現(xiàn)訓(xùn)練過(guò)程的去中心化和可審計(jì)性。針對(duì)攻擊者對(duì)本地設(shè)備發(fā)起的中毒攻擊,設(shè)計(jì)梯度驗(yàn)證算法檢測(cè)惡意更新,并通過(guò)激勵(lì)機(jī)制鼓勵(lì)更多設(shè)備加入聯(lián)邦學(xué)習(xí)。針對(duì)網(wǎng)絡(luò)邊緣處潛在的隱私泄露問(wèn)題,設(shè)計(jì)自適應(yīng)差分隱私機(jī)制保護(hù)參數(shù)隱私并減小噪聲對(duì)模型準(zhǔn)確性的影響。在MNIST 和CIFAR10 數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),與原始聯(lián)邦學(xué)習(xí)和基于差分隱私的聯(lián)邦學(xué)習(xí)進(jìn)行對(duì)比,表明本文算法能以較高的準(zhǔn)確性實(shí)現(xiàn)隱私保護(hù)和抗中毒攻擊能力,且無(wú)須依賴(lài)可信環(huán)境和特殊硬件設(shè)施。下一步將考慮設(shè)計(jì)效率更高的梯度驗(yàn)證算法和共識(shí)協(xié)議,以應(yīng)用于時(shí)延更小的邊緣計(jì)算場(chǎng)景。3.4 隱私性分析
4 實(shí)驗(yàn)過(guò)程及結(jié)果分析
4.1 隱私預(yù)算消耗
4.2 算法的準(zhǔn)確率
4.3 吞吐量和運(yùn)行時(shí)間
4.4 抵抗中毒攻擊能力
5 結(jié)束語(yǔ)