# Multi-party computation with only 1 party?

MPC is $$f(E_1(a), E_2(b)) = c$$, where $$E$$ is encryption by different keys $$k_1$$ and $$k_2$$.

Homomorphic encryption is $$f(E_1(a)) = E_1(c)$$, where the input and output are encrypted.

I want $$f(E_1(a)) = c$$, because I'm going to use $$c$$ but can't see $$a$$.

One user will give me private inputs, I'll run a computation and get the results in plaintext. It seems to fall between MPC and FHE. Is there a technique that can do this?

• Why can't the party who owns a just compute c themselves and send it to you so you can compute on it? – mikeazo Dec 18 '19 at 16:06
• 2PC (two party computation) will solve your problem. One of the parties does not have to have inputs to the computation and the result will be in plaintext. The other option is functional encryption. – mikeazo Dec 18 '19 at 16:16
• The function 'f' is a large and proprietary function. The user can't run this function. Also, it would be too large for functional encryption. But MPC where 1 player is a no-op seems ok. – projectshave Dec 18 '19 at 16:46
• The fact that $f$ is a proprietary function is important here. How can the owner of $a$ be sure that the function $f$ doesn't leak $a$? If I own $a$ and you can calculate anything on it without me knowing what that thing is, then you could just choose $f$ to be the identity function. – mikeazo Dec 18 '19 at 17:52
• For example, input is customer's financial history, output is a credit score. MPC has the risk you stated. With FHE, the customer can decrypt and inspect the answer, then reveal it to the company. However, how can the company know it's the real answer? If customer reveals key, company can decrypt the input. You might need FHE w/ verifiable computing! The customer decrypts the result and proof, then sends back to company. – projectshave Dec 20 '19 at 16:13