Schnorr Identification
Schnorr Identification scheme.
This protocol is executed between the Student Alice (you) and Mentor Bob. Both parties are honest and want to prove to each other their identity so both of them are in the role of Prover and Verifier. Prover must prove that he/she knows his Pivate Key do not revealing this key to the Verifier and using only his/her Public Key.
Parameter values sent by Alice are included in brackets [ ] and must be entered in the corresponding input fields.
The following functions are used in the protocol:
>> genstrongprime(bl)
>> mod_exp(g,x,p)
>> randi(z)
- Generate strong prime number p of 28 bits length using Octave function >> genstrongprime(28) and find a generator g of multiplicative group Zp*={1,2,3, … p-1}.
Send Public Parameters PP = [p, g] to the Mentor.
- Ok, generate at random private key PrK=x in the interval 1<x<p-1 and compute Public Key PuKA=a=gx mod p. Send [a] to the Mentor to check if your public key is included in his data base previuosly.
- Mentor believes you are Alice and honest Prover but nevertheless he wish you to prove that. You must to prove, that you are the owner of (unknown to anybody) your PrK=x corresponding to your PuKA=a (you have just sent to the Mentor) using Schnorr identification protocol.
Please generate your commitment u=gk mod p and send [u] to the Mentor.
- Ok, Mentor sends you a challenge h=….. . Generate your response r=k+xh and send [r] to the Mentor.
- Ok, Mentor highly appreciates your honesty and wants to demonstrate his honesty as well. He sends you commitment v=….. . Compute your challenge [l] of 26 bit length and send it to the Mentor.
- Ok, Mentor sends you his public key PuKb=b and a response t=….. . Please compute verification values V1=gt mod p and V2= vbl mod p and send [V1, V2] to the Mentor.