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