MPC 定義:UC 安全與真實理想模擬?
我認為惡意安全 2PC 的“標準”定義是基於模擬的、理想的現實世界不可區分性定義,例如 Lindell 的How to Simulate It
$$ Lin17, Definition 6.1 $$. 這個定義與有時被稱為“UC 安全”的定義有何不同(或確實如此)?例如,在這篇 2013 年的論文第 2 節中,Lindell 引用了“環境機器” $ \mathcal{Z} $ . 沒有這樣的機器(顯然)出現在
$$ Lin17, Definition 6.1 $$. “標準”定義是否不如 UC 定義安全?如果是這樣,在一個定義下安全但在另一個定義下不安全的協議範例是什麼?如果它們是等效的,那麼(大致)如何顯示?
Lindell 的“如何模擬它”教程使用了所謂的獨立安全模型。有關討論,請參見第 10.1 節。
獨立模型單獨分析協議實例的安全性。UC 模型分析與協議實例同時存在的任意“世界上正在發生的其他事情”的安全性。那些“其他東西”是由這個環境機器在 UC 定義中擷取的。
在獨立模型中,我們將安全性定義為“對於每個攻擊協議的對手,都有一個模擬器,這樣真正的 $ \approx $ 理想。”請注意,模擬器可以以完全任意的方式依賴對手。特別是,模擬器可以做的一件事是多次執行對手程序,經常將對手程序倒回到之前的狀態。
在 UC 模型中,安全定義被擴展為:“對於每個攻擊協議的對手,都有一個模擬器,這樣對於所有環境,真實 $ \approx $ 理想。”現在同一個模擬器必須適用於所有環境,這極大地限制了它的能力。一個環境可能期望在協議執行期間與對手程序對話。在這種情況下,倒帶對手將導致理想世界看起來與現實世界非常不同,因為模擬器也不能倒帶環境。有可能表明模擬器必須“直線”執行對手程序(不倒帶)。
這是一個可以在獨立模型中安全計算但不能在 UC 中安全計算的函式範例。這個例子來自這篇論文。一方選擇一行,另一方選擇一列,輸出由這張表決定:
$$ \begin{array}{cccc} 0 & 0 & 1 & 1 \ 2 & 3 & 2 & 3 \end{array} $$
獨立協議非常簡單:行播放器宣布他們的輸入,然後列播放器(現在知道雙方的輸入)計算輸出並宣布它。為什麼它是安全的?用於損壞的行玩家的模擬器是微不足道的——協議中發生的第一件事是行玩家宣布他們的輸入,因此模擬器可以輕鬆提取。損壞的列播放器的模擬有點棘手,因為他們對協議消息的選擇可能取決於行播放器在第一個協議消息中所說的內容!但是,模擬器可以執行對手兩次(即倒帶),並查看它將如何響應第一條消息“頂行”(響應 0 或 1)和第一條消息“底行”(響應 2 或 3)。腐敗的專欄玩家總共有 4 種可能的反應方式,並且,由於此函式的結構,每種方式對應於列播放器的此函式的有效輸入。所以模擬器可以再次提取列播放器的輸入。
然而,有可能證明(但不平凡)在 UC 模型中沒有用於此功能的安全協議。我描述的倒帶策略對於這個功能來說是不可避免的。