A Schnorr signature is a digital signature scheme based on discrete logarithms. It is considered the simplest such scheme to be provably secure in a random oracle model. It is efficient and generates short signatures. It is covered by US patent #4,995,082, which expires in 2008 [1].
Choosing parameters
Key generation
- Choose a private key x such that 0 < x < p
- The public key is y where y = gx
Signing
To sign a message M:
- Choose a random k such that 0 < k < p
- Let r = gk
- Let e = H(M | | r)
- Let
The signature is the pair (e,s). Note that
and
; if a Schnorr group is used and p < 2160, this means that the signature can fit into 40 bytes.
Verifying
- Let rv = gsye
- Let ev = H(M | | rv)
If ev = e then the signature is verified.
Public elements: G,g,p,y,s,e,r.
Private elements: k,x.
See also: Topics in cryptography
References
- Claus-Peter Schnorr, Efficient Signature Generation by Smart Cards, J. Cryptology 4(3), pp161–174 (1991) (PS).