Alice chooses a large prime and a random integer Let be a primitive root . The public key is The private key is Let be a hash function To send a message with , Alice randomly chooses with coprime to She computes with and satisfying:

Since is coprime to , we can always find . Alice signs the message with Now:

so Bob accepts a signature if Any obvious attempt at forging involves the discrete log

Lemma

Let and consider . This has either no solutions or solutions for

Corollary

Alice HAS TO choose different each time. Suppose she sends and using the same with signatures and Then:

Hence:

By the previous Lemma, we can find solutions for and then choose such that Then

This gives so we can find solutions for Choose the solution that gives . Now we found Alice’s private key and we are able to sign msgs.