CMA-to-NMA reduction for Fiat-Shamir on Σ-protocols #
This file contains the managed-RO NMA adversary construction used by the stateful Fiat-Shamir theorem chain and the public Sigma security theorem.
The construction is the standard "simulated CMA" adversary: run the CMA adversary's main computation, replace signing queries with simulator transcripts, program the managed random-oracle cache on each simulated signature, and return the final forgery together with that cache. The query bound below shows that live NMA random-oracle queries are exactly the source adversary's live hash queries; simulator-programmed signing queries are absorbed into the managed cache.
The quantitative CMA-to-NMA theorem itself lives in
Sigma/Stateful/Chain.lean, so the public proof path has a single stateful
source of truth.
Simulator handler components #
Instances For
Instances For
Instances For
Instances For
Instances For
Instances For
Instances For
Instances For
CMA-to-NMA reduction at the managed-RO interface.
Builds a managedRoNmaAdv from a CMA adversary adv and an HVZK
simulator simTranscript: runs adv.main pk under a handler that
forwards live RO queries (with cache side-effects), handles signing
queries by sampling from simTranscript and programming the cache,
and returns the final cache together with the forgery.
This is the concrete-interface reduction entering the replay-forking lemma.
Instances For
Hash-query bound for simulatedNmaAdv: if the CMA adversary makes at most
qS signing-oracle queries and qH random-oracle queries, the NMA reduction
makes at most qH live hash queries. The qS signing queries are absorbed
into the managed cache rather than issued live.