I'm currently confused about the distinctions between two-party computation (2-PC), secure function evaluation, and private function evaluation. Additionally, I came across the term secure circuit evaluation, which has further added to my confusion. If these concepts are essentially the same, then why are they referred to by different names in various papers? I would greatly appreciate any assistance in clarifying this matter.
Though I'm unaware of formal definitions, this is my understanding of the terms:
two party computations: Two parties each with private input want to calculate something based on both inputs without revealing their input.
secure function evaluation: Least clear term. One of two: evaluate a function on private data or evaluate a secret function on data. There are also other uses of the term which are about execution environment, and about knowing what code is running in some possibly remote environment but from the context I reject those.
private function evaluation - one party has a private function and another has private data and we want to evaluate function on data.
Garbled circuit - This is a specific technique used to accomplish two party computation. https://en.m.wikipedia.org/wiki/Garbled_circuit