Problem: Outsourcing ZK proof generation to an untrusted server

I have a secret witness , and I need to generate a SNARK proof that . Suppose I want to generate this proof on my phone, but I don’t have enough resources to do it. Therefore, I want to have the proof be generated by an untrusted server, but I want to keep my witness secret. How can we do this?

We know a few ways to solve this already:

Method 1: Collaborative proofs (https://eprint.iacr.org/2021/1530) (also GGJPS‘23, CLMZ‘23) – The prover splits the secret witness into several secret shares, and sends each share to a different server. This is secure against malicious servers, unless all servers collaborate.

But what if the servers cheat and collaborate?

Method 2: Using FHE (this is a classic way to offload work to an untrusted server) – Client generates FHE keys, encrypts the witness and sends it to the server. The server runs the proof-generation algorithm inside FHE, which is not very practical.


Notes: