QR ⇒ NIZK proofs with a common random string (Blum–De Santis–Micali–Persiano)
Statement
If QR is hard for Blum integers, every language in has a NIZK proof system with a uniformly random reference string: soundness is statistical, and zero knowledge is computational — BFM88, BDMP91. Soundness against provers that choose the statement after seeing the string follows from soundness for each fixed statement: repeating the proof on independent segments of the string drives the error for a fixed below , a union bound over the statements of length leaves error at most , and single-theorem zero knowledge survives the repetition by a hybrid argument — standard.
Sketch
The prover samples a Blum integer , whose factorization it knows, and some , and proves unconditionally, in NIZK, that has exactly two distinct prime divisors and that is a quadratic non-residue — BDMP91. It reads the rest of the string as elements , each carrying the hidden bit , which it opens with a square root of or of ; these bits drive a proof for satisfiability. The simulator takes instead, so that it can open every element either way, and QR hides the substitution.