Algebraic Group Model (AGM) #
This file formalizes the Algebraic Group Model, where adversaries must provide algebraic representations of all group elements they output.
Main definitions #
AGMRepr— a group element of G₁ paired with a claimed exponent vectorAGMRepr.Valid— the representation equation against a given basisAGMRepr.ofCoeffs— the element computed from a basis and an exponent vectorAGMAdversary— an adversary that receives the SRS and outputs representations
Main results #
AGMRepr.ofCoeffs_valid— the computed element satisfies the equationAGMRepr.element_eq_of_valid_srs₁— against the KZG SRS, a valid representation isg₁ ^ᵍ φ(α)for the extracted polynomialφ
Overview #
In the AGM, any group element output by the adversary must be accompanied by
a vector of exponents showing how it was computed from the input group elements.
For KZG, the input is the SRS [g₁, g₁^α, ..., g₁^(αᵗ)], and the output
commitment C comes with [c₀, ..., cₜ]. A representation is valid for the SRS
srs when C = ∏ srs[i]^cᵢ. Validity is relative to the SRS the game supplies:
the game checks it and counts an invalid representation as a loss for the
adversary (Fuchsbauer–Kiltz–Loss, Definition 2.1).
A valid representation means the adversary "knows" a polynomial
φ(X) = ∑ cᵢ Xⁱ such that C = g₁^(φ(α)), enabling knowledge extraction.
References #
- [Fuchsbauer, Kiltz, Loss, The Algebraic Group Model and its Applications, CRYPTO 2018]
- [Rothmann, Kreuzer — Algebraic_Group_Model.thy in Isabelle]
- [ArkLib — AGM/Basic.lean]
AGM Representation #
A group element of G₁ together with a claimed algebraic representation
with respect to a basis of size t + 1: a vector of exponents
[c₀, ..., cₜ] in ZMod p. Whether the exponents represent the element
depends on the basis and is the proposition AGMRepr.Valid.
- coeffs : Fin (t + 1) → ZMod PairingGroup.p
The exponent vector
- element : PairingGroup.G₁
The represented group element
Instances For
The representation equation against the basis pk:
element = ∏ᵢ pk[i]^coeffs[i].
Equations
- CatCrypt.Crypto.AGMRepr.Valid P t repr pk = (repr.element = ∏ i : Fin (t + 1), CatCrypt.Crypto.PairingGroup.zpowZMod₁ (pk i) (repr.coeffs i))
Instances For
Equations
- CatCrypt.Crypto.AGMRepr.instDecidableValid P t repr pk = CatCrypt.Crypto.AGMRepr.instDecidableValid._aux_1 P t repr pk
The representation whose element is computed from the basis pk and the
exponent vector coeffs.
Equations
- CatCrypt.Crypto.AGMRepr.ofCoeffs P t pk coeffs = { coeffs := coeffs, element := ∏ i : Fin (t + 1), CatCrypt.Crypto.PairingGroup.zpowZMod₁ (pk i) (coeffs i) }
Instances For
A representation computed from a basis is valid for that basis.
Extract the polynomial from an AGM representation.
The polynomial is φ(X) = ∑ᵢ cᵢ · Xⁱ where cᵢ are the coefficients.
Equations
- CatCrypt.Crypto.AGMRepr.toPoly P t repr = ∑ i : Fin (t + 1), Polynomial.C (repr.coeffs i) * Polynomial.X ^ ↑i
Instances For
Extracted Polynomial Properties #
The extracted polynomial has degree at most t.
The representation whose exponents are the first t + 1 coefficients of φ
extracts to φ when φ has degree at most t.
A representation valid for the KZG SRS srs₁ α t has element g₁ ^ᵍ φ(α),
where φ is the extracted polynomial.
AGM Adversary #
An AGM adversary for KZG.
In the AGM, the adversary receives the SRS and outputs a commitment C together with an algebraic representation of C in terms of the SRS, an evaluation point, a claimed value, and a witness with its representation. The game that runs the adversary checks the representations against the SRS it supplied.
- run : (Fin (t + 1) → PairingGroup.G₁) → Core.SPComp (AGMRepr P t × ZMod PairingGroup.p × ZMod PairingGroup.p × AGMRepr P t)
The adversary's computation: given the SRS, output
(C_repr, z, y, w_repr), the commitment representation, the evaluation point, the claimed value and the witness representation.