EUF-CMA security of the Fiat-Shamir Σ-protocol transform #
End-to-end security reduction, packaged as three theorems:
euf_cma_to_nma: CMA-to-NMA via HVZK simulation. The reduction wraps the source CMA adversary so the final verification challenge is part of the forkable transcript, absorbing the signing-query loss intoqS · ζ_zk + qS · (qS + qH) · β. The wrapped adversary issuesqH + 1random-oracle queries (source'sqHplus the appended verifier-point query), but the bound is stated withFork.advantageat fork slot parameterqH: the framework'sFin (qH + 1)indexing inFork.forkPoint qHprovides exactly the right number of slots for the wrapped adversary.euf_nma_bound: NMA-to-extraction viaFork.replayForkingBoundand special soundness, producing a reduction tohardRelationExp.euf_cma_bound: the combined bound, instantiatingeuf_cma_to_nmaintoeuf_nma_bound. The replay-forking denominator isqH + 1.
CMA-to-NMA reduction via HVZK simulation and managed random-oracle programming.
For any EUF-CMA adversary A making at most qS signing-oracle queries and qH
random-oracle queries, there exists a managed-RO NMA adversary B such that:
Adv^{EUF-CMA}(A) ≤ Adv^{fork-NMA}_{qH}(B) + ofReal (qS · ζ_zk) + qS · (qS + qH) · β
where β is the simulator's commit-predictability bound and the right-hand
fork advantage is Fork.advantage σ hr M B qH at slot parameter qH. The
wrapped adversary B issues qH + 1 random-oracle queries (the source's qH
plus an appended verifier-point query); the framework's Fin (qH + 1)
indexing in Fork.forkPoint qH provides the matching qH + 1 forkable slots.
This step is independent of special soundness and the forking lemma.
NMA-to-extraction via the forking lemma and special soundness.
For any managed-RO NMA adversary B and any fork slot parameter qH, there
exists a witness-extraction reduction such that:
Adv^{fork-NMA}_{qH}(B) · (Adv^{fork-NMA}_{qH}(B) / (qH + 1) - 1/|Ω|) ≤ Pr[extraction succeeds]
Here Adv^{fork-NMA}_{qH}(B) is Fork.advantage: it counts exactly the
managed-RO executions whose forgery already verifies from challenge values
present in the adversary's managed cache or in the live hash-query log recorded
by Fork.runTrace. The parameter qH is the fork slot parameter (the size of
the Fin (qH + 1) candidate-position set), not a separate query bound on B.
Combined EUF-CMA bound (Pointcheval-Stern with quantitative HVZK, β-parametric).
Composes euf_cma_to_nma and euf_nma_bound:
- Replace the signing oracle with the HVZK simulator and route the final
verification challenge through the live RO via the verify-wrapped NMA
adversary. This loses
qS·ζ_zk + qS·(qS+qH)·β. The wrapped adversary issuesqH + 1random-oracle queries; the bound is taken at fork slot parameterqH, which exposes exactlyqH + 1slots inFork.forkPoint qH : Option (Fin (qH + 1)). - Apply the forking lemma to the resulting forkable managed-RO NMA experiment.
The replay-fork denominator is
qH + 1.
The combined bound is:
(ε - qS·ζ_zk - qS·(qS+qH)·β) · ((ε - qS·ζ_zk - qS·(qS+qH)·β) / (qH + 1) - 1/|Ω|) ≤ Pr[extraction succeeds]
where ε = Adv^{EUF-CMA}(A). The ENNReal subtraction truncates at zero, so the
bound is trivially satisfied when the simulation loss exceeds the advantage.