王啟正,高 玲
山東師范大學(xué)信息科學(xué)與工程學(xué)院,濟(jì)南 250100
云計(jì)算是近年來新興的一種新型計(jì)算模式,可以靈活配置多種計(jì)算環(huán)境,滿足用戶的計(jì)算需求.2011年,在IT 行業(yè)十大戰(zhàn)略技術(shù)報(bào)告中,Gartner 認(rèn)為云計(jì)算技術(shù)是十大戰(zhàn)略技術(shù)中最重要的技術(shù)[1].隨著云計(jì)算使用者數(shù)量的增長,出現(xiàn)的問題也變得尖銳,在Gartner 的調(diào)查報(bào)告中,87.5% 的用戶擔(dān)心安全問題.不管是以往發(fā)生過的泄密事件,還是剛剛發(fā)現(xiàn)的CPU 漏洞(Meltdown,Spectre),都讓人在使用這個(gè)工具的同時(shí),為自己數(shù)據(jù)的安全擔(dān)心.
對(duì)于用戶來說,數(shù)據(jù)保護(hù)顯得非常被動(dòng),雖然云計(jì)算安全一直在發(fā)展,但大多是策略層面的訪問控制,一旦云端的防護(hù)被攻破,用戶的數(shù)據(jù)將會(huì)直接暴露給攻擊者.但是如果存放的是使用傳統(tǒng)的加密方法加密的數(shù)據(jù),又無法滿足密態(tài)數(shù)據(jù)計(jì)算的要求.同態(tài)加密的特性恰好契合數(shù)據(jù)保密和運(yùn)算的需求.
從Agrawal 和Srikant 提出隱私保護(hù)的數(shù)據(jù)挖掘技術(shù)[2](privacy-preserving data mining)以來,主流的機(jī)器學(xué)習(xí)技術(shù)都出現(xiàn)了隱私保護(hù)問題的解決方案,比如:決策樹[3]、神經(jīng)網(wǎng)絡(luò)[4]、支持向量機(jī)[5]等.
隱私數(shù)據(jù)處理出于兩個(gè)層面的考慮,一是在不暴露自己數(shù)據(jù)給對(duì)方的前提下,獲得自己想要的計(jì)算結(jié)果;另一個(gè)是,在攻擊方攻破防護(hù),得到的數(shù)據(jù)或者中間數(shù)據(jù)依然是沒有意義的密文.
本文中的隱私保護(hù)數(shù)據(jù)使用神經(jīng)網(wǎng)絡(luò)分類,可以描述為:兩個(gè)參與方Alice 和Bob,Alice 是數(shù)據(jù)持有方,Bob 是神經(jīng)網(wǎng)絡(luò)持有方.Alice 想要在不泄露自己信息的前提下,使用Bob 的神經(jīng)網(wǎng)絡(luò)來獲得自己想要的分類結(jié)果.在Alice 得到結(jié)果后,Bob 不知道Alice 的數(shù)據(jù),Alice 也不知道關(guān)于Bob 的神經(jīng)網(wǎng)絡(luò)的內(nèi)容.
二十世紀(jì)八十年代以來,神經(jīng)網(wǎng)絡(luò)就成為人工智能領(lǐng)域研究的熱點(diǎn)之一.神經(jīng)網(wǎng)絡(luò)是一定程度上人腦神經(jīng)網(wǎng)絡(luò)的抽象,通過不同的權(quán)重、不同的網(wǎng)絡(luò)結(jié)構(gòu)、不同的激勵(lì)函數(shù)的組合,構(gòu)成一個(gè)數(shù)學(xué)模型,來對(duì)輸入數(shù)據(jù)與輸出數(shù)據(jù)形成一個(gè)線性或非線性的映射關(guān)系.一個(gè)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)可以高效準(zhǔn)確地完成對(duì)輸入數(shù)據(jù)的分類和識(shí)別.一般來說,可以把神經(jīng)網(wǎng)絡(luò)分為前饋神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò).在前饋網(wǎng)絡(luò)中神經(jīng)網(wǎng)絡(luò)分為三層:輸入層、隱藏層和輸出層,信息僅從一個(gè)方向傳輸,從輸入層節(jié)點(diǎn),通過隱藏層節(jié)點(diǎn)傳輸?shù)捷敵鰧庸?jié)點(diǎn).前饋網(wǎng)絡(luò)因此沒有周期或循環(huán).19 世紀(jì)末,美國心理學(xué)家James 關(guān)于人腦與功能的研究打開了神經(jīng)網(wǎng)絡(luò)的大門.50年后,由McCulloch 和Pitts 創(chuàng)建的M-P 模型,開創(chuàng)了神經(jīng)網(wǎng)絡(luò)研究的新時(shí)代[6].神經(jīng)網(wǎng)絡(luò)整個(gè)發(fā)展歷史可以總結(jié)為啟蒙、低潮、復(fù)興和高潮,時(shí)至今日,神經(jīng)網(wǎng)絡(luò)仍處于發(fā)展的高峰期.經(jīng)典的神經(jīng)網(wǎng)絡(luò)有:BP 神經(jīng)網(wǎng)絡(luò)[7]、SOFM 神經(jīng)網(wǎng)絡(luò)[8]、玻爾茲曼機(jī)[9]等.
本文使用同態(tài)加密(homomorphic encryption,HE)來構(gòu)造了一個(gè)可以對(duì)隱私保護(hù)數(shù)據(jù)進(jìn)行處理的神經(jīng)網(wǎng)絡(luò),設(shè)計(jì)了一個(gè)可以支持同態(tài)運(yùn)算屬性的激勵(lì)函數(shù).文章分6 節(jié):第1 節(jié)介紹神經(jīng)網(wǎng)絡(luò)處理隱私保護(hù)數(shù)據(jù)的研究背景,以及介紹本文所做的工作以及文章的結(jié)構(gòu).第2 節(jié)介紹使用的工具,第3 節(jié)構(gòu)造一種處理隱私保護(hù)數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò).第4 節(jié)提出一種基于茫然傳輸(obvious transfer)的解決方案,進(jìn)一步優(yōu)化神經(jīng)網(wǎng)絡(luò)的安全方面表現(xiàn),第5 節(jié)分析本文構(gòu)造的神經(jīng)網(wǎng)絡(luò)的速度上的表現(xiàn).第6 節(jié)總結(jié)全文.
同態(tài)加密(HE)是安全多方計(jì)算的常用技術(shù),是當(dāng)今網(wǎng)絡(luò)時(shí)代的熱門技術(shù)之一.同態(tài)加密可以有效減少數(shù)據(jù)持有方的數(shù)據(jù)在網(wǎng)絡(luò)環(huán)境中出現(xiàn)的次數(shù).設(shè)Encrypt 是加密算法,Decrypt 是解密算法,m是明文,f代表某個(gè)二元函數(shù),⊕代表某種代數(shù)運(yùn)算.傳統(tǒng)的加密算法中,Decrypt(f(Encrypt(m1),Encrypt(m2)))Decrypt(m1⊕m2),此時(shí)會(huì)面臨安全與計(jì)算能力的取舍.
同態(tài)加密可以實(shí)現(xiàn)Decrypt(f(Encrypt(m1),Encrypt(m2)))=Decrypt(m1⊕m2),這就為密文在網(wǎng)絡(luò)中進(jìn)行復(fù)雜運(yùn)算提供了可能性.現(xiàn)在使用最多的是部分同態(tài)加密,根據(jù)滿足運(yùn)算的不同,分為加同態(tài)和乘同態(tài).比如Paillier 加密是加法同態(tài)[10],RSA 是乘法同態(tài)[11,12].如果加法和乘法都滿足則稱作全同態(tài)加密算法[13],全同態(tài)加密的概念已經(jīng)提出了很久,但直到2009年Gentry 才構(gòu)造出基于“格” 的全同態(tài)加密算法[14],但由于計(jì)算效率低,還無法大規(guī)模的應(yīng)用.
同態(tài)加密是安全多方計(jì)算中重要的工具.在Li 等人提出的同態(tài)加密之前[15],不管是Paillier、RSA還是ElGamal,這些同態(tài)加密算法都是公鑰體系下的加密算法,加密解密的過程計(jì)算量很大,Li 等人設(shè)計(jì)出的對(duì)稱同態(tài)加密方案,跳脫出了公鑰加密體系,所以在時(shí)間表現(xiàn)上比傳統(tǒng)的非對(duì)稱同態(tài)加密方案好很多.
2.1.1 Li的同態(tài)加密算法
文獻(xiàn)[15]設(shè)計(jì)的加密算法是一種加同態(tài)、有限次乘同態(tài)的對(duì)稱加密算法,其同態(tài)特性表現(xiàn)為對(duì)密文進(jìn)行某種計(jì)算,解密后與明文進(jìn)行相應(yīng)的計(jì)算結(jié)果相同.這種加密算法是一種概率加密算法,對(duì)于同一明文,n次加密得到的結(jié)果均不相同,保證了密文的語義安全.這種加密算法的加密解密過程如下:
密鑰生成:將密鑰生成算法記為KeyGen()
密鑰生成算法KeyGen()是一個(gè)概率加密算法,它將安全參數(shù)λ作為輸入并輸出密鑰SK=(s,q)以及公共參數(shù)p.p和q都是大素?cái)?shù),其中,p遠(yuǎn)大于q(p?q).q的比特長度取決于λ,s是中的一個(gè)隨機(jī)數(shù).
加密算法:將加密算法記為E():
加密算法E()是一種概率算法,它采用秘密密鑰SK,明文m∈Fq和參數(shù)d作為輸入,加密算法會(huì)得到一個(gè)密文c:
參數(shù)d是一個(gè)可選的小整數(shù),我們稱作d為密文等級(jí),將c稱作d等級(jí)的密文.r是一個(gè)正隨機(jī)數(shù),我們記|r| 為r的比特長度,|q| 和|p| 分別是q和p的比特長度,這三個(gè)參數(shù)需要滿足|r|+|q|<|p|,很顯然,r就是密文c的隨機(jī)元素,加密明文m的過程我們簡(jiǎn)稱為E(m).
解密算法:將解密算法記為D():
解密算法D()是一個(gè)確定性算法,它將秘密密鑰SK,密文c∈Fq和密文的密文等級(jí)d作為輸入,該算法輸出明文m←D(SK,c,d).令s?d表示字段Fq中sd的乘法倒數(shù).下面證明解密算法的正確性:
乘法同態(tài)性質(zhì)的說明:讓c1,c2作為明文m1,m2的密文,然后,我們有隨機(jī)因素r1、r2的式子c1=sd1(r1q+m1)modp和c2=sd2(r2q+m2)modp.如下所示,給出d1等級(jí)的密文c1和d2等級(jí)的密文c2,m1×m2的d1+d2等級(jí)的密文可以用一個(gè)模乘來計(jì)算.在密文中如果想通過解密得到m1×m2,必須滿足(r1r2q+r1m2+m1r2)q+m1×m2
|m1|、|q|>|m2| 且|r1r2q|>|r1m2|+|m1r2|,所以我們只需保證|r1|+|r2|+2|q|+1<|p|.
運(yùn)算過程如下:
加法同態(tài)性質(zhì)的說明:讓c1,c2作為明文m1,m2的密文,由于modp的存在,m1+m2的結(jié)果是p群里的結(jié)果.如果d1=d2,則可以通過模加的運(yùn)算得到密文,其中必須滿足(r1+r2)q+m1+m2
運(yùn)算過程如下:
純量乘法同態(tài)性質(zhì)的說明:讓c1作為明文m1的密文,明文m2,為了正確解密c1×m2,必須滿足(r1m2q+m1m2)
茫然傳輸最初由Rabin 在1981年提出[16],發(fā)展到今天已經(jīng)成為重要的基礎(chǔ)原語,并且被廣泛用于其他密碼學(xué)協(xié)議的構(gòu)造.茫然傳輸協(xié)議包含兩個(gè)參與方:R和S,其中S有n個(gè)值,R希望得到自己想要的值,但是不泄露自己的選擇信息,而S希望R只得到自己想要的信息,而不能得到S其他的信息,具體表述如下:
輸入:S輸入若干個(gè)值,(x1,x2,···,xn)∈{0,1}n,R 輸入一個(gè)值i∈(1,2,···,n).
輸出:R輸出xi.
針對(duì)FOT1n構(gòu)造的協(xié)議必須滿足R 僅能得到xi而不泄露i.
本節(jié)假設(shè)存在一個(gè)經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò),并根據(jù)這個(gè)神經(jīng)網(wǎng)絡(luò)構(gòu)造一個(gè)可以處理隱私保護(hù)數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò).然后針對(duì)激勵(lì)函數(shù)進(jìn)行進(jìn)一步的構(gòu)造,使其可以適應(yīng)隱私保護(hù)數(shù)據(jù)的計(jì)算.
Rumelhart 和McCelland 提出的多層前饋網(wǎng)絡(luò)的誤差反向傳播算法(error back propagation)是一個(gè)經(jīng)典的神經(jīng)網(wǎng)絡(luò)算法,簡(jiǎn)稱為BP 算法[17].本文中以一個(gè)3 層BP 神經(jīng)網(wǎng)絡(luò)為例(輸入層,隱藏層,輸出層).文中的構(gòu)造方法是以一個(gè)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)為例,所以我們假設(shè)算法持有方有一個(gè)已經(jīng)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò).神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示,左邊是輸入層,中間是多個(gè)隱藏層,右邊是輸出層.每個(gè)節(jié)點(diǎn)的值都是上一層若干個(gè)節(jié)點(diǎn)的值乘以相應(yīng)權(quán)重和激勵(lì)函數(shù)的映射后的值通過累加得到的.我們?cè)O(shè)節(jié)點(diǎn)的值為p,節(jié)點(diǎn)所在的層數(shù)為i,節(jié)點(diǎn)所在該層的位置為j,權(quán)重為w,w下標(biāo)代表連接的兩個(gè)節(jié)點(diǎn)的位置,例如w(i,j)(i+1,j+1)代表節(jié)點(diǎn)pi,j與節(jié)點(diǎn)pi+1,j+1連接的權(quán)重.我們?cè)O(shè)第i層有m個(gè)節(jié)點(diǎn).激勵(lì)函數(shù)為f(),則神經(jīng)網(wǎng)絡(luò)中節(jié)點(diǎn)之間的計(jì)算可以用下面的算式來表示:
由于神經(jīng)網(wǎng)絡(luò)的連接結(jié)構(gòu)不同,可能上面會(huì)有缺項(xiàng).
圖1 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖Figure 1 Neural network structure diagram
一個(gè)神經(jīng)網(wǎng)絡(luò)如果沒有激勵(lì)函數(shù)(activation function)的話,在某些情景下,無法準(zhǔn)確的描述數(shù)據(jù)與類型之間的關(guān)系[18].人腦對(duì)刺激的反應(yīng)特點(diǎn)之一是人腦對(duì)刺激的反應(yīng)并不是與刺激的強(qiáng)度呈線性正相關(guān)[19].本文中的神經(jīng)網(wǎng)絡(luò)使用同態(tài)加密可以對(duì)隱私保護(hù)數(shù)據(jù)進(jìn)行分類,為了迎合同態(tài)計(jì)算,并考慮激勵(lì)函數(shù)的作用,設(shè)計(jì)了一個(gè)分段函數(shù)的激勵(lì)函數(shù),其中每一段函數(shù)都是線性的.
該激勵(lì)函數(shù)有兩個(gè)特點(diǎn):一是可以將各個(gè)節(jié)點(diǎn)的值映射到(0,1)范圍內(nèi),二是通過控制k與b的值使得該節(jié)點(diǎn)對(duì)很高或很低的值的變化反應(yīng)不明顯,對(duì)中間范圍的值的變化反應(yīng)明顯.激勵(lì)函數(shù)圖像見圖2.
圖2 激勵(lì)函數(shù)圖像Figure 2 Activation function image
考慮到實(shí)際應(yīng)用的場(chǎng)景,我們提出了圖3 的結(jié)構(gòu).該結(jié)構(gòu)有3 個(gè)參與方:數(shù)據(jù)持有方,算法持有方和云.其中數(shù)據(jù)持有方不想向算法持有方和云端暴露自己的數(shù)據(jù),并且算法持有方不想向數(shù)據(jù)持有方暴露自己的神經(jīng)網(wǎng)絡(luò).
圖3 隱私保護(hù)的神經(jīng)網(wǎng)絡(luò)協(xié)議結(jié)構(gòu)圖Figure 3 Neural network protocol structure diagram of privacy protection
第一步,在3.2 節(jié)的激勵(lì)函數(shù)中,由于輸入算法的密文,無法直接和b相加,出于計(jì)算方便的考慮,算法持有方會(huì)把激勵(lì)函數(shù)參數(shù)b發(fā)送到數(shù)據(jù)持有方,生成密鑰SK(s,q,p)=KeyGen(λ),生成隨機(jī)數(shù)ri對(duì)參數(shù)b進(jìn)行加密然后發(fā)還給算法持有方:
在數(shù)據(jù)持有方本地,對(duì)數(shù)據(jù)的矩陣[m1,m2,···,mi]進(jìn)行加密.如第2 節(jié)中描述的,在本地對(duì)數(shù)據(jù)矩陣進(jìn)行加密,使用第一步生成的密鑰SK 與選取的隨機(jī)數(shù)ri得到密文ci:
在3.1 節(jié)中的算式可以看到,如果激勵(lì)函數(shù)使用3.2 節(jié)中我們構(gòu)造的算式,神經(jīng)網(wǎng)絡(luò)的算式全都是線性計(jì)算.
云/服務(wù)器端得到加密的數(shù)據(jù)矩陣和神經(jīng)網(wǎng)絡(luò),含參數(shù)加密cbi的激勵(lì)函數(shù)記做f,我們?cè)O(shè)節(jié)點(diǎn)的值為pi,j,節(jié)點(diǎn)所在的層數(shù)為i,節(jié)點(diǎn)所在該層的位置為j,權(quán)重為w,w下標(biāo)代表連接的兩個(gè)節(jié)點(diǎn)的位置,例如w(i,j)(i+1,j+1)代表節(jié)點(diǎn)pi,j與節(jié)點(diǎn)pi+1,j+1連接的權(quán)重,k為激勵(lì)函數(shù)的斜率,k下標(biāo)代表連接的兩個(gè)節(jié)點(diǎn)的位置,例如k(i,j)(i+1,j+1)代表節(jié)點(diǎn)pi,j與節(jié)點(diǎn)pi+1,j+1之間的對(duì)應(yīng)k的值,b為激勵(lì)函數(shù)的截距,b下標(biāo)代表連接的兩個(gè)節(jié)點(diǎn)的位置,例如b(i,j)(i+1,j+1)代表節(jié)點(diǎn)pi,j與節(jié)點(diǎn)pi+1,j+1之間的對(duì)應(yīng)b的值.節(jié)點(diǎn)間計(jì)算如圖4 所示,
我們?cè)O(shè)第i層有m個(gè)節(jié)點(diǎn),則神經(jīng)網(wǎng)絡(luò)中節(jié)點(diǎn)之間的運(yùn)算,在密態(tài)數(shù)據(jù)下可以寫做:
圖4 節(jié)點(diǎn)間計(jì)算示意圖Figure 4 Computing schematic diagram among nodes
正確性分析:文中的神經(jīng)網(wǎng)絡(luò)第2 層第j個(gè)節(jié)點(diǎn)接收輸入層的密文的加權(quán)數(shù)據(jù),經(jīng)過激勵(lì)函數(shù)f()的運(yùn)算,得到下個(gè)節(jié)點(diǎn)的值,解密后結(jié)果與明文做相應(yīng)運(yùn)算結(jié)果相同.現(xiàn)證明如下:
設(shè)輸入數(shù)據(jù)為[m1,m2,···,mm],對(duì)應(yīng)的密文為[c1,c2,···,cm]:
安全性分析:本文中構(gòu)造的神經(jīng)網(wǎng)絡(luò),可以實(shí)現(xiàn)數(shù)據(jù)的安全,并且神經(jīng)網(wǎng)絡(luò)不暴露給數(shù)據(jù)持有方.
數(shù)據(jù)安全:數(shù)據(jù)持有方的數(shù)據(jù)使用文獻(xiàn)[13]的對(duì)稱同態(tài)加密算法,同態(tài)加密方案的安全性取決于求解非線性系統(tǒng)的難度.在本文使用的同態(tài)加密方案中,為了加密一個(gè)明文mi并獲得相應(yīng)的密文ci,我們需要使用兩個(gè)秘密參數(shù)q,s和一個(gè)隨機(jī)數(shù)ri.從已知的(mi,ci)對(duì)中,攻擊者需要求解三個(gè)未知數(shù)q,s,ri的非線性方程:
我們認(rèn)為攻擊者具有多項(xiàng)式計(jì)算能力,這個(gè)方案是NP 難問題,所以我們認(rèn)為這個(gè)方案是安全的.
算法安全:假設(shè)云/服務(wù)器端與數(shù)據(jù)持有方不合謀.算法持有方在方案中只會(huì)向數(shù)據(jù)持有方透露自己激勵(lì)函數(shù)的參數(shù)b.數(shù)據(jù)持有方在整個(gè)方案中,只知道自己的數(shù)據(jù)mi和神經(jīng)網(wǎng)絡(luò)激勵(lì)函數(shù)的參數(shù)b,算法持有方不會(huì)向數(shù)據(jù)持有方暴露自己的算法.
第3 節(jié)構(gòu)造的神經(jīng)網(wǎng)絡(luò),雖然實(shí)現(xiàn)了對(duì)原數(shù)據(jù)的信息加密,但是在輸入層和第一層隱藏層之間的激勵(lì)函數(shù)處理數(shù)據(jù)的時(shí)候,神經(jīng)網(wǎng)絡(luò)會(huì)對(duì)數(shù)據(jù)進(jìn)行范圍判斷,如果攻擊者攻擊了云/服務(wù)器,就會(huì)泄露原數(shù)據(jù)的范圍.為了隱藏輸入數(shù)據(jù)的范圍,本文使用了1-out-of-n茫然傳輸協(xié)議.
出于隱藏?cái)?shù)據(jù)范圍的考慮,我們?cè)O(shè)計(jì)了圖5 的協(xié)議,這個(gè)協(xié)議中有4 個(gè)參與方:數(shù)據(jù)持有方、算法持有方、云A 和云B.其中數(shù)據(jù)持有方不想讓算法持有方、云A 和云B 學(xué)習(xí)到關(guān)于自己數(shù)據(jù)的任何信息,包括數(shù)據(jù)的范圍,同時(shí)算法持有方不想將自己算法暴露給數(shù)據(jù)持有方.
圖5 基于茫然傳輸?shù)碾[私保護(hù)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖Figure 5 Schematic diagram of privacy protection neural network based on obvious transfer
假設(shè)協(xié)議中任意兩方不合謀.Cloud A 將激勵(lì)函數(shù)發(fā)送到Cloud B,但并未告知Cloud B 激勵(lì)函數(shù)的分段范圍,而是將分段范圍告知了local,并與local 協(xié)商了分段范圍與標(biāo)記的對(duì)應(yīng)關(guān)系,local 將數(shù)據(jù)發(fā)往Cloud B,選擇某段函數(shù)進(jìn)行運(yùn)算,運(yùn)算結(jié)果發(fā)回Cloud A 進(jìn)行下一步運(yùn)算.整個(gè)方案Cloud B 僅得知了激勵(lì)函數(shù),由于不知道激勵(lì)函數(shù)的分段,也僅得到數(shù)據(jù)的密文,所以不知道local 數(shù)據(jù)的范圍;local 知道激勵(lì)函數(shù)的范圍,但是不知道激勵(lì)函數(shù)的算式,假設(shè)任意兩方不合謀,所以可以有效的實(shí)現(xiàn)local 數(shù)據(jù)持有方數(shù)據(jù)的隱藏,算法持有方算法不向數(shù)據(jù)持有方暴露.協(xié)議中各參與方的信息掌握情況如表1 所示.
實(shí)際應(yīng)用中,使用比較廣泛的是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法和貝葉斯學(xué)習(xí)算法.Barni 在2006年構(gòu)造了一種隱私保護(hù)的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)協(xié)議[20],整個(gè)交互的過程涉及到數(shù)據(jù)提供方和神經(jīng)網(wǎng)絡(luò)提供方,雙方均不想暴露給對(duì)方自己的信息.但是數(shù)據(jù)提供方在得到返回?cái)?shù)據(jù)時(shí)有可能得到算法提供方的激勵(lì)函數(shù).Barni 使用的Paillier 公鑰加密,隱私保護(hù)數(shù)據(jù)計(jì)算本就消耗巨大,公鑰加密進(jìn)一步提高了計(jì)算成本.Wan 等人為安全計(jì)算梯度下降方法提供了一個(gè)通用公式[21].作者討論了可用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的垂直分區(qū)數(shù)據(jù)的多方協(xié)議.為確保隱私,目標(biāo)函數(shù)被定義為兩個(gè)函數(shù)的組合.因此,權(quán)重可以在本地進(jìn)行調(diào)整.這個(gè)方案只能應(yīng)用于結(jié)構(gòu)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)模型.Han[22]等人提出了一種隱私保護(hù)版本的自組織映射(self organizing maps,SOM).SOM 屬于無監(jiān)督學(xué)習(xí)技術(shù)的一類,并且被應(yīng)用于例如降維.作者提出了一個(gè)兩方協(xié)議來反復(fù)調(diào)整垂直分區(qū)數(shù)據(jù)的網(wǎng)絡(luò)權(quán)重.
表1 協(xié)議中參與方信息掌握情況Table 1 Information of participants in agreement
樸素貝葉斯分類法在某些數(shù)據(jù)的分類上,有著高準(zhǔn)確率和速度,貝葉斯分類是根據(jù)貝葉斯定理:
隱私保護(hù)的樸素貝葉斯分類的核心問題是如何安全的計(jì)算P(X|Ci)×P(Ci),文獻(xiàn)[23]中,解決辦法是將這個(gè)乘問題,以取自然對(duì)數(shù)的形式轉(zhuǎn)換為加問題,即:
由貝葉斯定理可知,樸素貝葉斯分類法的前提是對(duì)象的屬性值對(duì)類別的影響?yīng)毩⒂谄渌麑傩灾?并且不同的屬性值對(duì)類別的影響程度也是一樣,在處理實(shí)際數(shù)據(jù)的時(shí)候這一條件過于苛刻,所以實(shí)際應(yīng)用中大部分場(chǎng)景效果并不理想.
本文的神經(jīng)網(wǎng)絡(luò)在加入1-out-of-n茫然傳輸協(xié)議后,只會(huì)向數(shù)據(jù)持有方暴露激勵(lì)函數(shù)的一個(gè)參數(shù);并且使用的對(duì)稱同態(tài)加密,一定程度上降低了計(jì)算成本.本文的神經(jīng)網(wǎng)絡(luò)是利用同態(tài)性質(zhì)對(duì)已存在神經(jīng)網(wǎng)絡(luò)進(jìn)行的重新構(gòu)造,理論上可以適應(yīng)所有的神經(jīng)網(wǎng)絡(luò),所以適用的場(chǎng)景會(huì)更廣一些.
在前面提到,處理隱私保護(hù)數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)處理的數(shù)據(jù)是同態(tài)加密算法,最終數(shù)據(jù)持有方得到云/服務(wù)器端發(fā)回的密態(tài)結(jié)果,在本地進(jìn)行解密得到分類結(jié)果.第2 節(jié)中提到的同態(tài)加密算法是一種線性時(shí)間復(fù)雜度O(n)的加密算法,設(shè)神經(jīng)網(wǎng)絡(luò)第一層為n1,第二層為n2,第i層為ni,神經(jīng)網(wǎng)絡(luò)處理一個(gè)數(shù)據(jù)的時(shí)間復(fù)雜度為O(n1×n2+n2×n3+···+ni?1×ni)=O((i?1)n2),處理m個(gè)樣本的時(shí)間復(fù)雜復(fù)雜度為O(m(i?1)n2),則整體的總時(shí)間復(fù)雜度為O(m(i?1)n2+mn)=O(m(i?1)n2).因?yàn)樗惴ㄟx取的都是大數(shù),運(yùn)算需要使用大數(shù)運(yùn)算函數(shù),并且密文不能與小數(shù)直接做運(yùn)算,不管是使用小數(shù)整數(shù)分離計(jì)算的方式,還是參數(shù)擴(kuò)大的方式來消除小數(shù)部分,都會(huì)帶來額外的開銷,所以實(shí)際的時(shí)間消耗比時(shí)間復(fù)雜度會(huì)大一些.
隱私保護(hù)數(shù)據(jù)的分類是云計(jì)算發(fā)展和人們對(duì)信息保密性逐漸重視應(yīng)運(yùn)而生的產(chǎn)物,目的是對(duì)數(shù)據(jù)進(jìn)行分類和預(yù)測(cè)的時(shí)候數(shù)據(jù)持有方不暴露給攻擊者和算法持有方自己的原始數(shù)據(jù),算法持有方也不暴露自己完整的分類器,利用安全多方計(jì)算對(duì)隱私保護(hù)數(shù)據(jù)進(jìn)行分類和預(yù)測(cè)是主要思路之一.
本文基于同態(tài)加密構(gòu)造了一種處理隱私保護(hù)數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò),設(shè)計(jì)了一種適用于本文神經(jīng)網(wǎng)絡(luò)的線性分段激勵(lì)函數(shù),并且進(jìn)行了正確性、安全性和時(shí)間復(fù)雜度的分析.為了解決使用分段激勵(lì)函數(shù)會(huì)暴露數(shù)據(jù)范圍的問題,構(gòu)造了一種使用1-out-of-n茫然傳輸協(xié)議的隱私保護(hù)神經(jīng)網(wǎng)絡(luò).
機(jī)器學(xué)習(xí)算法如何處理隱私保護(hù)數(shù)據(jù),是一個(gè)具有現(xiàn)實(shí)研究意義的問題,雖然現(xiàn)在已有一些機(jī)器學(xué)習(xí)的安全計(jì)算協(xié)議,但是其安全性和復(fù)雜度仍有很大的提升空間,未來面對(duì)大型數(shù)據(jù)和更深層的神經(jīng)網(wǎng)絡(luò),復(fù)雜度問題仍然是一個(gè)核心待解決的問題.