多方安全計算(MPC)的定義:
? ?假設(shè)系統(tǒng)共有n個參與計算方P1,P2,…,Pn篡悟,每個參與方的輸入xi是私密的锁摔,需要所有參與方協(xié)作才能執(zhí)行f(x1,x2,…,xn)運算绸贡,計算結(jié)束后Pi只能得到與xi相對應(yīng)的計算結(jié)果寨腔,Pi以外的其他參與方用于運算的數(shù)據(jù)信息對其是不可知的辛友。
MPC兩種常用的方法如下:
1. 混淆電路(Garbled Circuit):
? ?任何算法都可以使用門電路表示薄扁,每個門都對應(yīng)一個真值表,我們可以對門電路進行加密废累。首先對每個輸入(輸出)的0和1值進行隨機置換邓梅,然后用輸入作為密鑰來加密輸出,按順序逐個加密算法所有的門然后連接起來邑滨,將上一個門的輸出作為下一個門的輸入日缨,所有的門電路連在一起就構(gòu)成了用于計算的函數(shù),整個過程都是通過密文計算掖看,各個參與方無法獲取計算過程中的具體內(nèi)容匣距。
2. 秘密共享(Secret Sharing):
? ?通過合理且有效的方式將每個參與方的秘密拆開,然后再分給每一個參與方哎壳,每個獨立的參與方都無法獲得原始的秘密毅待,只有多個參與方協(xié)同計算才能得到一些想要的對應(yīng)處理結(jié)果,由于過程中所有參與方都無法自己進行計算得到結(jié)果归榕,保證了每一個秘密的安全性尸红。
實例
? ? 這里舉一個基于秘密共享方案的例子來具體講述安全多方計算的過程:
? ? 假設(shè)有參與方Alice和Bob分別擁有秘密數(shù)據(jù)a和b,他們想要聯(lián)合計算f(a,b)蹲坷。Alice生成一個隨機數(shù)r驶乾,Bob生成一個隨機數(shù)s,則Alice可以將自己的數(shù)據(jù)分為a-r和r循签,Bob可以將自己的數(shù)據(jù)拆分為b-s和s级乐。隨后Alice和Bob交換分量,Alice擁有(a-r,b-s)县匠,Bob擁有(r,s)风科,進入秘密共享狀態(tài)撒轮。該狀態(tài)下的a和b可以進行相關(guān)計算得到f(a,b)。這里以加法為例贼穆,我們想要通過MPC計算f(a,b)=a+b题山,Alice計算A=((a-r)+(b-s)),Bob計算B=r+s故痊,則f(a,b)=A+B=a+b顶瞳,最后得到了想要的計算結(jié)果的同時,Alice和Bob也無法得知對方擁有的秘密數(shù)據(jù)愕秫,保證了數(shù)據(jù)安全慨菱。
多方安全計算具有以下特點:
1. 輸入隱私性:MPC的整個計算過程中參與方的數(shù)據(jù)都在本地存儲未以原始數(shù)據(jù)形式進入過計算系統(tǒng)不會向其他參與方泄露數(shù)據(jù),保證了數(shù)據(jù)隱私性戴甩。
2. 計算準確性:參與方通過MPC協(xié)議和約定查詢和計算符喝,通過MPC計算的結(jié)果和原始數(shù)據(jù)直接進行計算的結(jié)果一致,保證了計算的準確性甜孤。
3. 去中心化:MPC計算過程中不需要可信第三方來協(xié)助計算协饲,避免了第三方特權(quán),通過采取系統(tǒng)協(xié)議讓各個參與方擁有平等的權(quán)力缴川,都能開啟計算任務(wù)茉稠。