Concrete Example of AND Gate Using Garbled Circuit Most of the resources online like the wiki presents the beautiful idea of Garbled circuit in a rather unnecessarily abstract manner. This is the screenshot of Wiki's protocol: 


What would be an example of step 2? How does Alice garbles the circuit? Using any public-key crypto or private? Could anyone please give me a concrete example of any gate, say AND using this primitive? Like, at the bitstring level. For example, let's say Alice has bit $0$, Bob has bit $1$. They would like to compute the AND. Thanks!
The main conceptual idea behind garbling is to "label" Boolean values on wires in the circuit with keys of a (symmetric key) encryption scheme.
Computations are then done in terms of these labels, instead of the underlying Boolean values. Throughout the rest of this, I will use $\mathsf{in}_0, \mathsf{in}_1, \mathsf{out}$ to denote the two input wires of the AND gate, and the (single) output wire.
If we view these as directly taking Boolean values, these satisfy the equation:

$$\mathsf{in}_0\land \mathsf{in}_1 = \mathsf{out}$$
In particular, given $\mathsf{in}_0, \mathsf{in}_1$, we can compute $\mathsf{out}$ using this formula.

One way to make this computation "private" would be if instead of directly having $\mathsf{in}_i$ and $\mathsf{out}$ take Boolean values, we "obfuscate" things somewhat.
Generate the keys $k_{\mathsf{in}_0, 0}, k_{\mathsf{in}_0, 1}, k_{\mathsf{in}_1, 0}, k_{\mathsf{in}_1, 1}, k_{\mathsf{out}, 0}, k_{\mathsf{out}, 1}$.
Note that there are precisely 6 keys --- for each of the (three) wires in the circuit, we generate a key for each of the possible values the wire can take.

Now if someone gives me two keys $k_{\mathsf{in}_0, i}, k_{\mathsf{in}_1, j}$, I don't know what the "values" underlying the keys $i$ and $j$ are.
But I also don't know how to compute the AND of the keys, meaning I can't yet compute $k_{\mathsf{out}, i\land j}$.
If I could somehow (without learning the values $i$ and $j$ directly) we'd be done.

Garbling allows us to do this by computing the four ciphertexts $C_{i, j} = \mathsf{Enc}_{k_{\mathsf{in}_0, i}}(\mathsf{Enc}_{k_{\mathsf{in}_1, j}}(k_{\mathsf{out}, i\land j}))$.
If we know both keys $k_{\mathsf{in}_0, i}$ and $k_{\mathsf{in}_1, j}$, we can decrypt the ciphertext $C_{i, j}$ to learn $k_{\mathsf{out}, i\land j}$.
But if I don't know those keys, by the security of the underling encryption scheme I cannot decrypt $C_{i, j}$, keeping "the rest" of the possible computations "private".

So Alice's job (in the garbling step) is to generate all of the above information:


Two keys for each wire in the circuit.
$2k$ ciphertexts for each $k$-arity gate in the circuit.


This process is called "garbling" the circuit.