There are three principals Prover Peggy, Verifier Victor, and Trusted Third Party Trent. We setup as follows:

  • Trent chooses two large prime numbers and to calculate .
  • is announced to the public, whereas and are kept secret.
  • Peggy chooses a secret number between and , and calculates . She keeps as her private key and registers as her public key with the third party.

Victor knows but does not know . Peggy wants to convince Victor that she knows the secret but Victor should not learn .

We believe that square root modulo is not easy to compute.

Verification of Peggy by Victor proceeds in 4 steps (this is a round):

  1. Peggy chooses a random number between and . is called the commitment Peggy calculates the witness and sends it to Victor.
  2. Victor sends the challenge to Peggy, which is either or .
  3. Peggy calculates the response and sends it to Victor to show that she knows her private key modulo . She claims to be Peggy.
  4. Victor calculates and . If these values are congruent, then Peggy either knows the value of (honest) or she has calculated the value of is some either ways (dishonest) because in module arithmetic we have that: The verification is repeated several times with the value of equal to or at random. Peggy must pass the test in each round to be verified: if she fails one single round => we abort the process entirely.