Now, we have the last thing that we needed to complete the Garbled Circuit Protocol,
the way Bob obtains his inputs is using oblivious transfer.
That could be done at this stage to enable Bob to learn his inputs to the circuit.
Alice sends the garbled circuit along with her inputs and Bob can evaluate the circuit.
Then from the encrypted output wires, Bob can obtain the result of the circuit execution,
and he could share that with Alice or they could flip roles and do it again.
And then Alice would obtain the output.
We have one little step in this protocol that we haven't described yet,
which is how you actually obtain that output value.
The outputs for the garbled tables are all encrypted,
so at the end of the execution what Bob has is a list of encrypted wire labels.
He wants to turn that into semantic output. That's left as the question for the exam.
I should note that actually executing protocols like this, doing all these encryption is really expensive.
This works for any function, but it is very expensive.
It's a very active research area, how to do this faster.
This is one of the things my research group works on as well as a lots of other researchers
to try to find ways to provide properties like the one described here
but without as much computation effort as executing the protocol that I have just described.
