Skip to content
Schnorr → Signatures
step 1/5

Reading — step 1 of 5

Read

~1 min readSigma Protocols

Schnorr → Signatures

A signature scheme is a sigma protocol with the message bound into the challenge:

Prover (signer, knows x; pubkey y = g^x)
  k ← random
  r = g^k
  c = hash(r || message || y)     # binds m
  z = k + c*x mod n

  Signature = (r, z) — or compactly (c, z).

Verifier:

c = hash(r || message || y)
g^z == r * y^c

This is essentially Schnorr signature. Properties:

  • Short (~64 bytes).
  • Linear: signatures aggregate (multi-signatures).
  • Provably secure under DLP + ROM.

Compare to ECDSA:

  • ECDSA: r = (kG).x, s = k^(-1)(hash + r*x). More complex algebra; nonce reuse fatal; doesn't aggregate.
  • Schnorr: cleaner, more aggregable, deterministic via RFC 6979-style derivation.

MuSig (multi-signature):

  • N signers each have x_i, y_i.
  • Aggregate pubkey Y = ∏ y_i^a_i (where a_i = hash of all pubkeys).
  • Joint signature on message: each signer contributes; result is a single Schnorr signature on Y.
  • Verifier sees: regular Schnorr signature on Y. Cannot tell it was joint.

This unlocks privacy + scalability for multisig wallets.

Schnorr in Bitcoin (BIP 340, 2021): Taproot upgrade. Schnorr signatures replace ECDSA as the recommended signature scheme. Aggregation reduces multisig overhead massively.

Ed25519: a Schnorr-like signature on Edwards curve 25519. Deterministic by spec, faster than ECDSA, no nonce concerns. Default for SSH (RSA replaced), Signal, libsodium.

Discussion

Ask a question, share an insight, or help someone who’s stuck.

Sign in to post a comment or reply.

Loading…