**

**

€3.00

Tax included

Schnorr e-signature scheme.

This protocol is executed between the Student Alice (you) and Mentor Bob. Alice and Bob wants to congratulate each other with birthday. But they don’t know the dates. They want to send to each other these dates and to be sure of their validity to sign them using Schnorr signature.

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
of 28 bits length using Octave function >> genstrongprime(28) and find a generator*p*of multiplicative group*g*={1,2,3, …*Z*_{p}^{*}-1}.*p*

Send Public Parameters **PP **= [** p**,

- Ok, generate at random private key
**PrK**=in the interval 1*x***<**1 and compute public key*x*<*p*-**PuK**=_{A}*a**=*. Send [**g**^{x }mod p] to the Mentor to check if your public key is included in his data base previuosly.*a*

- Ok, look at your birth documents and create a message
consisting of date and approximately an hour of your birth*m*_{1}=YYYYMMDDhh. Choose*m*_{1}=randi(25) and compute*k*=*r*_{1}mod*g*^{k}. Using H-function H26 compute*p*=H26(*h*_{1}||*r*_{1}). Compute*m*_{1}=*s*_{1}-*k*mod (*xh*_{1}-1). Send message*p*and signature parameters [*m*_{1},*m*_{1},*r*_{1}] to the Mentor.*s*_{1}

- Ok, Mentor sends you message
=….. and his signature parameters (*m*=…..,*r*=…..) together with his public key*s***PuK**=_{A}=….. . Compute*b*=H26(*h*||*r*) and verify his signature by computing verification parameters*m*=*V*mod*g*^{s}a^{h}. To what signature’s parameter corresponds*p*? Send [*V*] to the Mentor.*V*

3028 Items