Suppose for $sk = x$, $pk = g^x$ we encrypt message $m$ with ElGamal encryption as $(g^r,m\cdot pk^r)$. My goal is to prove that I performed the encryption correctly, i.e. that the same $r$ is used across $g^r$ and $m\cdot pk^r$.
I thought of a simple $\Sigma$-protocol to show this as follows:
- Prover samples $q_1,q_2$, computes $R_1 = q_1\cdot pk^{q_2}$ and $R_2 = g^{q_2}$ and sends $R_1, R_2$ to Verifier.
- Verifier sends random challenge $e$ to prover.
- Prover computes $z_1 = q_1 \cdot m^e$ and $z_2 = q_2 + e\cdot r$. Sends $z_1$ and $z_2$ to verifier.
- Verifier checks if $R_1 \cdot (m \cdot pk^r)^e= z_1 \cdot pk^{z_2}$ and $R_2 \cdot (g^r)^e = g^{z_2}$
By pen and paper the math checks out but I'm not sure if I miss something? (this question is a follow-up on an older related question of mine: Proof of correctness of an ElGamal encryption given a specific public key). For example, is there a chance that $z_1$ in practice could leak information about the message $m$?