## Secure Two-Party Computation Is Practical

Benny Pinkas, Thomas Schneider, Nigel P. Smart, Stephen C. Williams
ASIACRYPT 2009 [pdf] [bibtex]

In a circuit garbling scheme that uses the point-permute optimization, each wire {$i$} is associated with two wire labels {$W_i^0, W_i^1$} and a permute bit {$\pi_i$} so that {$W_i^{\pi_i}$} encodes "false" and {$W_i^{1 \oplus \pi_i}$} encodes true. The evaluator will eventually hold exactly one of these wire labels, {$W_i^{b_i}$} for some public select bit {$b_i$}.

This paper describes a method for row-reduction method, resulting in garbled gates of {$\sim 2k$} bits, where {$k$} is the security parameter. The classical Yao garbling approach requires {$4k$} bits, and prior optimization methods required {$3k$}.

The method works for any gate, but we give a sketch of the approach for an AND gate, where the permute bits are all zero. Let the gate have input wires {$i,j$} and output wire {$k$}, and {$W_i^0$}, {$W_j^0$}, {$W_k^0$} encode false on their respective wires. Very roughly, instead of choosing the output wire labels {$W_k^0, W_k^1$} randomly, we choose both of them implicitly as follows.

For {$a,b \in \{0,1\}$} define {$V_{a,b} = H(W_i^a, W_j^b)$}, where {$H$} is a random oracle or suitable KDF. Intuitively, an evaulator should be able to learn only one of the four {$V_{a,b}$} values, corresponding to the case that she knows {$W_i^a$} and {$W_j^b$}. The challenge is to arrange so that {$V_{0,0}$}, {$V_{0,1}$}, or {$V_{1,0}$} allow the evaluator to learn the "false" output wire label {$W_k^0$}, while {$V_{1,1}$} allows the evaluator to learn the "true" output wire label {$W_k^1$}.

Define {$P$} to be the unique degree-2 polynomial passing through points {$(1, V_{0,0}), (2, V_{0,1}), (3,V_{1,0})$}. Set {$W_k^0 := P(0)$}.

Then define {$Q$} to be the degree-2 polynomial passing through points {$(4,V_{1,1}), (5,P(5)), (6,P(6))$}. Set {$W_k^1 := Q(0)$}.

Now, the garbled circuit can simply contain the values {$P(5), P(6)$}. To evaluate, the evaluator holds {$W_i^a$} and {$W_j^b$}, and computes the degree-2 polynomial passing through {$(2a+b+1, H(W_i^a, W_j^b)), (5,P(5)), (6,P(6))$}. The polynomial will be either {$P$} or {$Q$} defined above, depending on the logical output of the AND-gate. The evaluator evaluates the polynomial on 0 to obtain the output wire label.

This method is incompatible with the Free XOR technique of KS08, since it sets both output wire labels {$W_k^0, W_k^1$} implicitly and unpredictably. Free XOR requires that each wire satisfy {$W_k^0 \oplus W_k^1 = \Delta$} for some global {$\Delta$}, which is unlikely to hold when choosing wire labels according to this method.