Skip to content

Latest commit

 

History

History

schnorr_sigma_protocol

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Schnorr Sigma Protocol

Identification scheme used to prove that we talk to the good person.

Algorithm

Public parameters

Prime numbers: $p$ and $q$.

$p$ satisfies that $p\equiv 1 \text{ (mod } q)$

Generator: $g=g_1^{(p-1) / q} \text{(mod }p)$

Note

$g_1$ is a generator of the group $\mathbb{Z}^*_p$.

Initialization

Choose a private key: $1 \leq privKey \leq q-1$

Compute the public key: $g^{privKey}\text{ (mod }p)$

Send the public key.

First message

Choose a random value $r$: $1 \leq r \leq q-1$

Compute the first message: $g^r\text{ (mod }p)$

Send the first message.

Challenge

Choose a random $challenge$: $1\leq challenge \leq q-1$

Send the challenge.

Response

Compute the response: $response = r + challenge \cdot privKey \text{ (mod }q)$

Send the response.

Verification

Verify the identity by checking that $g^{response}\text{ (mod }p) = firstMessage \cdot pubKey^{challenge}\text{ (mod }p)$

Resource