Verification
August 25, 20264 min readbeginner
Verification is short, and the algebra proving it correct is the counterpart to ML-KEM's cancellation. It is worth following line by line for the same reason.
Verification is short, and the algebra proving it correct is the counterpart to ML-KEM's cancellation. It is worth following line by line for the same reason.
01.The algorithm
Inputs: , the message , and .
V1. Regenerate from , recompute and .
V2. Recover the challenge polynomial .
V3. Reconstruct the commitment's high bits:
V4. Accept if all three hold:
The first is the Fiat-Shamir check: recompute the challenge from the reconstructed commitment and see whether it matches the one in the signature. The other two enforce the bounds the signer's rejection loop was supposed to guarantee, so a forger cannot simply ignore them.
02.Why it works
Expand what V3 actually computes. Substitute :
Now use the two facts from key generation. Truncation gave , and the sample gave . Substituting both:
The terms cancel, exactly as did in the KEM. That cancellation is again the whole construction.
What the verifier holds is therefore
where is what it wants and the other two terms are perturbations it cannot compute.
Now the rejection checks earn their place.
The signer's second check ensured stays at least away from a bucket boundary, which means . The term is invisible to rounding.
The signer's third check ensured , so the remaining term can move a coefficient by at most one bucket, never further.
And the hint records exactly which coefficients it did move. So corrects them, and
Therefore , and the first check passes. The other two hold because the signer enforced them before emitting.
03.What the verifier never learns
Worth noting what has just happened, because it is the point of the whole construction.
The verifier reconstructed , a value derived from the signer's secret randomness , without ever being sent or . It did so using only public data and the signature.
And it learned nothing about . The only secret-derived value it saw is , which Rejection Sampling, or Fiat-Shamir With Aborts made uniform on a fixed box independent of the secret. Everything else it computed itself.
That is a proof of knowledge in exactly the sense of Schnorr and Fiat-Shamir: convincing evidence that the signer holds , conveying no information about what is.
04.Why verification is the cheap direction
One matrix-vector product , one small product , some rounding, and two hashes. No loop, no restarts, no rejection.
So verification costs roughly one signing attempt, and signing costs four to six of them. The asymmetry runs the opposite way to ML-KEM, where decapsulation was the expensive operation.
That asymmetry is the right way round for how signatures are used. A software update is signed once by the vendor and verified by every machine that installs it. A certificate is signed once by an authority and verified on every connection to that site. Verification happens millions of times more often than signing, and it is the fast one.