丁 毅,沈 薇,李海生,鐘瓊慧,田明宇,李 潔
(1. 北京物資學(xué)院信息學(xué)院,北京 101149;2. 北京工商大學(xué)農(nóng)產(chǎn)品質(zhì)量安全追溯技術(shù)及應(yīng)用國(guó)家工程實(shí)驗(yàn)室,北京 100048;3. 北京工商大學(xué)計(jì)算機(jī)學(xué)院,北京 100048)
當(dāng)前,人類(lèi)社會(huì)已經(jīng)步入了移動(dòng)互聯(lián)網(wǎng)時(shí)代,智能計(jì)算、移動(dòng)便捷以及隱私安全成為重要的發(fā)展趨勢(shì). 如何能在保護(hù)用戶(hù)隱私信息的前提下,加強(qiáng)移動(dòng)終端的計(jì)算能力,提高高智能計(jì)算服務(wù)體驗(yàn),是一個(gè)亟待解決的問(wèn)題.
在這種背景下,利用云服務(wù)來(lái)完成人工智能計(jì)算的模式出現(xiàn)了,它既可解決邊緣設(shè)備計(jì)算力不足的問(wèn)題,又可發(fā)揮移動(dòng)特性. 以基于卷積神經(jīng)網(wǎng)絡(luò)(Convolu?tional Neural Network,CNN)的圖像分類(lèi)為場(chǎng)景,探索新模式應(yīng)用的關(guān)鍵技術(shù),目前面臨著以下兩個(gè)方面的挑戰(zhàn).
(1)用戶(hù)隱私保護(hù)是應(yīng)用的重要前提.2018年歐盟制定的《通用數(shù)據(jù)保護(hù)條例》[1](General Data Protection Regulation,GDPR)提出加強(qiáng)對(duì)個(gè)人數(shù)據(jù)在隱私和安全方面的保護(hù). 用戶(hù)終端數(shù)據(jù)涉及大量用戶(hù)信息,將其直接發(fā)送到云端缺乏安全保障,具有泄露風(fēng)險(xiǎn). 云服務(wù)商也容易過(guò)度使用這些數(shù)據(jù)或私自銷(xiāo)售,謀取利益[2]. 用戶(hù)數(shù)據(jù)隱私保護(hù)是安全計(jì)算外包模式的基本要求[3].
(2)傳統(tǒng)云服務(wù)是由云供應(yīng)商控制和維護(hù)的,包括服務(wù)和權(quán)益規(guī)則,以及交易和服務(wù)數(shù)據(jù),缺乏有效的共同參與和管理機(jī)制,約束力和透明度不足,出現(xiàn)糾紛難于追責(zé). 同時(shí),容易產(chǎn)生大的云服務(wù)商壟斷、小的云服務(wù)商難以生存的現(xiàn)象,不利于市場(chǎng)良性發(fā)展和資源的有效整合.
為了應(yīng)對(duì)上述挑戰(zhàn),本文研究面向CNN 的區(qū)塊鏈可信隱私服務(wù)計(jì)算模型. 以典型應(yīng)用為場(chǎng)景,利用同態(tài)加密技術(shù),在保護(hù)用戶(hù)隱私的前提下,有效利用計(jì)算資源為邊緣設(shè)備提供算力服務(wù),智能合約和區(qū)塊鏈可加強(qiáng)服務(wù)權(quán)益管理的公開(kāi)透明.
本節(jié)從同態(tài)計(jì)算、云計(jì)算隱私保護(hù)、卷積神經(jīng)網(wǎng)絡(luò)隱私保護(hù)等方面展開(kāi)分析.
(1)同態(tài)加密技術(shù)
1978年Rivest首次提出同態(tài)加密的概念,即對(duì)密文進(jìn)行運(yùn)算的結(jié)果與對(duì)明文進(jìn)行相應(yīng)運(yùn)算的結(jié)果是等效的. 無(wú)需解密,通過(guò)處理密文即可獲得需要的計(jì)算結(jié)果,這是數(shù)據(jù)隱私保護(hù)的重要手段,具有重要意義[4~6].
2009 年Gentry[7]提出了基于理想格的全同態(tài)加密方案,復(fù)雜度高的限制造成密文數(shù)據(jù)擴(kuò)張問(wèn)題不能有效解決,影響實(shí)際應(yīng)用.Van Dijk 等人[8]使用基本的模運(yùn)算設(shè)計(jì)了同態(tài)加密方案(Dijk Gentry Halevi Vaiku?tanathan,DGHV),該方案是對(duì)文獻(xiàn)[7]整數(shù)上的全同態(tài)加密算法的改進(jìn),使計(jì)算復(fù)雜度降低、效率提高、易于實(shí)現(xiàn),一次加密1 bit的數(shù)據(jù),其公鑰加密方案的安全性依賴(lài)“近似最大公約數(shù)”問(wèn)題.
Coron 等人[9]針對(duì)DGHV 方案公鑰尺寸過(guò)大的問(wèn)題,提出一種基于平方公鑰壓縮的CMNT(Coron Man?dal Naccache Tibouchi)公鑰優(yōu)化方案. 其思想是使用公鑰集合中非初始元素的2k個(gè)公鑰可生成k2個(gè)公鑰,壓縮公鑰尺寸. 首先將2k個(gè)公鑰平均分成兩組,然后分別從兩組公鑰中隨機(jī)選擇一個(gè)公鑰對(duì)應(yīng)相乘,再乘以隨機(jī)數(shù),并運(yùn)算處理生成新的公鑰,進(jìn)而完成加密操作.
另外,文獻(xiàn)[10]改進(jìn)了文獻(xiàn)[8]的方案,使其一次可以加密2 bit 的數(shù)據(jù). 孫霓剛等人[11]進(jìn)一步改進(jìn)了DGHV 算法,將明文空間由1 bit 擴(kuò)展到nbit,提出一次可以加密nbit數(shù)據(jù)的方案,降低了加密次數(shù). 為了清晰說(shuō)明,本文將這種算法稱(chēng)為N-DGHV. N-DGHV 算法通用性強(qiáng),適合服務(wù)計(jì)算隱私保護(hù)場(chǎng)景,但仍存在公鑰存儲(chǔ)空間過(guò)多的問(wèn)題. 因此,本文在N-DGHV 算法的基礎(chǔ)上,對(duì)公鑰進(jìn)行壓縮優(yōu)化,并加以實(shí)現(xiàn).
(2)云計(jì)算隱私保護(hù)研究
傳統(tǒng)的云計(jì)算模式中,終端數(shù)據(jù)以明文的形式傳輸?shù)皆贫诉M(jìn)行計(jì)算,用戶(hù)隱私無(wú)法得到保障,存在安全隱患[12].
云計(jì)算的數(shù)據(jù)隱私保護(hù)解決方案主要有訪問(wèn)控制、數(shù)據(jù)加密、安全外包、安全多方計(jì)算等[13],都是基于數(shù)據(jù)加密理論展開(kāi)的. 蔣瀚等人[14]提出了安全多方計(jì)算方法來(lái)解決云計(jì)算隱私保護(hù)問(wèn)題,該方法需要多方參與計(jì)算,且通信頻繁,不適合本文客戶(hù)端資源有限的應(yīng)用場(chǎng)景. 文獻(xiàn)[15]使用基于混淆方法的隱私管理器來(lái)管理云端和用戶(hù)終端的數(shù)據(jù),保護(hù)數(shù)據(jù)隱私,但重在加密管理,未深入研究密文的智能計(jì)算等工作.
在云計(jì)算場(chǎng)景中,隨著數(shù)據(jù)量的增大,頻繁的加解密操作會(huì)造成計(jì)算資源的浪費(fèi),能夠直接對(duì)密文進(jìn)行計(jì)算操作顯得尤為重要.
同態(tài)加密技術(shù)以其良好的密文可操作性,成為解決云計(jì)算隱私保護(hù)問(wèn)題的重要技術(shù),也成為重要發(fā)展和應(yīng)用方向[16,17]. 而文獻(xiàn)[18]也提出同態(tài)加密技術(shù)在處理大量數(shù)據(jù)時(shí)效率不高. 本文正是致力于探索該技術(shù)適合智能計(jì)算應(yīng)用場(chǎng)景的解決方案.
(3)卷積神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)隱私保護(hù)相關(guān)研究
卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的重要分支,計(jì)算復(fù)雜度高,被廣泛應(yīng)用于人臉識(shí)別、語(yǔ)音識(shí)別等領(lǐng)域[19]. 卷積神經(jīng)網(wǎng)絡(luò)的隱私保護(hù)工作可在不同階段進(jìn)行,分別是訓(xùn)練階段和預(yù)測(cè)階段. 在訓(xùn)練階段,需要各參與方提供各自的數(shù)據(jù)來(lái)完成模型訓(xùn)練工作,這些數(shù)據(jù)可能包含隱私信息. 在預(yù)測(cè)階段,終端用戶(hù)待預(yù)測(cè)數(shù)據(jù)、服務(wù)器端訓(xùn)練好的特征模型都有隱私保護(hù)的需求. 本文主要針對(duì)卷積神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)階段展開(kāi)工作,使用同態(tài)加密技術(shù).
Dowlin 等人[20]于2016 年提出CryptoNets 神經(jīng)網(wǎng)絡(luò)模型,使用同態(tài)加密算法實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)階段的隱私數(shù)據(jù)保護(hù). 為了保證同態(tài)加密的正確性,此方案化簡(jiǎn)了預(yù)測(cè)方法,使用平方函數(shù)實(shí)現(xiàn)激活層. Cha?banne 等人[21]使用低次多項(xiàng)式逼近激活函數(shù)來(lái)加強(qiáng)同態(tài)加密計(jì)算效率. 文獻(xiàn)[22]在CryptoNets 基礎(chǔ)上優(yōu)化,同時(shí)提出云端雙服務(wù)器協(xié)同模式使加同態(tài)算法支持CNN 各層模型,提高效率. 文獻(xiàn)[23,24]則提出將兩方計(jì)算技術(shù)(混淆電路)與同態(tài)加密相結(jié)合的解決方案,同態(tài)加密處理CNN 線性部分,而兩方計(jì)算則處理非線性部分.
目前,這一領(lǐng)域并不成熟,仍舊存在加密計(jì)算開(kāi)銷(xiāo)大、智能算法不適用、管理模式不清晰等問(wèn)題,還遠(yuǎn)不能被廣泛應(yīng)用,需要更多實(shí)踐去探索應(yīng)用方法和模式.
(4)其他相關(guān)研究
區(qū)塊鏈具有分布式管理、難以篡改的特點(diǎn)[25],可被廣泛應(yīng)用于醫(yī)療、交通、農(nóng)業(yè)等多個(gè)領(lǐng)域. 智能合約通常是運(yùn)行于區(qū)塊鏈上的公開(kāi)透明的計(jì)算代碼. 本文利用區(qū)塊鏈存儲(chǔ)服務(wù)數(shù)據(jù),并設(shè)計(jì)智能合約權(quán)益評(píng)估模型,公開(kāi)透明并自動(dòng)執(zhí)行,加強(qiáng)交易的可信度.
聯(lián)邦學(xué)習(xí)技術(shù)是2016 年被提出的,該技術(shù)在保證數(shù)據(jù)隱私安全的前提下,用來(lái)完成高效智能計(jì)算工作.聯(lián)邦學(xué)習(xí)的過(guò)程是將用戶(hù)數(shù)據(jù)在本地計(jì)算,并將結(jié)果傳輸?shù)椒?wù)器參與聚合計(jì)算,從而起到保護(hù)隱私數(shù)據(jù)的目的[26]. 然而,聯(lián)邦學(xué)習(xí)模式數(shù)據(jù)提供者在本地進(jìn)行模型訓(xùn)練,對(duì)終端環(huán)境的算力要求較高. 因此,本文依據(jù)應(yīng)用場(chǎng)景,選取同態(tài)加密方法展開(kāi)研究工作.
為了提高云服務(wù)環(huán)境下卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)服務(wù)質(zhì)量,本文從安全、隱私和可信3個(gè)方面考慮,研究可信隱私服務(wù)計(jì)算模型. 該模型使用非對(duì)稱(chēng)的公鑰加密、私鑰解密機(jī)制來(lái)加強(qiáng)數(shù)據(jù)的安全性,避免被惡意截取;同時(shí),通過(guò)密文傳輸,利用同態(tài)加密的特點(diǎn)在服務(wù)端進(jìn)行密文計(jì)算,將密文結(jié)果反饋用戶(hù),整個(gè)計(jì)算過(guò)程全密態(tài),保護(hù)數(shù)據(jù)提供者隱私信息;最后使用區(qū)塊鏈和智能合約技術(shù)完成云服務(wù)計(jì)算過(guò)程的記錄,并進(jìn)行自動(dòng)權(quán)益分配,保證服務(wù)過(guò)程不可篡改,公開(kāi)透明,從而增強(qiáng)服務(wù)計(jì)算模型的可信度.
可信隱私服務(wù)計(jì)算架構(gòu)如圖1所示,主要可分為用戶(hù)端、模型提供端、云服務(wù)器端3 類(lèi)角色,圍繞計(jì)算、加密、可信權(quán)益等工作運(yùn)轉(zhuǎn).
(1)用戶(hù)端
用戶(hù)端是服務(wù)計(jì)算的使用者,擁有數(shù)據(jù)以及公私鑰生成器. 用戶(hù)端要向云服務(wù)端提出需求,請(qǐng)求服務(wù),并取得相應(yīng)權(quán)限(如認(rèn)證、開(kāi)通賬戶(hù)),進(jìn)而開(kāi)始整個(gè)服務(wù)流程. 首先,用戶(hù)端生成公私鑰,并將公鑰發(fā)送給云服務(wù)端,如圖1中①所示;其次,在本地將數(shù)據(jù)通過(guò)公鑰加密,密文上傳云服務(wù)端,如圖1 中④所示;再次,用戶(hù)端得到云服務(wù)端提供的密文運(yùn)算結(jié)果及分類(lèi)標(biāo)簽,如圖1中⑤所示,并在本地通過(guò)私鑰解密進(jìn)而得到最終結(jié)果;最后,用戶(hù)端收到云服務(wù)端的權(quán)益分配結(jié)果,并提交服務(wù)費(fèi)用,如圖1中⑥所示.
(2)模型提供端
首先,模型提供端需要從云服務(wù)端獲取加密公鑰(由用戶(hù)端提供給云服務(wù)端),如圖1中②所示;其次,模型提供端將訓(xùn)練好的預(yù)測(cè)模型使用公鑰加密后提供給云服務(wù)端,同時(shí)需要提供分類(lèi)標(biāo)簽(無(wú)須加密,各個(gè)分類(lèi)在結(jié)果向量中的順序),如圖1 中③所示;最后,計(jì)算服務(wù)完成后,模型提供端獲得權(quán)益分配結(jié)果,取得相應(yīng)費(fèi)用,如圖1中⑦所示.
(3)云服務(wù)端
云服務(wù)端提供強(qiáng)大的計(jì)算資源和模型服務(wù),完成用戶(hù)端的請(qǐng)求. 首先,云服務(wù)端接收用戶(hù)端公鑰,并將其發(fā)送給模型提供端加密預(yù)測(cè)模型,如圖1中①與②所示. 其次,若使用云服務(wù)端自有的預(yù)測(cè)模型,則直接加密. 否則,云服務(wù)端接收模型提供端的加密模型以及用戶(hù)端提供的加密數(shù)據(jù),如圖1 中③和④所示,進(jìn)行密文的卷積神經(jīng)網(wǎng)絡(luò)計(jì)算,將密文結(jié)果返回給用戶(hù)端. 隱私服務(wù)計(jì)算過(guò)程完畢. 此外,在計(jì)算過(guò)程中,云服務(wù)端計(jì)算資源使用及服務(wù)提供情況,連同云提供商信息提交區(qū)塊鏈存證,并使用區(qū)塊鏈智能合約實(shí)現(xiàn)權(quán)益計(jì)算模型并自動(dòng)執(zhí)行,分配云服務(wù)端、用戶(hù)端、模型提供端各自的費(fèi)用和收益. 通常是用戶(hù)端付費(fèi),云服務(wù)端和模型提供端獲利.
圖1 可信隱私服務(wù)計(jì)算架構(gòu)圖
如圖1 所示,實(shí)際中存在多個(gè)云服務(wù)商,提供不同的模型和服務(wù). 數(shù)據(jù)擁有者計(jì)算資源不足,選擇合適的云服務(wù)商并借助其算力獲得預(yù)測(cè)結(jié)果,但又要保護(hù)數(shù)據(jù)隱私. 模型提供者(也可以是云服務(wù)商)在保護(hù)模型內(nèi)容的前提下分享模型并獲利,同態(tài)加密技術(shù)在此流程中起到保護(hù)數(shù)據(jù)和模型隱私的作用. 另外,這種模式下,可信的運(yùn)行環(huán)境和權(quán)益管理機(jī)制是破除壟斷、提高服務(wù)質(zhì)量的重要保證,區(qū)塊鏈和智能合約技術(shù)恰能發(fā)揮作用. 計(jì)算資源使用、服務(wù)提供情況以及云服務(wù)商信息都存證區(qū)塊鏈系統(tǒng),不可篡改,智能合約計(jì)算權(quán)益分配的規(guī)則透明公開(kāi)、自動(dòng)執(zhí)行,并且可查詢(xún)、追責(zé). 另外,模型提供者參與計(jì)算過(guò)程同樣存證區(qū)塊鏈系統(tǒng). 這樣,可達(dá)到模型權(quán)屬清晰、服務(wù)權(quán)責(zé)透明、權(quán)益公平可信的效果. 同時(shí),還存在一個(gè)監(jiān)管單位的角色,監(jiān)管單位可查看全部存證數(shù)據(jù)和使用規(guī)則,有效約束不良行為.
在此應(yīng)用場(chǎng)景中,系統(tǒng)和用戶(hù)可根據(jù)需求選擇不同的同態(tài)加密算法. 本文同態(tài)加密是通過(guò)改進(jìn)NDGHV 算法來(lái)實(shí)現(xiàn)的,這里稱(chēng)為ON-DGHV(Optimized N-DGHV)算法. DGHV 算法的明文空間是{0,1}(二進(jìn)制表示). N-DGHV 算法通過(guò)將加密算法的隨機(jī)數(shù)乘2變換為乘2n,解密算法的模2 變成模2n,實(shí)現(xiàn)明文空間由1 bit 擴(kuò)大到nbit,減少了加密次數(shù). 進(jìn)一步,ONDGHV使用平方公鑰壓縮方法縮減公鑰尺寸,減少公鑰的存儲(chǔ)空間. 此算法是面向整數(shù)的同態(tài)加密算法,將明文加密進(jìn)行密文計(jì)算,會(huì)給智能計(jì)算的性能、精度乃至正確性帶來(lái)挑戰(zhàn). 該模型努力探索適合該同態(tài)算法的CNN預(yù)測(cè)方法,運(yùn)行流程如圖2所示.
圖2 卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)服務(wù)計(jì)算模型流程圖
模型數(shù)據(jù)包括用戶(hù)端提供的數(shù)據(jù)矩陣D和模型提供端提供的模型M(模型M包括卷積核K、卷積偏移量b1、全連接矩陣W和全連接偏移量b2).
模型組件可分為4個(gè)功能模塊,具體如下.
(1)同態(tài)加密模塊:對(duì)用戶(hù)端的原始數(shù)據(jù)矩陣D使用公鑰進(jìn)行加密得到D′,對(duì)模型提供端提供的模型M使用公鑰進(jìn)行加密得到M′(加密后的模型M′包括卷積核K′、卷積偏移量b1′、全連接矩陣W′及全連接偏移量b2′).
(2)卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模塊:加密后的模型M′和同態(tài)加密后的數(shù)據(jù)矩陣D′成為卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模塊的輸入. 進(jìn)一步,卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模塊各層次的關(guān)系和功能操作如圖3 所示. 卷積核K′和數(shù)據(jù)矩陣D′作為卷積層的輸入,在卷積層利用卷積核K′對(duì)數(shù)據(jù)矩陣D′進(jìn)行卷積計(jì)算,得到一組線性輸出conv;conv在激活層使用激活函數(shù)完成非線性映射操作,為了適應(yīng)同態(tài)密文要求,這里激活函數(shù)使用平方函數(shù)進(jìn)行計(jì)算,生成密文數(shù)據(jù)acti;然后將acti 通過(guò)池化層進(jìn)行加和池化[20],完成數(shù)據(jù)壓縮,減少數(shù)據(jù)量,以簡(jiǎn)化計(jì)算的復(fù)雜度,進(jìn)而輸出數(shù)據(jù)pool;最后將數(shù)據(jù)pool 和全連接矩陣W′放入全連接層進(jìn)行矩陣乘法,將上層的特征映射到樣本空間來(lái)實(shí)現(xiàn)分類(lèi),所有類(lèi)別中值最大的一類(lèi)即為CNN的識(shí)別結(jié)果,表現(xiàn)為密文結(jié)果C. 為了保護(hù)數(shù)據(jù)模型的隱私性,該模型根據(jù)需求可增加一個(gè)保護(hù)機(jī)制. 那就是將密文C中各個(gè)元素都加上一個(gè)隨機(jī)數(shù)r的密文態(tài)(r盡量選取較小的數(shù),使用同一加密算法),隨機(jī)數(shù)的密文可表示為Cr,加和之后得到C′(也就是Lock(C)函數(shù)),即C′=Cr+C,隨后將C′連同分類(lèi)標(biāo)簽(各個(gè)分類(lèi)在結(jié)果向量中的順序)發(fā)送給用戶(hù)端.
從圖3中可知,卷積層、激活層和池化層、全連接層各層之間存在前后級(jí)聯(lián)關(guān)系,前一層的輸出作為后一層的輸入,是一個(gè)有機(jī)整體,共同完成密文數(shù)據(jù)的計(jì)算,有效提取數(shù)據(jù)特征,完成預(yù)測(cè)功能.
圖3 卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模塊各層次關(guān)系示意圖
(3)解密模塊:用戶(hù)利用私鑰對(duì)獲得的密文結(jié)果C′進(jìn)行解密得到T′,根據(jù)分類(lèi)標(biāo)簽獲得max(T′)對(duì)應(yīng)的分類(lèi)結(jié)果,max(T′)是分類(lèi)標(biāo)簽中的最大值,即預(yù)測(cè)結(jié)果.由于加密算法滿(mǎn)足加法同態(tài)性,且最終是根據(jù)結(jié)果向量中元素的數(shù)值大小判斷分類(lèi)結(jié)果,因此即使卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模塊的結(jié)果加了Cr隨機(jī)數(shù),對(duì)最終的分類(lèi)結(jié)果沒(méi)有影響. 然而,這樣會(huì)影響分類(lèi)概率,云端可根據(jù)需求設(shè)置,解密模塊同樣對(duì)于密文C適用.
另外,如圖2 所示,該模型還存在一個(gè)可信權(quán)益管理模型,在模型提供端提供模型后用智能合約進(jìn)行存證;記錄云服務(wù)端的服務(wù)明細(xì);根據(jù)權(quán)益評(píng)估模型對(duì)用戶(hù)端、模型提供端和云服務(wù)端進(jìn)行權(quán)益分配. 整個(gè)流程主要由數(shù)據(jù)和模型的數(shù)據(jù)流以及權(quán)益交易流兩個(gè)信息流組成,相輔相成,涉及模型各個(gè)環(huán)節(jié),協(xié)同工作.
模型輸入輸出及算法涉及各個(gè)模塊,具體如下.
(1)同態(tài)加密模塊
同態(tài)加密模塊輸入:用戶(hù)端的原始數(shù)據(jù)矩陣D. 模型提供端提供的模型M.
同態(tài)加密模塊輸出:原始數(shù)據(jù)矩陣D加密后的密文矩陣D′及加密后的模型M′(分別在用戶(hù)端和模型提供端).
同態(tài)加密模塊涉及的核心函數(shù)描述如下.
(a)GenKey(·):密鑰生成函數(shù). 輸出用戶(hù)的私鑰SK,公鑰集合PK={pkf,pk0,pk1,…,pk2k-1},下標(biāo)k為正整數(shù).
(b)Encrypt(PK,D),Encrypt(PK,M):加密函數(shù).輸入公鑰集合PK,將PK 中的非初始的2k(即pk0,pk1,…,pk2k-1)個(gè)公鑰平均分成兩組,然后分別從兩組公鑰中各隨機(jī)選擇一個(gè)公鑰相乘,重復(fù)這個(gè)過(guò)程a(0 (2)卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模塊 卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模塊輸入:加密后的數(shù)據(jù)矩陣D′和加密后的模型M′. 卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模塊輸出:返回給用戶(hù)端的結(jié)果矩陣C′=[c′1,c′2,…,c′i]和分類(lèi)標(biāo)簽l={l1,l2,…,li}. 卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模塊涉及的算法描述如下. (b)激活層 Activate(conv):平方函數(shù). 激活層的作用是為CNN提供非線性特征,常用的激活函數(shù)(如ReLU,Sigmoid等)需要最大值、除法、指數(shù)等運(yùn)算,不適合使用同態(tài)加密方法密文的加和乘法實(shí)現(xiàn). 本文選用CryptoNets[20]使用的平方函數(shù)方法加以取代,計(jì)算結(jié)果為acti. (c)池化層 Pooling(acti):池化層主要的作用是下采樣,對(duì)輸入的特征圖進(jìn)行壓縮,進(jìn)一步減少參數(shù)數(shù)量,簡(jiǎn)化網(wǎng)絡(luò)計(jì)算復(fù)雜度,提取主要特征. 池化的方法很多,為了更好的支持同態(tài)加密計(jì)算,這里采用加和池化的方法[20],得到結(jié)果pool. (d)全連接層 Connect(pool,W′):全連接層作用是將上層的特征映射到樣本空間,從而實(shí)現(xiàn)分類(lèi).W′為全連接矩陣,將池化層的輸出pool 矩陣轉(zhuǎn)換成向量,即可把全連接層視為矩陣乘法,從而計(jì)算C=W′*pool+b2 得到結(jié)果向量C.C中的值代表分類(lèi)標(biāo)簽l={l1,l2,…,li}中對(duì)應(yīng)類(lèi)別的數(shù)值(數(shù)值越高,則預(yù)測(cè)結(jié)果是該類(lèi)別的可能性越大),為密文. (e)安全處理 Lock(C):生成隨機(jī)數(shù)r(選擇盡量小的數(shù)),加密得到密文形成Cr,利用Cr對(duì)全連接得到的結(jié)果向量C進(jìn)行加密得到C′再發(fā)送給用戶(hù),從而使用戶(hù)不會(huì)得到原始的模型輸出結(jié)果,減少模型參數(shù)泄露的風(fēng)險(xiǎn). 云端可根據(jù)實(shí)際需求設(shè)置輸出原始結(jié)果,這一部分為可選項(xiàng). (3)解密模塊 解密模塊輸入:云服務(wù)端返回的密文結(jié)果向量C′(C同樣適用)和分類(lèi)標(biāo)簽l. 解密模塊輸出:卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)分類(lèi)結(jié)果T. 解密模塊涉及的算法描述如下. (a)Decrypt(C′,SK):解密函數(shù).C′=[c′1,c′2,…,c′i]為云服務(wù)端返回的密文結(jié)果向量. 利用私鑰SK 進(jìn)行解密得到明文結(jié)果向量T′=[t′1,t′2,…,t′i]. (b)T=p(max(T′),l):max(T′)為集合T′中的最大值,即分類(lèi)結(jié)果的數(shù)值. 分類(lèi)標(biāo)簽l和向量T′存在一一映射的關(guān)系,T=p(max(T′),l)代表max(T′)在l中的映射,即為卷積神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)分類(lèi)結(jié)果. 傳統(tǒng)服務(wù)計(jì)算的權(quán)益規(guī)則由云供應(yīng)商(云服務(wù)端)制定,缺乏透明度和公共約束力,這樣,云供應(yīng)商的權(quán)利過(guò)大,服務(wù)使用者(用戶(hù)端和模型提供端)的權(quán)益得不到有效保證,進(jìn)而不愿意參與云端服務(wù)計(jì)算. 因此,本模型設(shè)計(jì)基于智能合約的權(quán)益計(jì)算模型來(lái)進(jìn)行權(quán)益分配,此過(guò)程由區(qū)塊鏈智能合約自動(dòng)執(zhí)行并進(jìn)行數(shù)據(jù)的存儲(chǔ). 一方面,在模型提供端提供模型時(shí),智能合約對(duì)模型的所屬權(quán)進(jìn)行記錄存證,保證模型提供端的權(quán)益. 另一方面,智能合約計(jì)算權(quán)益分配,模型提供端和云服務(wù)端根據(jù)權(quán)益分配的結(jié)果獲取相應(yīng)的收益,而用戶(hù)端通常向云服務(wù)端提供相應(yīng)的費(fèi)用,收益規(guī)則公開(kāi)透明,保證過(guò)程可追溯、權(quán)益評(píng)估真實(shí)可信. 以卷積神經(jīng)網(wǎng)絡(luò)的圖像分類(lèi)場(chǎng)景為例,結(jié)合傳統(tǒng)云服務(wù)的計(jì)費(fèi)思路,可設(shè)計(jì)智能合約的基礎(chǔ)權(quán)益分配方法,如表1 所示. 從模型、資源使用、數(shù)據(jù)角度考慮,具體參數(shù)包括模型準(zhǔn)確度、使用時(shí)長(zhǎng)、服務(wù)費(fèi)、存儲(chǔ)容量、收益等. 表1 權(quán)益評(píng)估計(jì)算參數(shù)表 (1)模型提供端 模型提供端的收益依賴(lài)其提供的模型的準(zhǔn)確度,分為3 個(gè)標(biāo)準(zhǔn),即小于80%、80%~95%、大于95%,能夠獲得的收益分別為x1,x2,x3.(x1 (2)云服務(wù)端 上述的卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)計(jì)算模型是以O(shè)NDGHV算法為加解密基礎(chǔ)的,這里重點(diǎn)描述該算法的設(shè)計(jì)與實(shí)現(xiàn). 為了表述清晰,部分符號(hào)表達(dá)和前文概述有所調(diào)整. (1)同態(tài)加密模塊 這一模塊的工作是生成密鑰對(duì)、加密明文m. 生成私鑰SK 時(shí),需要保證|m+2nr′ | 算法1 生成密鑰對(duì)輸入:明文m,m的比特(位)數(shù)n,正整數(shù)k(公鑰包含的元素個(gè)數(shù)為2k+1)輸出:私鑰SK,加密公鑰PK 1.function GenKey(m,n,k)2. generate random positive integer numberr′3. do 4.generate random large prime number x 5. while|m+2nr′|≥x/2 6. SK ←x 7. generate random positive odd number qf 8. pkf=qf×SK 9. put pkf into PK 10. for i from 0 to 1 step 1 11.for j from 0 to k-1 step 1 12.do 13.generate random positive integer number ri,j 14.while ri,j ≤r′15.do 16.generate random integer number qi,j 17.while qi,j<0 or qi,j ≥qf 18.pki,j ←ri,j+SK×qi,j 19.put pki.j into PK 20.end for 21. end for 22. return SK,PK 23.end function3.3 預(yù)測(cè)服務(wù)權(quán)益評(píng)估模型
3.4 實(shí)現(xiàn)方法