分布式大數據協(xié)作系統(tǒng)研究
時間:2022-06-16 08:30:24
導語:分布式大數據協(xié)作系統(tǒng)研究一文來源于網友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要:同態(tài)加密算法和安全多方計算技術可在數據加密的情況下進行多方參與的計算,可以有效的解決數據泄露問題。對常見的四種同態(tài)加密庫SEAL、HElib、PALISADE、Pyfhel進行了分析和選擇,綜合運行速度和開發(fā)效率因素,選擇Pyfhel同態(tài)加密庫,來設計與實現支持多數據源安全共享的分布式大數據協(xié)作系統(tǒng)。該系統(tǒng)為數據共享場景提供了一種可行的解決方案。
關鍵詞:同態(tài)加密;數據共享;Pyfhel;多方計算
隨著互聯網和大數據等技術的不斷發(fā)展,我們步入了大數據時代,數據共享、數據分析等應用的使用越來越普遍,海量數據的交叉計算可以為科研、醫(yī)療、金融等提供更好支持,但是數據的共享隨之帶來的是數據的泄露的問題。許多企業(yè)或組織出于信息安全或利益的考慮,內部數據是不對外開放的,但是這也會帶來“數據孤島”的問題,數據的價值無法體現出來。同態(tài)加密算法和安全多方計算技術可以在不泄露明文的情況下,實現多方參與的數據協(xié)同計算,實現安全的數據流通,達到數據“可用不可見”[1]。同態(tài)加密,英文稱之為HomomorphicEncryption,HE是指滿足密文同態(tài)運算性質的加密算法,即數據經過同態(tài)加密之后,直接對密文進行同態(tài)計算,得到的密文計算結果與直接用明文進行計算的結果相一致的算法?;谕瑧B(tài)加密的安全多方計算技術旨在解決一組互不信任的參與方之間保護隱私的協(xié)同計算問題,在不泄露原始數據前提下,為數據需求方提供多方協(xié)同計算能力。
1同態(tài)加密算法庫
同態(tài)加密算法可以分為全同態(tài)加密算法和半同態(tài)加密算法。其中,全同態(tài)加密算法是指支持對密文進行任意形式的計算;半同態(tài)加密算法是指支持對密文進行部分形式的計算,如僅支持加法或乘法計算[6]。全同態(tài)加密算法在不斷的發(fā)展中依次出現了Gentry、BGV、BFV、GSW、CKKS等方案。一個同態(tài)加密庫可以支持多種算法,如SEAL可以支持BFV和CKKS方案、HElib可以支持CKKS方案、PALISADE可以支持BGV、BFV、CKKS等方案。Pyfhel庫是基于SEAL/PALISADE/HElib開發(fā)的。
1.1四種同態(tài)加密庫的簡介和調用方法
SEAL是微軟開源的同態(tài)加密庫,有C++和C#版本,并逐漸推廣應用到Python、Javascript和TypeScript。它支持不對稱和對稱加密算法,提供了兩種機制的同態(tài)加密,BFV和CKKS[2]。它支持Windows、Linux、macOS、FreeBSD、Android等操作系統(tǒng)平臺,并支持.NET開發(fā),使開發(fā)人員編寫同態(tài)加密應用程序更為便捷。在Windows中SEAL的安裝需要借助Visualstudio進行安裝和配置。首先需要安裝C++編譯運行環(huán)境,然后下載SEAL源碼文件,編譯解析源碼文件,生成seal.lib文件。在調用時,需添加該lib文件的附件庫目錄、附加包含目錄和附件依賴項??傮w上,安裝相對比較復雜。HElib由C++編寫,使用了NTL數學庫,可實現無自舉的同態(tài)加密和近似數算數的同態(tài)加密,支持密文的加法和乘法。安裝HElib需要先下載HElib源碼和HElib依賴。有兩種不同的方式來構建和安裝HElib。一種是自動下載和構建GMP和NTL依賴項,并將庫打包在可重定位的文件夾中。第二種要求自行安裝GMP與NTL并在系統(tǒng)中可用。調用時需要添加頭文件目錄、lib文件目錄、庫文件目錄。HElib適用于Linux、MacOS等平臺[4]。PALISADE是一個由Duality公司研發(fā)的基于C++編寫的通用綜合格密碼庫。該庫是模塊化系統(tǒng)結構,側重于可用性。在增加安全性方面,它運用了數字簽名、基于身份的加密和基于屬性加密的密文策略。在性能方面,PALISADE有效地實現了余數系統(tǒng)算法,提高了全同態(tài)加密方案的性能。PALISADE擁有跨平臺性,支持在Linux、Windows、macOS平臺上安裝,同時可以使用CMake/make自定義安裝。以Linux安裝為例,首先需要下載MSYS2,然后下載對應源碼進行編譯和構建,調用方式與HElib類似[5]。Pyfhel是支持Python語言的一個同態(tài)加密庫,底層由C++語言開發(fā),使用SEAL/HElib/PALISADE作為后端。支持密文的整型和雙精度浮點型數的加法、乘法、減法和冪指數的運算。Pyfhel適用于任何擁有Python環(huán)境的平臺。安裝時,只需要運行pipinstallpyfhel命令,安裝簡單。調用時只需導入Pyfhel庫,并調用庫中函數即可[3]。
1.2四種同態(tài)加密庫比較與選擇
本文在LinuxKali2020虛擬機(CPU數量為1、內核為1,內存為2G)中對上述四個同態(tài)加密庫進行了運行時處理速度的測試。其中,統(tǒng)一運用CKKS全同態(tài)加密方案,每種程序運行次數都經過10輪并取平均,結果如表1和表2所示。由表1可見,其中SEAL和Pyfhel運行時間增加是比較平穩(wěn)的,而HElib和PALISADE當次數較少時運行速度較優(yōu),但當次數較大時運行時間將會大幅度增加。由乘法同態(tài)測試發(fā)現,乘法會產生大量噪聲,所以不同算法對乘法的運算次數的支持會有限制,表2中標注了實驗中測到的運算上限。在乘法運算速度上,SEAL和HElib比較快,但在乘法運算次數上會比PALISADE略差。綜合上述結果的比較,發(fā)現Pyfhel同態(tài)加密庫在加法的運算速度和乘法的運算次數上性能適中,而安裝和調用方面是四種庫中最便捷的,所以我們選擇了Pyfhel同態(tài)加密庫和Python語言來實現我們的支持多數據源安全共享的分布式大數據協(xié)作系統(tǒng)。
2運用pyfhel實現支持多數據源安全共享的分布式大數據協(xié)作系統(tǒng)
2.1系統(tǒng)總體設計
數字經濟時代,企業(yè)或組織需要在數據流通和交易方面進行深度合作。通過各方數據協(xié)同計算,可以大程度的利用數據的價值,提升生產效率,推動產業(yè)創(chuàng)新。而保護各方數據在共享計算時不被泄露是企業(yè)或組織參與數據共享合作的前提條件。例如銀行需要對企業(yè)做出評估,需要政府方面的數據信息來進行計算。如果直接把數據給銀行,會產生數據泄露的問題,因此,亟需運用同態(tài)加密和安全多方計算技術開發(fā)一個第三方平臺使其能夠獲得政府加密以后的數據并進行計算,并將結果返回給銀行。根據多方數據安全共享的需求,運用同態(tài)加密和多方計算技術設計與開發(fā)支持多數據源安全共享的分布式大數據協(xié)作系統(tǒng)。系統(tǒng)包括密鑰生成、密鑰重置、加密、解密、計算、系統(tǒng)管理等六個主要功能模塊,其中系統(tǒng)管理包括風控模型管理、數據源管理、用戶管理。系統(tǒng)整個流程是客戶端負責產生和更新同態(tài)加密所需的密鑰對,并將加密參數、公鑰等除私鑰以外文件上傳到平臺上保存;數據源端從平臺獲取公鑰來加密所需的數據,并將加密后的數據發(fā)往平臺進行計算;平臺根據分控模型將收到的數據進行同態(tài)加密計算,并將得到的結果發(fā)送給客戶端;客戶端用私鑰對計算后的密文進行解密得到明文結果。在整個業(yè)務交互過程中,除了數據源,其他參與方都無法獲得明文數據,因此保障了數據共享的保密性、完整性。各模塊與系統(tǒng)的三個組成部分的關系如圖1所示。
2.2關鍵模塊設計
下文就密鑰生成、密鑰重置、系統(tǒng)管理、加密、計算、解密等系統(tǒng)關鍵功能模塊展開設計介紹。⑴密鑰生成:直接調用Pyfhel庫,生成密鑰對,然后將公私鑰分別存到兩個文件中。⑵密鑰重置:對密鑰進行定時更新,增加系統(tǒng)安全性??蛻舳司哂忻荑€重置功能,在第一次密鑰生成之后,會在本地生成一個up.dat文件,該文件存儲著密鑰本次生成或更新的時間戳,如果該時間戳和當前時間相差超過更新周期,則會自動地重新生成加密參數、公鑰、私鑰等文件,并將除私鑰以外的文件上傳到平臺上進行保存或更新。⑶系統(tǒng)管理:包括風控模型管理、數據源管理、用戶管理,如圖2所示。風控模型為系統(tǒng)中的計算模型。用戶管理是主要對不同角色用戶的管理。⑷加密:在數據源端加載執(zhí)行。當數據源端收到平臺請求并確定請求的數據范圍后,將會從平臺下載相應客戶端的加密參數、公鑰等文件,然后從本地逐一調取數據進行加密操作,加密調用的是Pyfhel庫中的encode函數和encrypt函數,最后將密文發(fā)送給平臺。⑸計算:平臺接收到計算請求后,根據風控模型向數據源請求數據,并在收到數據源發(fā)送的密文數據后進行計算,如圖3所示。計算調用的是Pyfhel同態(tài)加密庫中的運算函數。針對計算過程中的噪音問題,系統(tǒng)加入了判決操作,通過noiseBudget參數是否為0判斷計算結果的正確性,并將正確的密文結果發(fā)送給客戶端。⑹解密:客戶端在接收到平臺發(fā)送的密文結果后,運用私鑰文件和Pyfhel庫中decrypt函數對密文結果進行解密,然后再用decode函數進行解碼得到明文結果。
2.3系統(tǒng)實現
該系統(tǒng)是一個Web平臺,前端運用Bootstrap框架,后端運用Django框架,前后端的交互運用Ajax技術,數據存儲運用的是MySql技術,有關同態(tài)加密計算方面運用的是Python的Pyfhel同態(tài)加密庫。系統(tǒng)的技術實現如圖4所示。為了提高系統(tǒng)客戶端的兼容性,客戶端頁采用Web形式實現,主要包括密鑰生成、管理風控模型功能。平臺管理員具有管理企業(yè)用戶和數據源的功能。其中,企業(yè)用戶即需要數據進行風控模型計算獲得運算結果的客戶端用戶。數據源管理員可登錄平臺查看數據源使用情況,主要包括數據源的ID、名稱、IP地址、端口號、被使用的次數等信息。
3結束語
本文在比較了四種同態(tài)加密庫以后,選擇使用Python語言和Pyfhel同態(tài)加密庫,設計和實現了一個支持多數據源安全共享的分布式大數據協(xié)作系統(tǒng)。該系統(tǒng)能夠解決企業(yè)風控值計算場景中數據共享的安全性問題。該方案在不泄露源數據的情況下進行安全共享計算,可以讓數據的價值得以體現,該方案可以推廣和衍生到更多共享的場景中。在未來,我們將結合區(qū)塊鏈技術對同態(tài)加密算法做更深入的研究,使其能夠支持更大規(guī)模的計算。
作者:魏嘯磊 林蘇 潘越 胡奇 夏天 單位:溫州大學計算機與人工智能學院