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