Documentation

Complexity.Crypto.Protocols.SigmaProtocol.SchnorrIdentification

Schnorr identification #

Schnorr's identification scheme ([BS23], Section 19.1) is Schnorr's Sigma protocol with the key generator that draws α uniformly from ZMod q and publishes u = α • g. The one-way game for this key generator is the discrete-logarithm experiment for g: the adversary wins when it outputs some α' with α' • g = u. When g generates a group of prime order q, this α' is the sampled α.

The two theorems here are the exact forms of Boneh and Shoup's Theorems 19.1 and 19.5 at a fixed group. They make no efficiency or hardness claim; the discrete-logarithm assumption and the asymptotic security statement need a group family with efficient operations. As for the identification experiments they instantiate, the group and challenge types are in Type.

Main definitions #

Main results #

References #

noncomputable def Cslib.Crypto.Protocols.SigmaProtocol.schnorrKeyGen {q : ℕ} [NeZero q] {G : Type} [AddCommGroup G] [Module (ZMod q) G] (g : G) :
PMF (ZMod q × G)

Schnorr key generation ([BS23], Section 19.1): a uniform secret α and the verification key α • g.

Instances For
    theorem Cslib.Crypto.Protocols.SigmaProtocol.mem_support_schnorrKeyGen {q : ℕ} [NeZero q] {G : Type} [AddCommGroup G] [Module (ZMod q) G] {g : G} {key : ZMod q × G} (h : key ∈ (schnorrKeyGen g).support) :
    key.1 • g = key.2

    Every Schnorr key pair is in Schnorr's relation.

    Schnorr identification against direct attacks ([BS23], Theorem 19.1, exact form): an impersonator's success probability is at most 1 / N + √ε', where ε' is the probability that rewinding it computes a discrete logarithm of the key and N is the number of challenges.

    Schnorr identification against eavesdropping ([BS23], Theorem 19.5, exact form): an eavesdropper succeeds with exactly the probability of the direct impersonator that simulates its Q conversations.