Quesstion:
Suppose Peggy claims to have a Turing Machine (TM) such that when the tape starts with I the machine will halt with tape O for one or more (I, O) pairs.
Peggy would like to prove to Victor that she know the TM, but would like to convince him via a Zero-Knowledge Proof (ZKP).
Is there an algorithm $\Pi$ that Peggy and Victor can run that will accomplish this? If so what is it?
Example:
Let's say that I write a function $f(x)$ in some programming language. Now I would like to prove to you that $\forall x f(x) = 2 x^2-x+5$ but I don't want to disclose any information about the source code. (I know that this is a silly example but you could imagine that $f(x)$ is a much more complicated function)
Ideas:
Maybe there is a way to convert this into another problem that we have a algorithm to proof in zero-knowledge
Clarifications:
Let's start with an application for an example.
Peggy is a student and Victor is a teacher. Victor assigns a homework in which Peggy is supposed to design a TM to compute some function, $f(x)$. Peggy designs a very elegant solution and no longer wants to disclose her TM to Victor. (Maybe Peggy is afraid that Victor will steal her idea) Instead she wants to convince him that she did the assignment via a ZKP so she can get credit.
Another example is proprietary software. A company wants to convince its users that their software does what the users expects it to so. One popular solution is currently to release the software (e.g. open-source), but this allows anyone to easily steal the software. An alternate could be to provide a ZKP that the software satisfies certain properties.
What information do Peggy and Victor have?
- Peggy and Victor know all the (I,O) pairs.
- Peggy knows some TM such that $\forall i \forall o ((i \in {\bf I} \wedge o \in {\bf O}) \rightarrow {\bf TM}(i) = o)$
- Algorithm $\Pi$ should ideally run in polynomial time of the runtime of the TM
- Ideally Victor should not learn the number of states of the TM or the number of steps needed to compute the function, but if there is an algorithm that works except for these properties that would still be great.
- Learning some upper bound of the number of states or runtime is fine though
- If needed Peggy and Victor have access to a Random Oracle