I am considering a "secure function evaluation" problem:
Consider two parties: A and B. A has a one-to-one mapping function $f(x)=k$. Basically, the function $f(x)$ can be regarded as a table of two columns. The first column is the domain of $x$ denoted as $D$. The second column is the range $K$. The party B has a secret input $x_i\in D$. B sends its input $x_i$ to A and A will return the corresponding $k_i$ to B.
The requirement is that A will learn nothing about the input $x_i$ and the output $k_i$. B will learn nothing about the function $f(x)$.
For the above problem, a possible solution is the 1-out-of-n oblivious transfer. However, when the size of the domain (or the table) is large. Using oblivious transfer will introduce both heavy computational and communication overhead.
Another possible solution I can think about is to model the function as a circuit. And then some techniques such as Garbled circuit may be utilized.
I think the above problem as been considered for a long time in the cryptography community. Any related works or thoughts on this problem will be helpful. Especially, is there an alternative of the 1-out-of n oblivious transfer to increase its efficiency?