To prove the validity of the signature, we must see that the tuple (R,s) actually came from the private key x. In particular that s was derived as s=r+cx. Obviously, we should not possess the private key x (which is the reason why we need this verification equation) so
- Looking at gs = RXc, we realize that we know (R,s), X and c (since c = H(X,R,m) and the public key X is known). As the generator g is also known, we can actually compute both sides of the equation.
- Since s=r+cx, we know that gs = gr+cx
- Since we do these calculations in a cyclic group of prime order we can apply the following rules: ga + b = gagb and gab = (ga)b (As far as I understand, this is the reason why the group needs to be cyclic and of prime order.)
- Thus, gs = gr+cx = grgcx
- Recalling R = gr and entering it into the equation from 4. we get gs = Rgcx
- Recalling the other rule from 3. we have gs = Rgcx = R(gx)c = RXc
This is exactly the equation that was supposed to be shown.
Note the interesting fact that as mentioned in 1. all data needed to verify the equation is known but producing the data can only work if x and r are known. That is why the owner of x can produce the signature and others can verify it.