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