文章編號" 1000-5269(2024)01-0089-05
DOI:10.15958/j.cnki.gdxbzrb.2024.01.14
收稿日期:2022-11-06
基金項目:福建省社科規(guī)劃青年資助項目(FJ2021C026)
作者簡介:楊" 雄(1986—),男,副教授,碩士,研究方向:信息安全,E-mail:83789047@qq.com.
*通訊作者:徐慧華,E-mail:61853918@qq.com.
摘" 要:在云計算環(huán)境下,數(shù)據(jù)挖掘應用中的數(shù)據(jù)共享和服務外包在產(chǎn)生巨大財富的同時,也帶來了隱私泄漏的風險,其信息安全問題亟待解決。對云計算環(huán)境下神經(jīng)網(wǎng)絡預測分類服務外包中存在的風險以及全同態(tài)加密算法的應用進行了分析,使用平方函數(shù)作為神經(jīng)網(wǎng)絡中的非線性激活函數(shù),設計并實現(xiàn)了一種密文域的數(shù)據(jù)分類預測方案,并對該方案運行過程中的5個主要步驟:模型訓練、模型加密、數(shù)據(jù)加密、密文計算和解密結(jié)果進行詳細描述。設計的測試實驗結(jié)果驗證了該方案的可行性,保證了模型和數(shù)據(jù)在整個神經(jīng)網(wǎng)絡處理過程中不被泄漏,可有效保障數(shù)據(jù)和模型的安全與隱私。
關(guān)鍵詞:神經(jīng)網(wǎng)絡;全同態(tài)加密;隱私保護
中圖分類號:TP309
文獻標志碼:A
云計算的快速發(fā)展和數(shù)據(jù)挖掘任務的廣泛應用,可以將神經(jīng)網(wǎng)絡模型部署在云服務器中來解決本地計算能力不足和資源消耗過多的問題,在降低IT服務成本,提升IT資源利用率的同時,實現(xiàn)服務外包,但是云計算平臺在提供便利的同時也帶來了隱私泄漏的風險。神經(jīng)網(wǎng)絡模型所處理的數(shù)據(jù)往往是敏感的、涉及用戶私密的信息,一旦用戶數(shù)據(jù)或算法模型被竊取,將造成嚴重后果。因此,數(shù)據(jù)和模型的機密性必須得到保證。隨著信息安全和隱私保護要求的不斷提升,針對云計算環(huán)境下的數(shù)據(jù)分類預測外包服務設計一種安全的隱私保護方案顯得尤其重要。
當前應用于數(shù)據(jù)挖掘任務中的隱私保護主要有安全多方計算[1]、可檢索加密[2]、差分隱私[3]和全同態(tài)加密技術(shù)[4]。與差分隱私和安全多方計算相比,全同態(tài)加密技術(shù)允許對密文直接進行計算,更具有普適性,其不僅是一種較好的隱私保護計算的解決方案,而且在保證數(shù)據(jù)安全性的同時,能夠兼顧預測結(jié)果的準確性。但全同態(tài)加密算法僅支持對密文進行無限次數(shù)的加法、乘法運算,而不支持神經(jīng)網(wǎng)絡模型中激活函數(shù)所涉及的非線性操作。
為此,一些學者相繼提出了解決方案。例如:XIE等[5]設計了一種基于同態(tài)加密技術(shù)的隱私保護神經(jīng)網(wǎng)絡模型Cryptonets,其可以直接在密文上進行預測并返回加密預測結(jié)果,但存在運算效率較低的問題。MOHASSEL等[6]提出了一種基于秘密共享的機器學習訓練模型,但是服務器能夠獲得神經(jīng)網(wǎng)絡部分權(quán)重信息,存在模型參數(shù)泄漏的風險。YANG等[7]提出了一種基于梯度共享的線性模型,其可有效降低集中式機器學習產(chǎn)生的隱私數(shù)據(jù)泄露風險,但在多次迭代后可能會泄露計算參與方的信息。ZHANG等[8]提出了一種基于BGV全同態(tài)加密的深度計算模型,雖然其能有效提高大數(shù)據(jù)特征學習的效率,但存在通信復雜度較高的缺點。CHABANNE等[9]提出了一種基于ReLU激活函數(shù)的多項式逼近與批處理規(guī)范化相結(jié)合的深度神經(jīng)網(wǎng)絡分類方案,其可有效減少實際訓練模型和轉(zhuǎn)換模型之間的精度差距,但存在模型參數(shù)泄漏的風險。CHILLOTTI等[10]使用離散化的神經(jīng)網(wǎng)絡設計了一種FHE-DiNN框架,該框架雖然可有效提高計算速度,但預測精度較低。
本文設計了一種基于全同態(tài)加密的神經(jīng)網(wǎng)絡預測方案,使用低次多項式的平方函數(shù)作為神經(jīng)網(wǎng)絡的激活函數(shù),并利用批處理方法解決了平方函數(shù)運算效率低的問題,實現(xiàn)了云計算環(huán)境下基于全同態(tài)加密的神經(jīng)網(wǎng)絡能夠在保護數(shù)據(jù)和模型隱私的前提下對使用者提供的數(shù)據(jù)進行分類預測。
1" 全同態(tài)加密技術(shù)
同態(tài)加密技術(shù)根據(jù)對密文數(shù)據(jù)操作支持的種類和次數(shù),可分為半同態(tài)加密、部分同態(tài)加密和全同態(tài)加密。其中,半同態(tài)加密(partially homomorphic encryption,PHE)[11]僅支持加法或乘法(其中一種)無限次的同態(tài)運算;部分同態(tài)加密(somewhat homomorphic encryption,SWHE)[12]雖然可以同時支持加法和乘法同態(tài)運算,但是同態(tài)運算的次數(shù)有限;全同態(tài)加密(fully homomorphic encryption,F(xiàn)HE)[13]則支持無限次數(shù)的加法和乘法同態(tài)運算。前2種同態(tài)方案在實際應用中受到一定的限制,而全同態(tài)加密支持的密文運算門類較為齊全,諸如數(shù)據(jù)挖掘、密文檢索、外包計算等密集型運算,都可以基于全同態(tài)加密算法對密文數(shù)據(jù)進行計算,因此全同態(tài)加密有著廣泛的應用前景。
一個完整的全同態(tài)加密方案由密鑰生成算法KeyGen、加密算法Encrypt、解密算法Decrypt和密文運算算法Eval這4個算法組成。密鑰生成算法KeyGen的輸入?yún)?shù)為安全參數(shù)λ,輸出為一對公私鑰(pk, sk),pk為公鑰,sk為私鑰。安全參數(shù)和密鑰的長度相關(guān)聯(lián),足夠大的安全參數(shù)λ能夠保證算法的安全性。加密算法Encrypt的輸入?yún)?shù)是明文消息m和加密公鑰pk,輸出為密文c。解密算法Decrypt的輸入?yún)?shù)為密文c和私鑰sk,輸出則是密文c解密后得到的明文m。密文運算算法Eval的輸入?yún)?shù)包括3個部分:公鑰pk、電路和密文列表,其中,電路是任意計算算法的形式化描述,密文列表中的所有密文均使用公鑰pk加密。密文運算算法是實現(xiàn)全同態(tài)性質(zhì)的關(guān)鍵。Eval的結(jié)果必須能夠正確解密才能使得加密的同態(tài)性成立,即
Decrypt(Eval(pk,C,c1,c2,…,cn),sk)
=C(m1,m2,…,mn)(1)
式中:ci為通過公鑰pk加密明文消息mi所得到的密文;C為給定的處理方法。
2" 神經(jīng)網(wǎng)絡
本文方案中使用的神經(jīng)網(wǎng)絡為前向人工神經(jīng)網(wǎng)絡。一個M層的多層前向網(wǎng)絡包含一個輸入層、M-1個隱藏層和一個輸出層,其中輸入層的節(jié)點數(shù)與實例的特征值數(shù)量一致,每個隱藏層都包含多個神經(jīng)元節(jié)點,每個神經(jīng)元的值都由與之相連的上一層各個神經(jīng)元的輸出值通過函數(shù)計算得到。神經(jīng)元的計算過程如圖1所示。
每個神經(jīng)元上的計算主要包括2個步驟:
求和操作輸出:xi=∑nj=1wijuj+βi 。
激活函數(shù)輸出:yi=f(xi)。
其中,激活函數(shù)常采用Sigmoid函數(shù):
f(x)=11+e-x
式中:xi為神經(jīng)元的凈輸入值;wij為神經(jīng)元的權(quán)值;uj為上一層網(wǎng)絡中與該神經(jīng)元相連接的各神經(jīng)元輸出值;βi為神經(jīng)元的偏置值;yi為神經(jīng)元的輸出值;f(xi)為神經(jīng)元的激活函數(shù)。
由于全同態(tài)加密所支持的運算僅為加法、乘法,上述第一個操作僅包含加法和向量乘法,因此可基于全同態(tài)加密快速實現(xiàn);而激活函數(shù)是非線性操作,它是實現(xiàn)全同態(tài)神經(jīng)網(wǎng)絡的難點。
綜合考慮神經(jīng)網(wǎng)絡算法對非線性轉(zhuǎn)換的需求和同態(tài)加密的計算效率需求,本文選擇使用多項式來近似計算Sigmoid函數(shù)。平方函數(shù)不僅多項式次數(shù)低,而且具有非線性特性,是替換Sigmoid的理想選擇[14]。
3" 基于全同態(tài)加密的神經(jīng)網(wǎng)絡
3.1" 方案設計
為了解決激活函數(shù)的非線性問題,部分全同態(tài)神經(jīng)網(wǎng)絡在訓練階段和預測階段使用了不同的激活函數(shù),但它們會損失預測精度。本文方案在訓練和預測階段使用了相同的神經(jīng)網(wǎng)絡結(jié)構(gòu)。主流的全同態(tài)加密庫HElib[15]支持2種加密方案:整數(shù)BFV[16]方案和浮點數(shù)CKKS[17]方案。由于神經(jīng)網(wǎng)絡模型參數(shù)通常為浮點數(shù),而且神經(jīng)網(wǎng)絡運算也使用浮點數(shù),因此采用CKKS方案。
本文方案基于全同態(tài)算法實現(xiàn)一個輕量級的加密神經(jīng)網(wǎng)絡,并對方案的可用性和對數(shù)據(jù)的保護效果進行了驗證,其分類預測過程如圖2所示。
全同態(tài)加密數(shù)據(jù)分類預測由模型訓練、模型加密、數(shù)據(jù)加密、密文計算和解密結(jié)果5個步驟組成,其流程如圖3所示。其中,模型訓練是用神經(jīng)網(wǎng)絡模型進行訓練,得到較優(yōu)的網(wǎng)絡模型參數(shù),主要是權(quán)重和偏置值;模型加密是基于模型參數(shù)構(gòu)建全同態(tài)加密神經(jīng)網(wǎng)絡;數(shù)據(jù)加密是對數(shù)據(jù)使用全同態(tài)加密;密文計算是利用加密神經(jīng)網(wǎng)絡對加密文的數(shù)據(jù)進行計算,實現(xiàn)分類預測;解密結(jié)果是對計算得到的結(jié)果進行解密得到分類預測值。
訓練好的神經(jīng)網(wǎng)絡模型由同態(tài)加密技術(shù)加密后部署在云計算平臺,同時將數(shù)據(jù)密文上傳至云計算平臺,然后在云計算平臺中通過對加密數(shù)據(jù)執(zhí)行同態(tài)計算得到預測結(jié)果密文并返回給用戶,最終由用戶解密得到明文的預測結(jié)果。因為云計算平臺全程只處理密文,并不會接觸到相關(guān)明文信息,所以該方案可以保證數(shù)據(jù)和模型的機密性。
3.2" 實例流程
3.2.1" 模型訓練
在Credit Card Fraud數(shù)據(jù)集上,以平方函數(shù)作為激活函數(shù),設計了含有3個全連接層的隱藏層,各個全連接層的神經(jīng)元個數(shù)分別為:256、128和64,關(guān)鍵代碼為:
model=Sequential()
model.add(Dense(256,activation=sqrt,input_dim=29))
model.add(Dense(128,activation=sqrt))
model.add(Dense(64,activation=sqrt))
model.add(Dense(1,activation=sqrt))
批量大小為128,迭代次數(shù)為10,關(guān)鍵代碼為:
model.fit(x_train,y_train,batch_size=128, epochs=10)
print(predictmodeln(model))
訓練結(jié)果如圖4所示:
將訓練好的模型參數(shù)保存為h5文件。模型參數(shù)主要包含了每個神經(jīng)元與上一層連接的權(quán)重和偏置值。
3.2.2" 模型加密
使用HElib庫對模型和數(shù)據(jù)進行加密。首先是對CKKS加密方案的參數(shù)進行選擇,其中最重要的參數(shù)是影響同態(tài)加密方案安全性的多項式模次數(shù)m。m的取值為2的次冪。m越大方案的安全性就越高,密文也相應加大,會導致計算效率下降。在仿真實驗中,m取值512,加密context生成的關(guān)鍵代碼為:
hePtr=HelibContext::create(HELIB_NOT_SECURE_CKKS_512_FAST);
hePtr-gt;saveToFile(secretContext,true);
hePtr-gt;saveToFile(publicContext,1);
代碼執(zhí)行完生成一對公私鑰后,使用公鑰對訓練好的神經(jīng)網(wǎng)絡模型進行加密。模型加密的具體過程是使用公鑰對神經(jīng)網(wǎng)絡模型參數(shù)各個神經(jīng)元的權(quán)值和偏置值進行加密,將各個神經(jīng)元的n維的權(quán)值向量進行整體加密,然后將它們以矩陣格式封裝在文件中保存至云服務器。模型加密的關(guān)鍵代碼為:
he=HeContext::loadHeContextFromFile(publicContext);
plainNet.loadh5(parser, std::vectorlt;stringgt;{\"dense_1\", \"dense_2\", \"dense_3\",\"dense_4\"}, std::vectorlt;intgt;{29, 256, 128, 64, 1}, batchSize);
SimpleNeuralNet netHe(*he);
netHe.initFromNet(plainNet);
netHe.saveToFile(encryptedModelFile);
云服務端的初始化操作主要是加載加密后的神經(jīng)網(wǎng)絡模型,關(guān)鍵代碼為:
ifstream ifs(encryptedModelFile, ios::in | ios::binary);
SimpleNeuralNet net;
net.load(ifs);
encryptedNet=make_sharedlt;SimpleNeuralNetgt;(net);
3.2.3" 數(shù)據(jù)加密
使用加密的神經(jīng)網(wǎng)絡模型對預測數(shù)據(jù)進行預測時,先要使用公鑰對預測數(shù)據(jù)進行加密得到數(shù)據(jù)密文,關(guān)鍵代碼為:
const DoubleMatrixArrayamp; plainSamples=ts-gt;getSamples(batch);
CipherMatrix encryptedSamples(*he);
encoder.encodeEncrypt(encryptedSamples, plain-Samples.getTensor());
3.2.4" 密文計算
加密神經(jīng)網(wǎng)絡模型中的密文計算類似于普通神經(jīng)網(wǎng)絡模型的明文預測,但是在密文下進行計算。將加密后的待預測數(shù)據(jù)密文發(fā)送至云服務器,在云服務器中將加密數(shù)據(jù)輸入加密神經(jīng)網(wǎng)絡,在密文下執(zhí)行神經(jīng)網(wǎng)絡的分類任務,得到加密后的預測結(jié)果。關(guān)鍵代碼為:
CipherMatrix encryptedPredictions();
encryptedNet-gt;predict(encryptedSamples, encryptedPredictions);
其中predict預測函數(shù)的具體實現(xiàn)為:
utput=sal.forward(fcl4.forward(sal.forward(fcl3.forward(sal.forward(fcl2.forward(sal.forward(fcl1.forward(input))))))));
fcl1、flc2、fcl3和fcl4為隱藏層的各層全連接層。其中的forward函數(shù)即為前向的計算過程,即在密文中通過矩陣計算得到加密后的各個神經(jīng)元節(jié)點的輸出值。隱藏層中的第一層結(jié)點的輸入input即為加密后的待預測數(shù)據(jù),隱藏層forward的關(guān)鍵代碼為:
DoubleMatrixArray res=weights.getMatrixMultiply(lastInput);
res.add(bias);
sal為激活函數(shù)類的實現(xiàn),將神經(jīng)元的求和操作值作為激活函數(shù)的輸入,得到的結(jié)果即為該神經(jīng)元的輸出,激活函數(shù)類中forward的關(guān)鍵代碼為:
CipherMatrix res=inVec.getSquare();
3.2.5" 解密結(jié)果
客戶端在收到云服務器加密神經(jīng)網(wǎng)絡模型計算得到的結(jié)果密文后,使用秘鑰進行解密得到明文的預測結(jié)果,關(guān)鍵代碼如下:
he=HeContext::loadHeContextFromFile(secretContext);
CipherMatrix encryptedPredictions(*he);
DoubleMatrixArray plainPredictions(encoder.decryptDecodeDouble(encryptedPredictions));
實現(xiàn)的方案中包含2個角色:客戶端和服務端??蛻舳素撠熓褂萌瑧B(tài)加密算法對明文模型和明文數(shù)據(jù)進行加密,只有客戶端能夠接觸到未加密的數(shù)據(jù)。服務端加載加密后的模型密文后,對加密數(shù)據(jù)進行分類預測,整個計算過程在密域中進行。最后,客戶端能夠使用密鑰解密從服務器獲得預測結(jié)果。因此,在整個過程中,只有受信任的客戶端才具有明文訪問權(quán)限,神經(jīng)網(wǎng)絡模型和數(shù)據(jù)都受到了完全保護。
4" 實驗結(jié)果與分析
4.1" 實驗環(huán)境與數(shù)據(jù)集
為了評估方案的準確性和效率,在測試實驗中,主要對Credit Card Fraud數(shù)據(jù)集中93 986條數(shù)據(jù)進行實驗測試,CPU配置為Intel(R) Core(TM) i5-10400F CPU@2.90GHz,內(nèi)存為8 GiB。
4.2" 結(jié)果分析
4.2.1" 性能分析
表1給出了加密模型分類預測各個階段的運算時間。由于加密模型分類預測運算中包含多次的密文乘法運算,因此需要耗費較長時間。
4.2.2" 準確率分析
隨機選擇Credit Card Fraud數(shù)據(jù)集中80%的數(shù)據(jù)作為訓練集,剩余20%的數(shù)據(jù)作為測試集。將加密模型對測試集的分類預測結(jié)果進行解密后,與對應的明文標簽進行比較,發(fā)現(xiàn)密文預測精度為91.18%,能夠達到未加密數(shù)據(jù)的水準,因此該方案能夠保持原生算法的預測準確率。
4.2.3" 安全性分析
在整個方案中,模型和數(shù)據(jù)分別采用了FHE進行加密,云服務器中的神經(jīng)網(wǎng)絡模型和計算過程數(shù)據(jù)都以密文形式存儲,使得云計算服務提供商無法獲得任何數(shù)據(jù)的原始信息,因此該方案能夠確保模型和數(shù)據(jù)在整個外包計算過程中的安全性。
5" 結(jié)語
針對云環(huán)境下數(shù)據(jù)挖掘應用服務外包存在的隱私數(shù)據(jù)泄露問題,本文提出了一種基于全同態(tài)加密的神經(jīng)網(wǎng)絡預測方案,保護了外包計算過程中的數(shù)據(jù)隱私。該方案包括模型訓練、模型加密、數(shù)據(jù)加密、密文計算和解密結(jié)果5個部分,通過使用平方函數(shù)代替非線性激活函數(shù),解決了同態(tài)運算中的復雜運算;在一個輕量級的人工神經(jīng)網(wǎng)絡上實現(xiàn)了對Credit Card Fraud數(shù)據(jù)集的分類預測,得到了與明文模型一致的準確率,保持了原生算法的準確性。未來將在提升模型復雜率和算法效率上進行深入研究。
參考文獻:
[1]閻允雪, 馬銘, 蔣瀚. 基于秘密分享的高效隱私保護四方機器學習方案[J]. 計算機研究與發(fā)展, 2022, 59(10): 2338-2347.
[2] 季琰, 戴華, 姜瑩瑩, 等. 面向混合云的可并行多關(guān)鍵詞Top-k密文檢索技術(shù)[J]. 計算機科學, 2021, 48(5): 320-327.
[3] 白伍彤, 陳蘭香. 基于差分隱私的健康醫(yī)療數(shù)據(jù)保護方案[J]. 計算機應用與軟件, 2022, 39(8): 304-311.
[4] 徐慧華, 楊雄, 張曉惠. 云計算環(huán)境下基于全同態(tài)加密的人臉信息保護[J]. 貴州大學學報(自然科學版), 2021, 38(3): 83-91.
[5] XIE P T, BILENKO M, FINLEY T, et al. Crypto-nets: Neural networks over encrypted data[DB/OL]. (2014-12-18)[2022-11-06]. https://arxiv.org/abs/1412.6181.
[6] MOHASSEL P, ZHANG Y P. SecureML: a system for scalable privacy-preserving machine learning[C]// 2017 IEEE Symposium on Security and Privacy. Paris: IEEE, 2017: 19-38.
[7] YANG Q, LIU Y, CHEN T, et al. Federated machine learning: concept and applications[J]. ACM Transactions on Intelligent Systems and Technology (TIST), 2019, 10(2): 1-19.
[8] ZHANG Q C, YANG L T, CHEN Z K. Privacy preserving deep computation model on cloud for big data feature learning[J]. IEEE Transactions on Computers, 2016, 65(5): 1351-1362.
[9] CHABANNE H, WARGNY AD, MILGRAM J, et al. Privacy-preserving classification on deep neural network[DB/OL]. (2017-01-13) [2022-11-06]. https://eprint.iacr.org/2017/035.
[10]CHILLOTTI I, GAMMA N, GEORGIEVA M, et al. Faster fully homomorphic encryption: bootstrapping in less than 0.1 seconds[C]// International conference on the theory and application of cryptology and information security. Heidelberg: Springer, 2016: 3-33.
[11]ZHAO Q S, ZENG Q K, LIU X M, et al. Verifiable computation using re-randomizable garbled circuits[J]. Journal of Software, 2019, 30(2): 209-225.
[12]蔣林智, 許春香, 王曉芳, 等. (全)同態(tài)加密在基于密文計算模型中的應用[J]. 密碼學報, 2017, 4(6): 596-610.
[13]YU L Z, LIN G X, JIE G Y, et al. Survey on homomorphic encryption algorithm and its application in the privacy-preserving for cloud computing[J]. Journal of Software, 2018, 29(7): 1830-1851.
[14]LIVNI R, SHALEV-SHWARTZ S, SHAMIR O. On the computational efficiency of training neural networks[J]. Advances in Neural Information Processing Systems, 2014, 14(10): 855-863.
[15]宋新霞, 陳智罡, 李焱華. HEBenchmark: 全同態(tài)加密測試系統(tǒng)設計與實現(xiàn)[J]. 密碼學報, 2020, 7(6): 853-863.
[16]MERT A C, ZTRK E, SAVAS E. Design and implementation of encryption/decryption architectures for BFV homomorphic encryption scheme[J]. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 2020, 28(2): 353-362.
[17]CHEON J H, KIM A, KIM M, et al. Homomorphic encryption for arithmetic of approximate numbers[C]// International Conference on the Theory and Application of Cryptology and Information Security. Cham: Springer, 2017: 409-437.
(責任編輯:周曉南)
Research on Neural Network Classification Prediction Based on Fully
Homomorphic Encryption in Cloud Computing Environment
YANG Xiong1, XU Huihua*2
(1.Department of Computer Engineering, Zhicheng College of Fuzhou University, Fuzhou 350002, China;
2.Department of Economics and Law, Concord University College Fujian Normal University, Fuzhou 350117, China)
Abstract:
In the context of cloud computing, the data sharing and service outsourcing of data mining applications have generated enormous wealth, but they have also brought risks of privacy leaks, and their information security problems need to be urgently addressed. This article analyzes the risks existing in neural network prediction classification service outsourcing and the application of fully homomorphic encryption algorithms in the cloud computing environment. It uses the square function as the nonlinear activation function in the neural network, designs and implements a ciphertext-based data classification prediction solution, and provides a detailed description of the five main steps of the solution operation: model training, model encryption, data encryption, ciphertext computation, and decryption of results. The designed test experiment results verify the feasibility of the solution, ensuring that the model and data are not leaked during the entire neural network processing process, effectively guaranteeing the security and privacy of the data and model.
Key words:
neural network; fully homomorphic encryption; privacy protection