6

Is there any cryptographic method for Proof Of Computation ?
If i am running my program on untrusted hardware (remote server), after some time i want to verify the remote machine hasn't tampered with my program and successfully ran it for required time (and the result/output is correct), how can i verify ?
Is there any Zero knowledge proof for it?

Also i want to check if the remote server was active (online) for the certain time, this can be done by proof of computation ? (like the server need to keep running my custom program for certain time, and when i come back to check it will give me require mathematical proofs using which i can verify the server was active for that period of time)

fin
  • 61
  • 3

2 Answers2

3

Yes this is possible using methods such as zk-SNARKS and zk-STARKS. Vitalik Buterin has written a good series of blogs giving an overview of the ideas. The linked blog gives verifiable computation of Fibonacci recurrences as an example; the blog on PLONK gives a description of how to encode more general computations.

The ZoKrates toolkit gives a workable way to create proofs of computation using zk-SNARKS.

Daniel S
  • 29,316
  • 1
  • 33
  • 73
0

Instead of asking for a proof, you could use a slightly different approach. You could send a homomorphically encrypted payload and ask the server to homomorphically run it as agreed in advance. After the server has computed the answer, you get it back and you can decypher it.

If you don't want to verify the whole server solution yourself you can randomly insert some dummy fields into the payload (for instance some integers to be added) and quickly verify that the server is computing it correctly. The server never sees the plaintext, so it cannot cheat by performing a different computation, otherwise you would quickly find out by looking at the dummy payload results.

The limitation of this technique are pretty much the limitations of homomorphic encryption.

Rexcirus
  • 333
  • 3
  • 14