當前,全球數(shù)據(jù)量呈現(xiàn)爆炸式增長,國家與政府通過數(shù)據(jù)分析實現(xiàn)服務(wù)質(zhì)量提升和輔助決策決議,企業(yè)通過數(shù)據(jù)收集實現(xiàn)新業(yè)務(wù)開拓,基于數(shù)據(jù)價值挖掘的應用案例層出不窮,我們已經(jīng)進入數(shù)據(jù)即黃金的時代。
然而,為了保護數(shù)據(jù)不被濫用和保障數(shù)據(jù)擁有者權(quán)益,《中華人民共和國網(wǎng)絡(luò)安全法》、歐盟《通用數(shù)據(jù)保護條例》(GDPR)和《中華人民共和國密碼法》等法制法規(guī)相繼公布與實施,核心數(shù)據(jù)需加密存儲已經(jīng)成為基本的要求約束,保護核心數(shù)據(jù)不被竊取、在數(shù)據(jù)加密前提下挖掘數(shù)據(jù)價值和實現(xiàn)全密文計算,已經(jīng)成為必然的發(fā)展趨勢。然而,全密文計算不可能一蹴而成,還有很長的路要走。
密文計算是指在密文形式數(shù)據(jù)上的任意計算,全密文計算則特指數(shù)據(jù)產(chǎn)生、存儲、共享、流轉(zhuǎn)和使用的全過程都處于密文形式下的密文計算。計算又是一個寬泛的概念,可以是數(shù)據(jù)查詢和統(tǒng)計分析,也可以是數(shù)學計算和科學計算,還可以是機器學習和價值挖掘。
01 先談?wù)劽芪牟樵?/p>
密文查詢是一種基本的全密文計算形態(tài),是在加密的數(shù)據(jù)上執(zhí)行大小比較、模糊查詢、關(guān)鍵詞匹配等計算的過程,解決的是數(shù)據(jù)加密后的可用性問題。眾所周知,無論是采用對稱密碼還是非對稱密碼,數(shù)據(jù)加密都會破壞明文數(shù)據(jù)的操作特性。比如說,數(shù)值85356565加密后可能變成“U2Fs…8B3kI=”,很明顯,密文難以執(zhí)行數(shù)值的大小比較、求和平均等操作了。
相等查詢是數(shù)據(jù)直接加密后能支持的基本查詢。如果相同的明文被加密成相同的密文,也就是確定性加密,相等查詢、連接查詢和分組查詢等數(shù)據(jù)庫查詢操作仍然可以支持。然而,確定性加密很容易遭受頻率攻擊,比如年齡數(shù)據(jù),通過統(tǒng)計相同年齡的密文出現(xiàn)的次數(shù),結(jié)合能掌握的年齡分布的信息,就可以完成特定密文的破解。
因此,確定性加密是密碼應用的安全基線,而隨機化加密成為全密文計算時代的首要選擇。但是,隨機化加密將導致基本的相等查詢也變得困難,各類高效的密文查詢策略仍然需要進一步的研究。
范圍查詢,用于查詢屬性取值在規(guī)定范圍之內(nèi)的元組,比如查詢年齡在20到30之間的所有人員信息。密文上的范圍查詢可以采用保留順序加密,它能產(chǎn)生具有與明文一樣順序的密文。當然,直接泄露明文順序的加密自然不是很安全的加密手段,目前也遭受了很多統(tǒng)計攻擊和推理攻擊。順序揭示加密一定程度上減少了泄露,使得密文執(zhí)行比較操作后才會泄露對應明文的順序,但在安全級別較高的場景里仍然無法直接應用。
關(guān)鍵詞檢索是最常用的查詢操作,比如,從數(shù)據(jù)庫里查詢姓“劉”的老師、打開Windows操作系統(tǒng)查找一個忘記存到哪里的文件、進入郵件系統(tǒng)查詢前幾日收到的一封郵件等等??伤阉骷用芑跈z索密文文件是否包含某關(guān)鍵詞的問題而提出,具有廣泛的應用前景。
值得強調(diào)的是,可搜索加密還可以支持密文的相等查詢、模糊查詢和范圍查詢等,舉例而言,范圍查詢可以轉(zhuǎn)化為范圍內(nèi)的多個關(guān)鍵詞的查詢。因此,可搜索加密已經(jīng)成為密文查詢當前的研究熱點。
02 再談?wù)劽芪挠嬎?/p>
在數(shù)據(jù)即黃金的時代,從數(shù)據(jù)里挖掘價值實現(xiàn)價值共享,是時代和科技發(fā)展賦予的新使命。然而,價值共享是以不侵犯數(shù)據(jù)隱私的數(shù)據(jù)分析為前提的,而計算是數(shù)據(jù)分析的主要手段。
2.1 同態(tài)加密
在密文上實現(xiàn)任意的計算是同態(tài)加密的初衷和目標。同態(tài)加密的概念在20世紀70年代就被提出,但是直到2009年,第一個真正的全同態(tài)加密體制才由Gentry設(shè)計出來。全同態(tài)加密是指可以對密文進行任意類型計算和任意多次計算。一般而言,由于任意計算均可通過加法和乘法構(gòu)造,若加密算法同時滿足加法同態(tài)性和乘法同態(tài)性,則可稱其滿足全同態(tài)性。目前,HElib、SEAL等開源庫已經(jīng)可以支持全同態(tài)加密,用戶可以基于這些庫構(gòu)建自己的密碼應用。
全同態(tài)加密是達到全密文計算的理想技術(shù)手段,然而它還不能被廣泛應用,制約其應用的最大問題就是它的實用性。明文上的運算之所以還能在密文上執(zhí)行,一種簡單做法就是擴充密文域,通過在更大空間里的數(shù)據(jù)計算來達到計算和安全的雙重目的。甚至,密文上每做一次運算都會擴充一次密文,使得密文長度不斷變大。這種密文擴充帶來的存儲和計算開銷,對于任意次數(shù)的計算而言是無法接納的。
如果支持對密文進行部分形式的計算,例如僅支持加法、僅支持乘法或支持有限次加法和乘法,則稱其為半同態(tài)加密。半同態(tài)加密主要包括乘法同態(tài)加密RSA算法和ElGamal算法、加法同態(tài)加密Paillier算法等。目前,它們在數(shù)據(jù)庫加密系統(tǒng)中求和平均為主要計算的統(tǒng)計查詢、安全聚合的聯(lián)邦機器學習等應用場景中都有了廣泛應用。
2.2 安全多方計算
安全多方計算是實現(xiàn)全密文計算的另外一種主流技術(shù),解決了互不信任的參與方之間聯(lián)合計算的問題。在數(shù)據(jù)即黃金的時代,數(shù)據(jù)只有流動起來才能發(fā)揮其真正的價值,然而,數(shù)據(jù)流動共享和協(xié)同分析首先需要解決信任問題。
舉個例子,服務(wù)者在得到消費者的數(shù)據(jù)后才能提升服務(wù)質(zhì)量,而消費者卻不希望公開他們的私密數(shù)據(jù),或者不相信服務(wù)者不會濫用他們的數(shù)據(jù)。這個問題是同態(tài)加密無法解決的問題,因為同態(tài)加密關(guān)注相同密鑰產(chǎn)生的密文上的任意計算,擴展到多方需要解決密鑰共享問題,現(xiàn)實里很難實現(xiàn)。
安全多方計算是姚期智院士為解決互不信任的參與方在保護隱私且沒有可信第三方的前提下協(xié)同計算問題而提出的理論框架,它確保參與方可以獲知約定的協(xié)同計算結(jié)果,但無法獲取或推算出數(shù)據(jù)的原始內(nèi)容,有助于打破目前這種“數(shù)據(jù)孤島”和互不信任的困境。
安全多方計算的研究工作面臨通信量和計算性能的瓶頸。基于混淆電路的兩方安全多方計算由一方將要計算的函數(shù)表示成算術(shù)電路或者布爾電路,另一方對電路逐層進行計算,直到運算完畢。整個過程基于茫然傳輸?shù)燃夹g(shù)實現(xiàn)電路相關(guān)的密鑰或者算子的茫然化和保密化。
它的缺點很明顯,一是電路不易擴展到多方,二是需要交換大量信息,比如每個電路的一次性密鑰等,通信量大?;诿孛芊窒淼亩喾桨踩嬎銋f(xié)議加法計算效率高,已經(jīng)在聯(lián)邦機器學習等場景里應用,但是存在乘法效率低的明顯缺點。秘密分享是將秘密分割存儲的密碼技術(shù),為了提升乘法性能,需要在預處理階段將信息分割生成關(guān)聯(lián)隨機數(shù)組,但每個關(guān)聯(lián)隨機數(shù)組只能用一次,帶來極大通信開銷和預處理的計算開銷。
2.3 實用密文計算
很多應用不需要通用的密文計算方案,而是需要滿足應用需求的特定密文計算。舉例來說,游戲設(shè)備廠商希望精準的投放廣告,考慮到騰訊有用戶玩游戲的記錄、京東有用戶買游戲設(shè)備的記錄,廠商希望把廣告投放給既玩某一款游戲、又買某一款設(shè)備的用戶,這樣廣告的轉(zhuǎn)化率才更高,廣告主才愿意花更多的錢。這實際就要求騰訊和京東將同時滿足條件的用戶選出來,是兩個用戶集合進行交集計算的問題。
在未來一段時間里,面向應用的密文計算會很流行。因為一方數(shù)據(jù)在特定維度下可以抽象為一個數(shù)據(jù)集合,密文集合運算作為特定的安全多方計算問題,包括并集、交集、基數(shù)大小、交集的勢等,在很多領(lǐng)域得到了越來越多的應用。比如說,社交網(wǎng)絡(luò)兩個用戶的共同好友,是一個集合求交的問題;保密投票中計算多少人投了某個特定人選,是一個交集求勢的問題;多家不同銀行聯(lián)合計算儲戶的數(shù)量,是一個基數(shù)大小計算的問題。
聯(lián)邦機器學習是一個機器學習框架,能有效幫助多個機構(gòu)在滿足用戶隱私保護、數(shù)據(jù)安全和政府法規(guī)的要求下,進行數(shù)據(jù)使用和機器學習建模。
它通常會用到兩類技術(shù):第一,使用密文集合交集運算將不同數(shù)據(jù)集中重合的數(shù)據(jù)選出來;第二,在每一輪訓練過程,參與方會將本地訓練得到的模型參數(shù)加密后分享和運算,考慮性能,這個運算通常采用具有加法性質(zhì)的同態(tài)加密或基于秘密分享的安全聚合等。目前,多個聯(lián)邦機器學習框架已經(jīng)開源,包括FedML、Fedlearner等。
03 全密文計算面臨的挑戰(zhàn)
加密是防止隱私泄露的根本辦法,全密文計算就是基于密碼機制來達成的。很多人存在一個錯誤認識,就是只要采用了公認的密碼算法對數(shù)據(jù)加密,妥善保管了密鑰就是安全的。
然而,事實并非如此,雖然密碼算法本身具有可證明安全性,但是在應用中產(chǎn)生的信息泄露,使其容易被破解。除了前文講過的性能開銷大之外,全密文計算面臨的最大挑戰(zhàn)就是如何保護用戶訪問行為模式和減少密文計算過程產(chǎn)生的信息泄露。
信息泄露帶來的攻擊危害會有多大呢?
有些人可能會有疑惑。大家可能聽說過側(cè)信道攻擊,它是針對加密電子設(shè)備在運行過程中的時間消耗、功率消耗或電磁輻射之類的側(cè)信道信息泄露而對加密設(shè)備進行攻擊的方法。這類攻擊方法的有效性遠高于密碼分析的數(shù)學方法,猜出了密鑰或者恢復了密文,給密碼設(shè)備帶來了嚴重的威脅。
對密文計算和密碼應用而言,存在的信息泄露也會形成類似的數(shù)據(jù)隱性側(cè)信道,攻擊者利用掌握的輔助信息可以實施有效的攻擊。
眾所周知,確定性加密會泄露相同密文的個數(shù)而遭受頻率攻擊。那么,是不是指將相同的明文隨機加密成不同的密文就可以了?
事實上,對該明文的一次相等查詢就會泄露其所有不同的密文。這種泄露是為滿足功能要求而帶來的,還有一些泄露是為性能考慮而帶來的。
以可搜索加密為例,考慮性能它通常采用倒排索引結(jié)構(gòu),即服務(wù)器維護一個加密關(guān)鍵詞對應的文檔ID列表,一旦查詢某個關(guān)鍵詞,通過其關(guān)聯(lián)列表快速地返回所有的文檔。當新增一個文檔的時候,它加到哪個加密關(guān)鍵詞對應的列表是泄露的,也就意味著泄露了新增文檔是否包含這個加密關(guān)鍵詞。此類信息泄露已經(jīng)被用來設(shè)計文件注入攻擊,只需要注入對數(shù)級個文件(破解100000個關(guān)鍵詞只需要17個文件),就能攻破此類可搜索加密方案。
密文計算過程存在的信息泄露有很多,比如密文數(shù)據(jù)的訪問次數(shù)、密文比較操作后的大小順序、密文查詢結(jié)果集的元素數(shù)量、是否是相同的密文查詢、相同密文查詢的次數(shù)等,這些信息泄露已經(jīng)被用來發(fā)起推理攻擊、快照攻擊、通信量攻擊、注入攻擊、累積攻擊等攻擊,成功恢復了密文數(shù)據(jù)。
舉例而言,在密文范圍查詢里,攻擊者可以通過掌握的通信量信息,即查詢返回的加密記錄的個數(shù),實施通信量攻擊來恢復密文數(shù)據(jù);在廣告推薦等安全多方計算環(huán)境里,攻擊者可以通過泄露的交集大小,成功推測參與方是否擁有特定用戶或數(shù)據(jù);等等。
要保護密碼應用的各類信息泄露,理想的辦法就是采用不經(jīng)意隨機存儲機模型(ORAM)。它有三個要點:數(shù)據(jù)長度一致、相同數(shù)據(jù)只訪問一次、讀寫行為隱藏。
它通常伴隨著大量的虛假數(shù)據(jù)、虛假讀寫操作,使得操作和特征盡可能統(tǒng)一。比如,讓任意關(guān)鍵詞查詢的結(jié)果集都填充到相同的長度,每個數(shù)據(jù)塊訪問后都隨機換一個新的位置。很顯然,這三個要求達到了安全的目的,卻帶來了極大的計算、存儲和通信的開銷,幾乎不太可能在大數(shù)據(jù)量計算和存儲里應用。面對特定的信息泄露、特定的攻擊設(shè)計特定的保護方法,成為當前一種主流解決辦法、解決安全和實用的折衷方案。但是,在推廣應用中,這類方案容易遭受用戶的質(zhì)疑。
04 當前進展和未來發(fā)展
隨著《中華人民共和國密碼法》的頒布,實現(xiàn)數(shù)據(jù)價值的共享、用戶隱私的保護,推出實用安全的密文計算解決方案或者應用系統(tǒng)成為當前階段的一大要務(wù),也成為未來的一種必然趨勢。
目前,聯(lián)邦機器學習、數(shù)據(jù)庫加密系統(tǒng)、安全多方計算等領(lǐng)域陸續(xù)開源了很多項目,大大推動了密文計算落地的進展程度。
基于可信硬件的解決方案成為目前一種主流思路,比如華為推出了基于ARM TrustZone的數(shù)據(jù)庫加密系統(tǒng)、阿里推出了基于Intel SGX的云加密數(shù)據(jù)庫、百度開源了通用安全計算平臺MesaTEE等??尚庞布ㄟ^隔離等技術(shù)在不可信環(huán)境提供了可信執(zhí)行能力,使得密文甚至可以解密后在內(nèi)部進行安全計算,大大提升了性能,是其大規(guī)模應用的主要原因。
當然,誠如披露的Intel幽靈和熔斷等漏洞,基于可信硬件的解決方案需要抵御信息泄露帶來的攻擊,目前一些解決方法也已經(jīng)陸續(xù)提出。
以Intel SGX為例,只要達到程序茫然和數(shù)據(jù)茫然就可以達到實用安全,程序茫然是使攻擊者不知道程序執(zhí)行了哪個路徑,而數(shù)據(jù)茫然是指使攻擊者不知道訪問了哪個數(shù)據(jù),這些可以通過不設(shè)置跳轉(zhuǎn)語句、所有數(shù)據(jù)執(zhí)行與或操作等方式來達成。對ARM Trustzone而言,因為它通過系統(tǒng)隔離技術(shù)保護了執(zhí)行過程中的數(shù)據(jù)訪問行為,所以更容易減少信息泄露,只要打破輸入輸出的關(guān)聯(lián)性就可以達到一定程度的實用安全。
世界上沒有絕對安全的系統(tǒng),安全在攻防博弈中進展。隨著效率提升的安全多方計算、全同態(tài)加密等密碼協(xié)議的深入研究,泄露減少的可信硬件方案的持續(xù)推進,全密文計算時代早晚會到來。
當然,全密文計算強調(diào)從數(shù)據(jù)的誕生、流轉(zhuǎn)、共享和使用全過程都是密文上的計算,從密文計算到全密文計算,它面臨的挑戰(zhàn)不只是技術(shù)上的問題,還需要解決倫理道德、法律法規(guī)、管理制度等相關(guān)問題,所以還有很長的一段路要走。