SPDZ-如何進行安全的平等比較
SPDZ 論文解釋瞭如何使用 SPDZ 協議來查找秘密值的和/積,以及如何找到秘密值和非秘密值的和/積(第 6 頁)。
該文件似乎說,您可以從中進行任何其他操作。您將如何使用它在秘密值和非秘密值之間進行安全的相等比較?
Bristol SPDZ 實現教程的數組查找部分顯示,他們的實現有一種安全評估秘密值是否等於非秘密值以獲得秘密結果的方法。這在數組查找中被大量使用,因此人們希望它是一種有效的操作。他們是如何實現的?報紙上好像沒有。
測試是否有秘密值 $ [x] $ 為零,其中 $ x \in [0,2^k-1] $ , SPDZ 使用以下藍圖,基於Catrina 和 de Hoogh的方法:
- 取一個秘密的預處理值 $ [r] $ , 在哪裡[Math Processing Error] $ r $ 是均勻隨機的 $ [0, 2^{k+s}-1] $ , 連同第一股[Math Processing Error] $ k $ 位[Math Processing Error] $ r $ , $ [r_0], \dots, [r_{k-1}] $
- 打開 $ c = x + r $ , 讓 $ c_0,\dots,c_{k-1} $ 成為它的[Math Processing Error] $ k $ 最少的信號。位
- 為了 $ i=0,\dots,k-1 $ , 計算 $ [d_i] = c_i + [r_i] - 2c_i[r_i] $
- 輸出 $ 1 - OR([d_0], \dots, [d_{k-1}]) $
這需要模數 $ p > 2^{k+s} $ , 在哪裡[Math Processing Error] $ s $ 是一個統計安全參數(通常為 40),確保 $ x+r $ 不會溢出或洩漏資訊[Math Processing Error] $ x $ .
注意[Math Processing Error] $ d_i $ 被計算為 XOR[Math Processing Error] $ c_i $ 和[Math Processing Error] $ r_i $ . 如果 $ x=0 $ 然後是第一個[Math Processing Error] $ k $ 位 $ c $ 等於第一個[Math Processing Error] $ k $ 位[Math Processing Error] $ r $ , 所以 $ d_i $ 都為零,輸出為 1。否則,根據需要輸出 0。
在最後一步計算 OR 可以天真地完成 $ k-1 $ 乘法 $ O(\log k) $ 回合。還有一些技巧可以在上面連結的論文中描述的恆定輪數中做到這一點。