Σ-protocols (Sigma protocols) are a family of three-move interactive proofs of knowledge that let a prover convince a verifier that they know a secret witness satisfying some public relation (without revealing the witness itself).
They form the foundation of many zero-knowledge constructions such as Schnorr proofs, range proofs, and zkSNARK components.
At their core, all Σ-protocols follow a simple template:
Warm-up: Schnorr proof of knowledge (PoK) of a discrete log. The canonical Σ-protocol: prove knowledge of $x$ such that $X = g^x$.
OR-composition of Σ-protocols. The simulate-one / prove-one pattern: tie two branches with a single global challenge so you can’t fake both.
Three Σ-protocols over Pedersen commitments ($C = g^r h^m$):
Recall the classic Σ-protocol for proving knowledge of a discrete logarithm.
We work in a cyclic group $G = \langle g \rangle$ of order $q$. The public value is $X = g^{x}$, and the prover wishes to prove knowledge of $x$ without revealing it.
Prover (knows $x$)
Verifier Check $$ g^{s} \stackrel{?}{=} T \cdot X^{e}. $$ Accept if true.
Fiat–Shamir (Non-interactive) Set $e = H(g, X, T)$ for a hash function $H$. Then the transcript $(T, s)$ is a non-interactive proof of knowledge of $x$.
💡 Intuition: The prover blinds $x$ with randomness $k$. The verifier’s challenge $e$ forces the prover to “open” this commitment consistently, so only someone who knows $x$ can produce a valid response.
Before we move on to commitments, it’s useful to see how to combine two Σ-protocols into an OR-proof — one that proves knowledge of either of two secrets, without revealing which.
Public: $(g, q, y_1 = g^{x_1}, y_2 = g^{x_2})$
Commit phase (before global challenge $e$):
Real branch (#1): pick $k_1 \leftarrow \mathbb{Z}_q$; set $t_1 = g^{k_1}$.
Fake branch (#2): pick $e_2, s_2 \leftarrow \mathbb{Z}_q$ independently at random, then set $$ t_2 := g^{s_2} \, y_2^{e_2}. $$ This makes $(t_2, e_2, s_2)$ a valid-looking Schnorr transcript without needing $x_2$.
Send $(t_1, t_2)$.
Challenge: Verifier sends global $e \leftarrow \mathbb{Z}_q$. Split it as $e_1 = (e - e_2) \bmod q$.
Responses:
Verifier checks:
💡 Intuition: You “prove one and simulate one.” The fake branch looks valid because you chose $e_2, s_2$ to satisfy the equation synthetically. The real branch ties to your secret through $e_1 = e - e_2$. The global challenge ensures you can’t fake both simultaneously.
This pattern will be reused later to prove that a Pedersen commitment hides a bit $m \in {0,1}$.
Schnorr proofs handle a single secret exponent. Pedersen commitments extend this by hiding two unknowns $(r, m)$: $$ C = g^{r} h^{m}, $$ where $g, h$ are independent generators of the same group.
The same Σ-protocol logic applies — we just track two exponents.
💡 Intuition: The commitment $C$ binds two secrets: $r$ (randomness) ensures hiding, while $m$ ensures binding.
Goal: Prove knowledge of $(r, m)$ such that $C = g^{r} h^{m}$.
Prover (knows $r, m$):
Verifier: Check $$ g^{s_r} h^{s_m} \stackrel{?}{=} T \cdot C^{e}. $$
💡 Intuition: This is just a 2-dimensional Schnorr proof — you’re proving knowledge of two linked exponents.
Goal: Prove that $m = m^*$ without revealing $r$.
Since $$ C = g^{r} h^{m^} \iff C \cdot h^{-m^} = g^{r}, $$ this reduces to a simple Schnorr proof of knowledge of $r$.
Let $C' = C \cdot h^{-m^*} = g^{r}$.
Protocol:
💡 Intuition: Subtracting $m^*$ from the commitment removes the message, leaving a plain Schnorr proof of the randomness $r$.
We now combine two Σ-protocols into one OR-proof, showing that one of two statements holds without revealing which.
We want to prove that the committed message is a bit: $$ m \in {0,1}. $$ Equivalently, $C$ must satisfy either $$ C = g^{r} \quad \text{or} \quad C = g^{r} h. $$
That is:
Public: $(g, h, C)$ Prover: knows $r$ for one branch.
Protocol Sketch:
Simulate one branch: choose random $ e_{\text{fake}}, s_{\text{fake}} \leftarrow \mathbb{Z}_q $,
set
On the real branch, pick $k$, compute $T_{\text{real}} = g^{k}$.
Verifier:
💡 Intuition: You prove that your commitment opens to either 0 or 1. The real branch ties to your secret, the fake branch is simulated. The single global challenge glues both together securely.