I need help with building a Sigma protocol (or any other efficient protocol for proving knowledge) of a committed message encrypted with Elgamal (regular Elgamal, not its exponent variation).
I have a public key $pk$ and secret key $sk$ such that $g^{sk} = pk$ and $g$ is a public generator of the group $G$. The committed message to be encrypted is $m_1$ and $g, pk, m_1 \in G$. (The reason $m_1$ is a group element because its a public key in my use-case)
So how can i first commit to message $m_1$, along some other information say $a$ and then later encrypt $m_1$ and prove that I have encrypted the same message that I earlier committed to. And can this commitment scheme be multi-message like Pedersen's (so commitment can be to $m_1, m_2, ... m_n, a$)?
The public key $pk$ is not of the verifier but of some 3rd party. The problem thus becomes of "verifiable encryption" but the verifiable encryption schemes I see in literature are encrypting field elements and not group elements.
I can't use pairings.
What I tried:
Lets say I commit to $m_1$ as $Com(m_1, a) = V = m_1 \cdot h^a$ where $V \in G, a \in Z_p$ and $h \in G$ is a public generator of the group. Elgamal encryption of $m_1$ is $E = (E_0, E_1) = (g^r, pk^r.m_1)$. Now $m_1 = V.h^{-a}$ substituting it in $E_1$ gives $E_1 = pk^r.V.h^{-a}$ which can be proven using folklore Sigma protocol.
But I don't think its correct a $V$ does not seem to be a valid commitment to $m_1$ (committer can change $a$ to get alternate $m_1'$)