KZG
KZG (Kate, Zaverucha, Goldberg) is a pairing-based polynomial commitment scheme with trusted setup.
Intuition
Bilinear maps effectively convey the power of multiplicative-homomorphism, but only for one multiplication operation. To be more concrete, let us think of a group element as a commitment to (if is chosen at random, the commitment is computationally hiding if the discrete logarithm problem is hard in , meaning it is hard to determine from ). Then bilinear maps allow any party, given commitments to check whether the values inside the commitments satisfy . This is because by bilinearity of the map , if and only if .
It turns out that the power to perform a single “multiplication check” of committed values is enough to obtain a polynomial commitment scheme. This is because for any univariate polynomial , the assertion is equivalent to the assertion that there exists a polynomial of degree at most such that
This equation can be probabilistically verified by evaluating the two polynomials on the left hand side and right hand side at a randomly chosen point . This entire approach assumes that the committer does not know , since if it did, it could choose the polynomial so that the equation does not hold as an equality of polynomials, but does hold at .
Protocol Description
Setup
Let be a bilinear map pairing groups , of prime order , and be a generator, and be an upper bound on the degree of the polynomials we would like to support commitments to. Let be two random nonzero field elements. Then SRS (structured reference string) consists of the pairs:
Note that neither nor are included in the SRS — they are “toxic waste” that must be discarded after the SRS is generated, as any party that knows these quantities can break extractability or binding of the polynomial commitment scheme.
Commit
To commit to a polynomial over , the committer sends a value
Note that while the committer does not know , it is still able to compute using the first elements in pairs in the SRS and additive homomorphism:
which can be computed given the values for all even without knowing . The commiter can compute in a similar manner, using second elements in pairs in the SRS, without knowing the value of .
Evaluatuion
To open a commitment at to some value , the committer computes the polynomial and sends a value claimed to equal . The verifier checks:
This scheme is binding and extractable. You can find security analysis in the subsection 15.2 of "Proofs, Arguments, and Zero-Knowledge". If we omit the "alpha part" (second elements in the SRS, second element of commitment, second verification check), this scheme will be binding to some function but it doesn’t establish that the function the prover is bound to is a polynomial.
Complexity
Setup time:
Commit time:
Commit size:
Evaluation proof time:
Evaluation proof size:
Verify time:
Extension of KZG to Multilinear Polynomials
TBD
Original Paper
https://www.iacr.org/archive/asiacrypt2010/6477178/6477178.pdf
Last updated