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