Fiat-Shamir Transform: Non-Interactive Schnorr Signatures
Watch the Fiat-Shamir heuristic turn the interactive Schnorr identification protocol into a real non-interactive digital signature: a hash function stands in for the verifier's random challenge, computed live over genuine modular arithmetic in the browser.
The Schnorr identification protocol is interactive: a verifier must be online to send a random challenge. The Fiat–Shamir heuristic removes that requirement by replacing the verifier's random challenge with a cryptographic hash of the prover's commitment and the message being signed, turning a live proof into a standalone digital signature. This simulator runs the real construction — genuine modular exponentiation with BigInt and a genuine SHA-256 hash via the browser's Web Crypto API — and renders the resulting group elements as points on a 3D modular-arithmetic ring. Sign a message to place its commitment on the ring, then verify it: the independently recomputed left- and right-hand sides of the Schnorr equation land on the same angle only when the signature is valid, and tampering with even one character of the message — which changes the hash-derived challenge — visibly snaps the two points apart.
Watch the Fiat-Shamir heuristic turn the interactive Schnorr identification protocol into a real non-interactive digital signature, hashing the commitment and message with SHA-256 in place of a live verifier's challenge.
3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install