Yao 的亂碼電路 - 為什麼 Alice 需要重新排列電路?
我對姚氏亂碼的理解(主要基於這個總結)如下:
Alice 根據要計算的函式 f 創建了一個亂碼電路。然後,她將她的輸入硬編碼到電路中,並以鮑勃無法弄清楚電路的作用的方式重新排列門。然後她分配一對隨機密鑰, $ K^0_i, K^1_i $ 到每根電線 $ w_i $ . 她向 Bob 發送四個(未標記的、打亂的)值 $ X_s^a,X_s^b,X_s^c,X_s^d $ 對於每個門 $ g_s $ . 這些 $ X_s $ 選擇值使得如果 Bob 知道密鑰 $ K_i^{v_i} $ 和 $ K_j^{v_j} $ 對於兩個輸入線 $ g_s $ 有價值觀 $ v_i $ 和 $ v_j $ 然後他可以計算密鑰 $ K_k^{v_k} $ . 具體來說,他通過對 $ K_i^{v_i} $ 和 $ K_j^{v_j} $ 並且每個 $ X_s $ 價值。這四個結果之一將是 $ K_k^{v_k} $ ,其他將是無意義的隨機位。Alice 給 Bob 值 $ AUTH(K_k^0),AUTH(K_k^1) $ 對於一些單向陷門散列函式 AUTH。因此,Bob 可以找出四個值中的哪一個不是隨機位。
我不明白為什麼 Alice 需要對她的輸入進行硬編碼並重新排列門。難道她不能直接給鮑勃原樣的電路和她的輸入鍵嗎?除了他自己的輸入線和由它們確定的線外,Bob 不知道線上的鍵是代表處於狀態 0 還是狀態 1 的線。所以即使他知道他正在計算的功能(電路做什麼) ) 他應該無法弄清楚這個函式的值是什麼。
我還從這個問題中意識到,必須再次生成鍵和 X 值才能進行第二次計算。但我不明白為什麼電路本身的結構需要改變。
Alice 不需要對她的輸入進行硬編碼,也不需要打亂門(只需要打亂每個門內的密文)。Bob 需要在每條輸入線上按住一個鍵。對於與 Alice 的輸入相關的輸入線,她可以發送適當的密鑰(這不會顯示任何資訊,因為 0 和 1 值都是隨機的)。
我不明白為什麼 Alice 需要對她的輸入進行硬編碼並重新排列門。難道她不能直接給鮑勃原樣的電路和她的輸入鍵嗎?
Alice 需要對她的輸入進行硬編碼,因為雙方不得相互學習對方的輸入值。亂碼電路的全部意義在於設計一種方式,使雙方都可以學習想要的結果,而無需學習自己的價值觀以外的任何東西。因此,如果 Alice 將她的輸入提供給 Bob,那麼整個協議就失去了意義。
但是,因為沒有 Alice 的值就無法進行計算,我們需要找到一種方法,讓 Alice 將她的值相加,但 Bob 將一無所知。因此,Alice 將她的值硬編碼到系統中並打亂順序,以便 Bob 什麼都不能理解。
由於每個布爾電路都可以表示為一個真值表,如果 Alice 沒有打亂順序,那麼 - 在一個簡單的電路中 - Bob 應該相對容易猜測 Alice 的值。
檢查這個例子。