Cut-and-Choose is a general strategy for achieving ZK, which works by having the prover cut the statement into multiple parts and then having the verifier choose one of those parts to reveal.

The "Cut-and-Choose" naming

The naming in inspired by the famous “fair cake-cutting protocol” in which one person cuts the cake, then the other person chooses which half to get.

Intuition

A Cut-and-Choose protocol generally follows these ideas:

Splitting the statement into parts

The prover splits the statement and witness into multiple parts , such that

  • Just seeing any one part’s witness does not reveal anything about the actual witness .
  • All parts together reveal the witness
    • If we don’t care about Proof of Knowledge, it’s sufficient to say that it’s difficult to reveal all parts if .

Info

The first property will enable Zero Knowledge: a protocol transcript will only contain a single . The second property will enable Proof of Knowledge: the extractor can get multiple through Rewinding.

The protocol

The protocol then works as follows.

  • The prover splits into .
  • The prover sends the split statements .
  • The verifier chooses a random index .
  • The prover reveals .
  • The verifier checks that
    • is a valid split of (details depend on the protocol)
    • is a valid witness for .

Notation

For , we often zero-base the names of the split so that the challenge is a bit and points to the part to open.

Challenge space

Because the challenge space is small for Cut-and-Choose protocols, the soundness error is large. Cut-and-Choose protocols generally have to be repeated multiple times in order to bring the soundness error down to acceptable levels.

Protocols that follow this idea

”Pure” Cut-and-Choose

  • Quadratic Residue Protocol
    • Splits ” is a square root of ” into (0) ” is a square root of ” and (1) ” is a square root of ” for a random .
    • Graph Isomorphism Protocol
      • Splits ” is an isomorphism between and ” into (0) ” is an isomorphism between and ” and (1) ” is an isomorphism between and ” for some random permutation .

Using commitments for the split

(sometimes called “Commit-and-Prove”)

Resources