| author | Samee Zahur, Mike Rosulek, and David Evans | 
| title | Two Halves Make a Whole: Reducing Data Transfer in Garbled Circuits using Half Gates | 
| howpublished | EuroCrypt 2015 | 
| year | 2015 | 
| month | April | 
| where | University of Virginia & Oregon State University | 
The goal of this paper is to reduce the amount of material that must be transmitted from the Generator to the Evaluator in Yao’s Garbled Circuits. It builds on a fair bit of pre existing work. As is often the case, the assumption is that only XOR and AND gates are used. (In other contexts NOT would also be included; they don’t mention Not here; probably it’s not important.)
XOR(hash,_).A half gate is just an AND gate for which one party (either, so long as we know who in advance) knows the plain-text of one of the inputs. 
If the knowing party is the Generator, then constructing the GC half-gate is just intelligently constructing a unary gate: either const or id. 
If the knowing party is the Evaluator, then the construction is more complicated.
In both cases, simple row reduction works fine, so the unary gate requires only a single unit of material.
The key identity involves introducing a new value r, with random secret value chosen by the Generator.
c = a AND b = a AND (FALSE XOR b) = a AND ((r XOR r) XOR b) = (a AND r) XOR (a AND (r XOR b))
Obviously the first half (a AND r) is a Generator half-gate. Since the Evaluator never learns r, it’s safe to share (r XOR b) with them; the Evaluator embeds the respective such values with the wire labels. Thus (a AND (r XOR b)) is an Evaluator half-gate. (In practice, the point-n-permute pointer does double-duty as (r XOR b).)
Since the combining XOR is free, that makes up a whole AND gate that consumes only two units of material and is consistent with free XOR.
This is a relatively big idea.