Documentation

CatCryptCore.Crypto.Assumptions.qSDH

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:

Main definitions #

Cross-Validation #

PropertyThis filePaper
ChallengeqSDH_challenge x q = (g, g^x, ..., g^{x^q})BB04 Def. 3
Verificationh^{x+c} = gBB04 Def. 3
GroupqSDH_Group (abstract cyclic group)Type-III pairing G₁

Relationship to t-SDH (Assumptions/tSDH.lean):

Equivalent formalizations:

References #

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

  • smul : self.Scalarself.Gself.G

    Scalar multiplication (exponentiation): g^a

  • scalarAdd : self.Scalarself.Scalarself.Scalar

    Scalar addition

  • scalarMul : self.Scalarself.Scalarself.Scalar

    Scalar multiplication

  • scalarInv : self.Scalarself.Scalar

    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

  • finG : Fintype self.G

    Group is finite

  • neG : Nonempty self.G

    Group is nonempty

  • finScalar : Fintype self.Scalar

    Scalar is finite (for uniform sampling)

  • neScalar : Nonempty self.Scalar

    Scalar is nonempty

Instances For

    Iterated scalar multiplication: compute x^i in the scalar field.

    Equations
    Instances For
      def CatCrypt.Crypto.Assumptions.qSDH_challenge (QG : qSDH_Group) (x : QG.Scalar) (q : ) :
      Fin (q + 1)QG.G

      The q-SDH challenge: (g, g^x, g^{x²}, ..., g^{x^q}).

      Given secret x, compute the tuple of q+1 group elements.

      Equations
      Instances For

        q-SDH Game #

        @[reducible, inline]

        Type of q-SDH adversary: receives the challenge tuple, outputs (c, h) where h should equal g^{1/(x+c)}.

        Equations
        Instances For

          The q-SDH game.

          1. Sample secret x ← Zₚ
          2. Compute challenge (g, g^x, ..., g^{x^q})
          3. Adversary outputs (c, h)
          4. 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.

            Equations
            Instances For

              IsPure #

              theorem CatCrypt.Crypto.Assumptions.qSDH_Game_isPure (QG : qSDH_Group) (q : ) (A : qSDH_Adversary QG q) (hA : ∀ (ch : Fin (q + 1)QG.G), (A ch).IsPure) :
              (qSDH_Game QG q A).IsPure