安全多方计算
安全多方計算從入門到精通:MPC簡介&JUGO平臺
簡介:今天我們來介紹一下基于安全多方計算所設(shè)計出來的產(chǎn)品JUGO。從安全性角度來看,數(shù)據(jù)泄露——隱私安全問題嚴(yán)重;facebook的數(shù)據(jù)泄露事件鬧得很大,原因就是facebook單方面將用戶的個人數(shù)據(jù)提供給了第三方機(jī)構(gòu),這為個人數(shù)據(jù)的擁有權(quán)敲響了警鐘。從數(shù)據(jù)價值角度來看,數(shù)據(jù)孤島——數(shù)據(jù)之間由于各種原因造成了壁壘,(政府?dāng)?shù)據(jù)由于政策保密性完全不能對外公布,運營商、互聯(lián)網(wǎng)每家都在收集客戶的數(shù)據(jù)信息,但他們不會將這些數(shù)據(jù)透露給第三者),所有這些,使得這些數(shù)據(jù)都無法互通,那么就不能夠為數(shù)據(jù)使用者提供利用價值,達(dá)不到1+1>2的效果。因此目前急需一個既能保護(hù)數(shù)據(jù)隱私又能實現(xiàn)數(shù)據(jù)流動起來最大化其價值的解決方案——JUGO。
1.概述
大數(shù)據(jù)時代,海量數(shù)據(jù)的交叉計算可以為科研、醫(yī)療、金融等提供更好支持。許多企業(yè)或組織出于信息安全或利益的考慮,內(nèi)部數(shù)據(jù)是不對外開放的。形成一個個數(shù)據(jù)孤島,數(shù)據(jù)的價值無法體現(xiàn)或變現(xiàn)。安全多方計算(MPC)可以很好解決這一難題。保證各方數(shù)據(jù)安全的同時,又得到預(yù)期計算的結(jié)果。
為了讓數(shù)據(jù)安全地碰撞出更多價值,打破數(shù)據(jù)在行業(yè)、企業(yè)間流動的壁壘,矩陣元推出了JUGO安全多方計算平臺。JUGO提供安全多方計算底層平臺,并集成了通用MPC算法的SDK。同時提供編寫高級語言Frutta的IDE,方便用戶將Frutta語言編寫的程序轉(zhuǎn)換成電路。用戶可以在平臺上編寫MPC算法并發(fā)布,也可以發(fā)起計算任務(wù),邀請第三方進(jìn)行安全多方計算或可以申請參與他人發(fā)起的計算任務(wù)。
用戶將計算節(jié)點部署到本地,可以選擇JUGO開放服務(wù)平臺作為代理(也可以是第三方), 節(jié)點之間通過代理進(jìn)行加密通訊,所有節(jié)點不保留任何數(shù)據(jù)。整個計算過程沒有任何明文或原始數(shù)據(jù)傳播或存在,最后計算結(jié)果發(fā)送給事前約定的接收方。
JUGO開放服務(wù)平臺是一個數(shù)據(jù)加工廠,也是一個算法和數(shù)據(jù)集市。在保護(hù)數(shù)據(jù)安全的前提下幫助賣方用戶數(shù)據(jù)增值、變現(xiàn),幫助買方用戶尋找所需的數(shù)據(jù)和服務(wù)。
為了數(shù)據(jù)的流動是矩陣元的口號和愿景,流動的數(shù)據(jù)才更有價值。
JUGO特性:
- 支持semi-honest通用兩方算法:GC+OT。
- 支持Frutta編寫的IDE,提供MPC算法的SDK,用戶使用IDE和SDK進(jìn)行開發(fā)。
- 支持加法(addition),比較(comparison)多方算法。
- 后續(xù)支持通用多方算法和硬件加速
2.MPC名詞解釋
| 名稱 | 全稱 | 中文名稱 | 說明 |
| MPC | Secure?Multi-Party Computation | 安全多方計算 | 一種保護(hù)數(shù)據(jù)安全隱私的多方計算算法。 |
| GC | Garbled Circuit | 加密電路 | 一種通過加密處理電路的方式。 |
| OT | Oblivious Transfer | 不經(jīng)意傳輸 | 一種安全的選擇、傳輸協(xié)議。 |
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)的方法描述解決問題的策略機(jī)制。也就是說,能夠?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)系,適合機(jī)構(gòu)之間的數(shù)據(jù)計算;
- 惡意敵手模型:參與方根本就不按照計算協(xié)議執(zhí)行計算過程。參與方可采用任何(惡意)方式與對方通信,且沒有任何信任關(guān)系。結(jié)果可能是協(xié)議執(zhí)行不成功,雙方得不到任何數(shù)據(jù);或者協(xié)議執(zhí)行成功,雙方僅知道計算結(jié)果。更多適用于個人之間、或者個人與機(jī)構(gòu)之間的數(shù)據(jù)計算。
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ǔ)知識做了簡要概述。
二、JUGO與MPC
1.JUGO定位
針對企業(yè)級用戶,基于MPC的安全數(shù)據(jù)交易平臺。通過在本地部署MPC節(jié)點,進(jìn)行數(shù)據(jù)協(xié)同計算。
2.JUGO特性
- 支持semi-honest通用兩方算法:GC+OT。
- 支持Frutta編寫的IDE,提供MPC算法的SDK,用戶使用IDE和SDK進(jìn)行開發(fā)。
- 支持加法(addition),比較(compare)等多種算法。
- 以瀏覽件插件的形式提供MPC個人體驗。
- 后續(xù)支持通用多方算法和硬件加速。
3.JUGO架構(gòu)
?
針對計算邏輯提供者,MPC-IDE實現(xiàn)計算邏輯的編寫,并通過集成的電路編譯器轉(zhuǎn)化為電路文件;作為數(shù)據(jù)執(zhí)行方,矩陣元提供的MPC-SDK直接為計算邏輯提供者服務(wù);并且矩陣元對MPC-SDK內(nèi)部算法實現(xiàn)GPU、FPGA等硬件加速,使協(xié)同計算過程更快地完成。
總結(jié)
- 上一篇: 攻城略地mysql充值_攻城掠地充值有巨
- 下一篇: 使用ELF解析工具patch ELF