How to write a Zero-Knowledge Proof of Knowledge of input to a one-way function?

cx flag

I'm having a bit of difficulty understanding how to construct Zero-Knowledge proofs. So given a one-way function $f$ and a secret message $x$ so that $f(x)=y$, $f$ and $y$ being public, how could one construct a simple Zero-Knowledge Proof of Knowledge algorithm proving that one knows $x$?

I think I understand how this could be done if the verifier also knows $x$, because then they should be able to send random bits to each other and both run them through $f$. For example: the prover generates a random message $r$ and shares it with the verifier, they both calculate $f(x+r)=y_r$, the prover generates a random number $n$ and asks if the $n$:th bit of $y_r$ is a one or a zero. And then repeat all of that until satisfied.

I have no idea, however, how one would start to construct a proof for a verifier without knowledge of $x$.

I sit in a Tesla and translated this thread with Ai:


Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.