多方安全计算MPC
1.多方安全計算的價值
MPC是密碼學的一個重要分支,旨在解決一組互不信任的參與方之間保護隱私的協同計算問題,為數據需求方提供不泄露原始數據前提下的多方協同計算能力。
在目前個人數據毫無隱私的環境下,對數據進行確權并實現數據價值顯得尤為重要。MPC就是實現此目的的計算協議,在整個計算協議執行過程中,用戶對個人數據始終擁有控制權,只有計算邏輯是公開的。計算參與方只需參與計算協議,無需依賴第三方就能完成數據計算,并且參與各方拿到計算結果后也無法推斷出原始數據。
2.多方安全計算的來源
多方安全計算(MPC:Secure Muti-Party Computation)研究由圖靈獎獲得者、中國科學院院士姚期智教授在1982年提出,姚教授以著名的百萬富翁問題來說明多方安全計算。百萬富翁問題指的是,在沒有可信第三方的前提下,兩個百萬富翁如何不泄露自己的真實財產狀況來比較誰更有錢。通過研究此問題,形象地說明了多方安全計算面臨的挑戰和問題解決思路,經Oded Goldreich、Shaft Goldwasser等學者的眾多原始創新工作,多方安全計算逐漸發展成為密碼學的一個重要分支。
3.問題抽象
多方安全計算可以抽象的理解為:兩方分別擁有各自的私有數據,在不泄漏各自私有數據的情況下,能夠計算出關于公共函數 的結果。整個計算完成時,只有計算結果對雙方可知,且雙方均不知對方的數據以及計算過程的中間數據。
4.什么是多方安全計算?
多個持有各自私有數據的參與方,共同執行一個計算邏輯計算邏輯(如,求最大值計算),并獲得計算結果。但過程中,參與的每一方均不會泄漏各自數據的計算,被稱之為MPC計算。
舉個例子,Bob和Alice想弄清誰的薪資更高,但因為簽署了保密協議而不能透露具體薪資。如果Bob和Alice分別將各自的薪資告訴離職員工Anne,這時Anne就能知道誰的薪資更高,并告訴Bob和Alice。這種方式就是需保證中間人Anne完全可信。
而通過MPC則可以設計一個協議,在這個協議中,算法取代中間人的角色,Alice和Bob的薪資以及比較的邏輯均交由算法處理,參與方只需執行計算協議,而不用依賴于一個完全可信的第三方。
多方安全計算所要確保的基本性質就是:在協議執行期間發送的消息中不能推斷出各方持有的私有數據信息,關于私有數據唯一可以推斷的信息是僅僅能從輸出結果得到的信息。
4.1.什么是算法
算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。
如果一個算法有缺陷,或不適合于某個問題,執行這個算法將不會解決這個問題。不同的算法可能用不同的時間、空間或效率來完成同樣的任務。一個算法的優劣可以用空間復雜度與時間復雜度來衡量。
算法具有以下五個重要特征:
- 有窮性:算法的有窮性是指算法必須能在執行有限個步驟之后終止;
- 確切性:算法的每一步驟必須有確切的定義;
- 輸入項:一個算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身定出了初始條件;
- 輸出項:一個算法有一個或多個輸出,以反映對輸入數據加工后的結果。沒有輸出的算法是毫無意義的;
- 可行性:算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成(也稱之為有效性)。
注意:文檔中提到的“算法”,特指MPC底層算法;“計算邏輯”特指為執行具體運算而編寫的算法,運行在MPC底層算法之上。
4.2.MPC問題分類
由算法適用性來看,MPC既適用于特定的算法,如加法、乘法、AES,集合交集等;也適用于所有可表示成計算過程的通用算法。
根據計算參與方個數不同,可分為只有兩個參與方的2PC和多個參與方(≥3)的通用MPC。
安全兩方計算所使用的協議為Garbled Circuit(GC)+Oblivious Transfer(OT);而多方安全計算所使用的協議為同態加密+秘密分享+OT。
在多方安全計算中,安全挑戰模型包括半誠實敵手模型和惡意敵手模型。市場大部分場景滿足半誠實敵手模型,也是JUGO技術產品所考慮的敵手模型。
- 半誠實敵手模型:計算方存在獲取其他計算方原始數據的需求,但仍按照計算協議執行。半誠實關系即參與方之間有一定的信任關系,適合機構之間的數據計算;
- 惡意敵手模型:參與方根本就不按照計算協議執行計算過程。參與方可采用任何(惡意)方式與對方通信,且沒有任何信任關系。結果可能是協議執行不成功,雙方得不到任何數據;或者協議執行成功,雙方僅知道計算結果。更多適用于個人之間、或者個人與機構之間的數據計算。
4.3.多方安全計算主要通過以下四大技術來進行保障:
(1)同態加密(Homomorphic Encryption,簡稱HE)
同態加密是一類具有特殊自然屬性的加密方法,可在密文域下進行數據運算的加密算法。與一般加密算法相比,同態加密除了能實現基本的加密操作之外,還能實現密文間的多種計算功能,即先計算后解密等價于先解密后計算。
根據不同加密方案對所支持功能的不同限制,同態加密方案可分為有限同態和完全同態(FHE)方案。有限同態的加密算法只支持某些特定的功能(如有限的加法和乘法運算)。有限同態算法容易實現,其計算開銷也小;因此,這種算法已經在實踐中使用。相比之下,完全同態算法可以支持任意函數,但其計算開銷巨大;因此,它們離實際應用還有一定距離。
通過FHE算法,數據用戶可以將加密數據外包給服務器,直接對這些數據執行各種操作,而不暴露這些數據包含的任何機密信息。支持的操作包括查詢和修改加密數據。一旦對加密數據操作的操作已經完成,結果就返回給數據用戶,數據用戶使用相應的解密密鑰對接收到的加密數據進行解密。在整個過程中,服務器幫助數據用戶執行復雜的操作,而無需從用戶的數據中獲取任何信息。
多用戶同態加密主要有兩種類型:門限FHE和多密鑰FHE。在前者中,密鑰生成過程是一個交互式SMPC協議,其中多個用戶共同協商一個公鑰并獲取相應私鑰的秘密份額。然后,所有用戶都使用公共公鑰對其私有數據進行加密并將其發送到服務器,其中,該服務器具有強大的計算能力。此服務器對收到的密文執行任意函數計算。最后,用戶交互地應用解密協議來獲得計算結果的明文。
(2)混淆電路(Garbled Circuit,簡稱GC)
混淆電路思想是利用計算機模擬集成電路的方式來實現多方安全計算的,它將運算任務轉化為門電路的形式,并且對每一條線路進行加密,在很大程度上保障了用戶的隱私安全。
(3)不經意傳輸(Oblivious Transfer,簡稱OT)
不經意傳輸協議是一種可保護隱私的秘密協議,它使得服務發送方和服務接收方以不經意的方式交互信息,從而可達到保護隱私的目的。不經意傳輸協議是一個兩方安全計算協議,接收方從發送方的數據中選取部分數據,協議使得接收方除選取的內容外,對剩余數據一無所知,并且發送方也無從知道被選取的內容。
(4) 秘密分享(Secret Sharing,簡稱SS)
秘密分享也被稱為秘密分割,是一種對秘密信息的管理方式,它將秘密進行拆分,拆分后的每一個分片由不同的參與者管理,單個參與者無法恢復秘密信息,需要超過一定門限數量的人一同協作進行合并才能恢復秘密文件。
5.MPC算法基本原理(2PC半誠實模型)
下面介紹安全兩方計算的半誠實模型下的MPC算法原理:
5.1.MPC算法執行過程
先對輸入數據做預處理。
遵循原則:1、盡量少的數據輸入;2、盡量多的數據預處理
——數據量太大時會大幅降低算法執行效率。
計算邏輯轉化為布爾電路。
遵循原則:盡量簡單的計算邏輯
——由于MPC是計算密集型和通信密集型算法,若計算邏輯很復雜,會對執行效率產生很大影響。
轉化方式:手動/電路編譯器Frutta
將輸入的布爾電路做GC和OT算法(詳細在下面敘述),得到輸出結果。
5.2.GC+OT的兩方計算基本框架
GC+ OT是在兩方semi-honest模型下的通用型算法,即可以支持任意計算邏輯的安全兩方計算。
總體框架如下圖:
6.小結
多方安全計算是一種在不泄漏原始數據的情況下,對數據進行的計算。上述內容首先介紹了MPC的價值及來源,然后詳述了兩方安全計算的技術實現原理,主要包括GC和OT算法,并對一些技術基礎知識做了簡要概述。
總結
- 上一篇: java一键换壁纸_Java 版下载必应
- 下一篇: 微信公众号运营基础篇:排版、内容创作与引