@@ -45,47 +45,47 @@ Sender 如果想造假, 等於要能猜中一個 k-bit binary string. 難度很
4545當 mask bit = 0 時, label 和平常一樣.<br >
4646當 mask bit = 1 時, label 會反過來.
4747
48- 計算 masked bit $\^ x = x \oplus \lambda_ \alpha$. 因為 $\lambda_ \alpha$ 是 random 的, 把 $x$ 遮蓋掉了, 所以公開 $\^ x $ 也不會洩漏 $x$. 也因為 $\^ x $ 是 random, 可以當 point-and-permute 的 pointer bit 來 attach 在 label 上.
48+ 計算 masked bit $\hat{x} = x \oplus \lambda_ \alpha$. 因為 $\lambda_ \alpha$ 是 random 的, 把 $x$ 遮蓋掉了, 所以公開 $\hat{x} $ 也不會洩漏 $x$. 也因為 $\hat{x} $ 是 random, 可以當 point-and-permute 的 pointer bit 來 attach 在 label 上.
4949
5050我們希望:
5151
5252如果 $\lambda_ \alpha = 0$:<br >
53- 如果 $x = 0$, 則 $\^ x = 0$. Evaluator 會拿到 $L_ {\alpha,0}$ 和 pointer bit 0.<br >
54- 如果 $x = 1$, 則 $\^ x = 1$. Evaluator 會拿到 $L_ {\alpha,1}$ 和 pointer bit 1.
53+ 如果 $x = 0$, 則 $\hat{x} = 0$. Evaluator 會拿到 $L_ {\alpha,0}$ 和 pointer bit 0.<br >
54+ 如果 $x = 1$, 則 $\hat{x} = 1$. Evaluator 會拿到 $L_ {\alpha,1}$ 和 pointer bit 1.
5555
5656如果 $\lambda_ \alpha = 1$:<br >
57- 如果 $x = 0$, 則 $\^ x = 1$. Evaluator 會拿到 $L_ {\alpha,1}$ 和 pointer bit 1.<br >
58- 如果 $x = 1$, 則 $\^ x = 0$. Evaluator 會拿到 $L_ {\alpha,0}$ 和 pointer bit 0.
57+ 如果 $x = 0$, 則 $\hat{x} = 1$. Evaluator 會拿到 $L_ {\alpha,1}$ 和 pointer bit 1.<br >
58+ 如果 $x = 1$, 則 $\hat{x} = 0$. Evaluator 會拿到 $L_ {\alpha,0}$ 和 pointer bit 0.
5959
60- Evaluator 拿到 label 時可以看到 public pointer bit $\^ x $, 也知道手上拿的是 $L_ {\alpha,\^ x }$. 但只要不知道 mask bit $\lambda_ \alpha$, 就仍然無法知道 $x$.
60+ Evaluator 拿到 label 時可以看到 public pointer bit $\hat{x} $, 也知道手上拿的是 $L_ {\alpha,\hat{x} }$. 但只要不知道 mask bit $\lambda_ \alpha$, 就仍然無法知道 $x$.
6161
6262<img src =" images/Authenticated-Garbling-Mask-Bit.png " width =" 500 " >
6363
6464## Garbled Table
6565
6666再來我們製作 garbled table.
6767
68- 因為 $\^ x = x \oplus \lambda_ \alpha$, 所以 $x = \^ x \oplus \lambda_ \alpha$.<br >
69- 因為 $\^ y = y \oplus \lambda_ \alpha$, 所以 $y = \^ y \oplus \lambda_ \alpha$.
68+ 因為 $\hat{x} = x \oplus \lambda_ \alpha$, 所以 $x = \hat{x} \oplus \lambda_ \alpha$.<br >
69+ 因為 $\hat{y} = y \oplus \lambda_ \alpha$, 所以 $y = \hat{y} \oplus \lambda_ \alpha$.
7070
7171以 AND gate $x \land y = z$ 為例子.
7272
73- Rows 直接用 pointer bits $\^ x $ 和 $\^ y $ 的順序來看.
73+ Rows 直接用 pointer bits $\hat{x} $ 和 $\hat{y} $ 的順序來看.
7474
75- 當 $\^ x = 0, \^ y = 0$, 則
75+ 當 $\hat{x} = 0, \hat{y} = 0$, 則
7676$$
7777\begin{split}
78- \^ z_{00} &= z \oplus \lambda_\gamma \\
78+ \hat{ z_{00} } &= z \oplus \lambda_\gamma \\
7979&= (x \land y) \oplus \lambda_\gamma \\
80- &= ((\^x \oplus \lambda_\alpha) \land (\^y \oplus \lambda_\beta)) \oplus \lambda_\gamma \\
80+ &= ((\hat{x} \oplus \lambda_\alpha) \land (\hat{y} \oplus \lambda_\beta)) \oplus \lambda_\gamma \\
8181&= ((0 \oplus \lambda_\alpha) \land (0 \oplus \lambda_\beta)) \oplus \lambda_\gamma \\
8282&= (\lambda_\alpha \land \lambda_\beta) \oplus \lambda_\gamma
8383\end{split}
8484$$
85- Evaluator 到這邊會持有 $L_ {\alpha,\^ x }$ 也就是 $L_ {\alpha,0}$.<br >
86- 也會持有 $L_ {\beta,\^ y }$ 也就是 $L_ {\beta,0}$.<br >
87- 我們希望 evaluator 可以 decrypt 出 $L_ {\gamma,\^ z} $ 和 pointer bit $\^ z $.<br >
88- 所以用 $L_ {\alpha,0}$ 和 $L_ {\beta,0}$ 來 encrypt $L_ {\gamma,\^ z} $ 和 $\^ z $. (把 Hash($L_ {\alpha,0}$, $L_ {\beta,0}$) XOR 上去)
85+ Evaluator 到這邊會持有 $L_ {\alpha,\hat{x} }$ 也就是 $L_ {\alpha,0}$.<br >
86+ 也會持有 $L_ {\beta,\hat{y} }$ 也就是 $L_ {\beta,0}$.<br >
87+ 我們希望 evaluator 可以 decrypt 出 $L_ {\gamma,\hat{z}} $ 和 pointer bit $\hat{z} $.<br >
88+ 所以用 $L_ {\alpha,0}$ 和 $L_ {\beta,0}$ 來 encrypt $L_ {\gamma,\hat{z}} $ 和 $\hat{z} $. (把 Hash($L_ {\alpha,0}$, $L_ {\beta,0}$) XOR 上去)
8989
9090剩下三個 row 類似. 我們可以得到原 paper page 5 中的 table:<br >
9191<img src =" images/Authenticated-Garbling-Truth-Table.png " width =" 500 " >
@@ -94,7 +94,7 @@ Evaluator 到這邊會持有 $L_{\alpha,\^x}$ 也就是 $L_{\alpha,0}$.<br>
9494
9595在前面的章節中, 我們看過 selective-failure attack: generator 破壞一部分的 circuit, 讓 evaluator 在特定的 input 會發生問題. 如果 evaluator 發生並回報了問題, 則洩漏了 evaluator 的 input.
9696
97- 在上面的例子中, 如果 generator 破壞了第一個 row, 且 evaluator 回報了問題的話, 則 generator 會知道 $\^ x = 0$ 且 $\^ y = 0$.
97+ 在上面的例子中, 如果 generator 破壞了第一個 row, 且 evaluator 回報了問題的話, 則 generator 會知道 $\hat{x} = 0$ 且 $\hat{y} = 0$.
9898
9999因為 generator 也知道 mask bits $\lambda_ \alpha$ 和 $\lambda_ \beta$, 所以可以推導出這兩個 wire 真正的 x 和 y 的 value. 因此洩漏了 evaluator 的 input.
100100
@@ -110,18 +110,18 @@ Evaluator 到這邊會持有 $L_{\alpha,\^x}$ 也就是 $L_{\alpha,0}$.<br>
110110
111111## Efficient Realization
112112
113- 前面提到, 當使用者看到 pointer bit $\^ x $ 時會拿到 $L_ {\alpha,\^ x }$.<br >
114- 如果搭配上 FreeXOR, 則 $\^ x = 0$ 時就是拿到 $L_ {\alpha,0}$, 而 $\^ x = 1$ 時要加上 FreeXOR 的 global $\Delta$.
113+ 前面提到, 當使用者看到 pointer bit $\hat{x} $ 時會拿到 $L_ {\alpha,\hat{x} }$.<br >
114+ 如果搭配上 FreeXOR, 則 $\hat{x} = 0$ 時就是拿到 $L_ {\alpha,0}$, 而 $\hat{x} = 1$ 時要加上 FreeXOR 的 global $\Delta$.
115115
116116同理, 如果繼續看 $x \land y = z$ 的第一個 row, 則
117117
118- $$ L_{\gamma,\^z_{ 00}} = L_{\gamma,0} \oplus \^z_ {00} \Delta $$
118+ $$ L_{\gamma,\hat{z}_{ 00}} = L_{\gamma,0} \oplus \hat{z}_ {00} \Delta $$
119119
120120接著這邊用了一個技巧: Let FreeXOR global $\Delta = \Delta_A$, 此處 $\Delta_A$ 是 generator $P_A$ 的 global authentication key.
121121
122- $$ = L_{\gamma,0} \oplus \^z_ {00} \Delta_A $$
122+ $$ = L_{\gamma,0} \oplus \hat{z}_ {00} \Delta_A $$
123123
124- 為了不讓 generator 知道 $\^ z $, 把它拆開成 $\^ z = r + s$.
124+ 為了不讓 generator 知道 $\hat{z} $, 把它拆開成 $\hat{z} = r + s$.
125125
126126$$
127127\begin{split}
140140\end{split}
141141$$
142142左邊給 generator, 右邊給 evaluator.<br >
143- 當 generator 把左邊送給 evaluator 時, evaluator 就可以還原出 $L_ {\gamma,\^ z _ {00}}$.
143+ 當 generator 把左邊送給 evaluator 時, evaluator 就可以還原出 $L_ {\gamma,\hat{z} _ {00}}$.
144144
145145在 offline protocol (functionality $F_ {Pre}$) 的幫助下, parties 可以得到這些 shares / keys / MACs, 進而算出 "authenticated" garbled table.
146146
0 commit comments