Provable-Security

基於模擬的證明:簡單範例

  • February 8, 2016

我知道,(理論上)為了使用基於模擬的證明來證明方案是安全的,我們用理想世界中的模擬器替換現實世界中的對手。然後我們試圖證明他們的觀點(在計算上)是無法區分的(如果方案是安全的)。

我需要的是一些簡單的例子(零知識或安全的多方計算)使用這個想法來證明。那麼模擬器是如何建構的,為什麼有時我們會使用對手與模擬器進行互動,我並不清楚。任何對論文或解釋的參考將不勝感激。

我所知道的最簡單的例子實際上是一個病態的案例。也就是說,它在 Hazay 和 Lindell 的書的第 2 章中作為兩方 MPC 協議的一個範例進行了介紹,該協議對惡意對手是安全的,但對半誠實的對手是安全的(在經典意義上,因此他們更喜歡增強的半誠實對手的概念)。協議如下:

**輸入:**兩方 $ P_1 $ 和 $ P_2 $ 有兩個位 $ x_1 $ 和 $ x_2 $ 分別。

輸出: $ P_2 $ 獲得 $ x_1\wedge x_2 $ (的邏輯與 $ x_1 $ 和 $ x_2 $ ), $ P_1 $ 一無所獲。

協議:

  1. $ P_1 $ 發送 $ x_1 $ 至 $ P_2 $ .
  2. $ P_2 $ 輸出 $ x_1 \wedge x_2 $ .

這個協議對於半誠實的人來說是不安全的 $ P_2 $ 因為的觀點 $ P_2 $ 包含消息 $ x_1 $ ,它不能總是從輸入計算 $ P_2 $ (這是 $ x_2 $ )及其輸出(即 $ x_1\wedge x_2 $ )。即,在 $ x_1 $ 是隨機的(均勻的)並且 $ x_2 = 0 $ , 然後 $ x_1 \wedge x_2 $ 將一直是 $ 0 $ , 模擬器必須猜測 $ x_1 $ ,其中它最多以機率成功 $ 1/2 $ .

該協議對惡意軟體是安全的 $ P_2 $ , 然而。

  • 在現實世界中,惡意對手破壞 $ P_2 $ 首先獲得輸入 $ x_1 $ 的 $ P_1 $ , 然後輸出它想要的任何東西 $ x_1 $ 和 $ x_2 $ .
  • 在理想的世界裡,誠實的人 $ P_1 $ 發送 $ x_1 $ 到理想的功能。惡意對手破壞 $ P_2 $ 發送 $ 1 $ . 然後對手獲得 $ 1\wedge x_1 = x_1 $ ,並輸出任何真實世界對手的輸出。

它對惡意軟體是安全的 $ P_1 $ 是微不足道的:理想世界的對手只是將現實世界的對手發送給理想的功能 $ P_2 $ .


為了澄清一些事情,上述協議被稱為“安全”的事實可能違反直覺,因為 $ P_2 $ 獲得輸出 $ P_1 $ ,這似乎與 MPC 的全部觀點相矛盾。然而,安全計算(針對惡意對手)的定義並沒有說(現實世界的)對手一定不能獲得任何東西。它說現實世界的對手不得獲得理想世界的對手無法獲得的任何東西。事實上,我們在這裡表明,理想世界的對手正在破壞 $ P_2 $ 也可以獲得輸入 $ P_1 $ ,因此現實世界的對手獲得它的事實與協議的安全性並不矛盾。

引用自:https://crypto.stackexchange.com/questions/27004