確定 sum 是否大於 y 的有效 MPC 協議是什麼?
我需要的安全多方計算 (MPC) 只是確定兩個私有變數的總和是否大於給定值 $ y $ , 作為
$ f(x_0, x_1) = [(x_0 + x_1) > y] $
其中 sum 本身的值(即, $ x_0+x_1 $ ) 被視為私人的,並且 $ y $ 是眾所周知的。這個函式的輸出是
yes
orno
。我知道那裡有許多 MPC 協議,主要基於
boolean
電路(如Yao 的協議)或arithmetic
電路。但是我沒有對這些協議進行基準測試的經驗,我想問一下哪些(現有)協議更適合我的計算?更新:根據@mikeazo 的回答,
arithmetic
電路擅長加法和boolean
比較。由於我的功能 $ f(\cdot) $ 兩者都涉及,所以問題是這兩個電路中哪一個可以更好地完成(比較和加法)?Update2:我也在考慮是否可以分解 $ f(\cdot) $ 分成不同的部分,一個用於比較,一個用於添加。並為每個部分使用不同/對應的電路。是否有這樣的自適應框架可以做到這一點?……也許這樣,它可以更有效。
答案肯定是肯定的。你應該能夠做你正在尋找的東西。計算非常簡單,因此使用現有的 MPC 協議將是有效的。許多現有協議能夠每秒使用 MPC 評估幾個 AES 塊,因此這種計算不會有問題。
通常,MPC 通過將您的函式轉換為電路(布爾值或算術)來工作。在 2 方的情況下,您可能最好使用 Yao 的方法。您可以使用更新的結構,並且可能仍然很有效,但是它們確實使用了一些繁重的公鑰加密,而且我不知道有任何公開可用的實現。對於 Yao 的方法,我推薦MightBeEvil 框架。我相信姚的方法最常(如果不是總是)用於布爾電路。另一種選擇是公平競爭。
在多方情況下(超過 2 方),亂碼電路不會起作用(至少在公開可用的實現中不會)。你在這裡的選擇真的是Viff和Fairplay-MP。Viff 使用算術電路表示,而 Fairplay-MP 使用布爾電路。Viff 有一個來自Toft的專門用於比較的協議,以幫助減輕算術電路中比較的一些問題(稍後會詳細介紹)。
對手模型
你沒有在你的文章中提到對手模型,但我想我會說一點。文獻中有 3 個選擇:半誠實(或誠實但好奇)、隱蔽和惡意(或拜占庭)。Fairplay、Fairplay-MP 和 MightBeEvil 都只支持半誠實的對手,而 Viff 支持兩者。從理論上講,Fairplay、Fairplay-MP 和 MightBeEvil 中的任何一個都可以用來支持惡意對手,但它們並不是開箱即用的,並且需要大量工作(更不用說發布以確保您沒有犯任何錯誤)。
如果您不熟悉差異,半誠實假設腐敗方將按照指定的協議遵循協議,並且僅使用在執行期間收集的資訊來侵犯隱私。Malicious 沒有做任何這些假設(各方可以偏離協議的所有內容,並且總是會被抓到,以壓倒性的機率被抓到)。我不知道有任何公開可用的支持隱蔽對手的實現。僅供參考,一個隱蔽的對手是一個會偏離但不想被抓住的人,所以你只需要定義協議,使得抓住偏離的對手的可能性很高(而不是壓倒性的)。
布爾與算術
兩種方法都有其優點和缺點。在算術電路中,加法很便宜,但比較要昂貴得多。在布爾電路中則相反。我相信,例如,在 MightBeEvil 框架中,他們已經為 32 位加法器而不是 2000 位加法器內置了電路。因此,輸入大小在這裡會有所不同。在算術方面,您只需定義足夠大的基礎欄位以支持輸入大小。這將對性能產生影響,但沒有布爾電路方法那麼大。
布爾電路中的比較相對容易。只需從最高有效位開始,然後使用單個位比較操作來比較這些位。從 MSb 掃描到 LSb,發現差異時停止。在這種情況下,擁有 1 位的人是兩者中較大的一個。在算術方面,事情更複雜,這就是 Viff 使用來自 Toft 的專用協議的原因。對於較小的輸入尺寸,它可能不會產生很大的不同。