q-Strong Diffie-Hellman (q-SDH) Assumption #
The q-SDH assumption is the core hardness assumption for BBS/BBS+ signatures and anonymous credentials. It generalizes the strong DH assumption to a setting where the adversary receives multiple powers of a secret exponent.
q-SDH Game #
Given a group of prime order p with generator g:
- The challenger samples a secret
x ← Zₚ - The adversary receives
(g, g^x, g^{x²}, ..., g^{x^q}) - The adversary must output
(c, g^{1/(x+c)})for somec ∈ Zₚ \ {-x}
Main definitions #
qSDH_Group— abstract group supporting q-SDHqSDH_Game— the q-SDH gameqSDH_Advantage— advantage of an adversary
Cross-Validation #
| Property | This file | Paper |
|---|---|---|
| Challenge | qSDH_challenge x q = (g, g^x, ..., g^{x^q}) | BB04 Def. 3 |
| Verification | h^{x+c} = g | BB04 Def. 3 |
| Group | qSDH_Group (abstract cyclic group) | Type-III pairing G₁ |
Relationship to t-SDH (Assumptions/tSDH.lean):
tSDHusesPairingGroupwith bilinear pairing verificationqSDHuses an abstract group with exponentiation-based verification- Both capture the same hardness assumption in different algebraic settings
Equivalent formalizations:
- EasyCrypt:
SDHtheory (Tessaro-Zhu BBS formalization)
References #
- [Boneh, Boyen. Short Signatures Without Random Oracles. EUROCRYPT 2004, Def. 3]
- [Tessaro, Zhu. Revisiting BBS Signatures. EUROCRYPT 2023]
q-SDH Group Definition #
Abstract group supporting the q-SDH assumption.
This captures a cyclic group of prime order where exponentiation and the q-SDH challenge are well-defined.
For BBS signatures, this is a Type-III pairing group, but we abstract over the pairing structure since q-SDH only needs the G₁ component.
- G : Type
Group element type
- Scalar : Type
Scalar/exponent type (≅ Zₚ)
- gen : self.G
Generator
Scalar multiplication (exponentiation):
g^aScalar addition
Scalar multiplication
Scalar inverse (for
1/(x+c))- scalarZero : self.Scalar
Zero scalar
- scalarOne : self.Scalar
One scalar (multiplicative identity, for
x^0 = 1) - decG : DecidableEq self.G
Decidable equality on G
- decScalar : DecidableEq self.Scalar
Decidable equality on Scalar
Group is finite
Group is nonempty
Scalar is finite (for uniform sampling)
Scalar is nonempty
Instances For
Iterated scalar multiplication: compute x^i in the scalar field.
Equations
- CatCrypt.Crypto.Assumptions.scalarPow QG x 0 = QG.scalarOne
- CatCrypt.Crypto.Assumptions.scalarPow QG x n.succ = QG.scalarMul x (CatCrypt.Crypto.Assumptions.scalarPow QG x n)
Instances For
The q-SDH challenge: (g, g^x, g^{x²}, ..., g^{x^q}).
Given secret x, compute the tuple of q+1 group elements.
Equations
- CatCrypt.Crypto.Assumptions.qSDH_challenge QG x q i = QG.smul (CatCrypt.Crypto.Assumptions.scalarPow QG x ↑i) QG.gen
Instances For
q-SDH Game #
Type of q-SDH adversary: receives the challenge tuple,
outputs (c, h) where h should equal g^{1/(x+c)}.
Equations
- CatCrypt.Crypto.Assumptions.qSDH_Adversary QG q = ((Fin (q + 1) → QG.G) → CatCrypt.Core.SPComp (QG.Scalar × QG.G))
Instances For
The q-SDH game.
- Sample secret
x ← Zₚ - Compute challenge
(g, g^x, ..., g^{x^q}) - Adversary outputs
(c, h) - Verify:
h = g^{1/(x+c)}, i.e.,h^{x+c} = g
We verify by checking smul (scalarAdd x c) h = gen.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Advantage of adversary A in breaking the q-SDH assumption.