Discrete Logarithm Problem (DLP):
The security of Schnorr signatures relies on the difficulty of solving the discrete logarithm problem in a cyclic group. Given a group G with a generator g, and an element $y = g^x$ for some secret x, it is computationally hard to find x given g and y.
Cyclic Group:
Schnorr signatures operate in a cyclic group G of prime order q with a generator g. The group is typically a subgroup of the multiplicative group of integers modulo a large prime, or it could be an elliptic curve group.
Private Key (x): A randomly chosen integer from {0,1,…,q−1}.
Public Key (y): The public key is $y = g^x$, where g is the generator of the group.
Message (m): The data that is to be signed.
Hash Function (H): A cryptographic hash function, often modeled as a random oracle.
WHY it works?
To understand why the verification process in Schnorr signatures works, it helps to break down the steps and consider what each part of the signature and verification process ensures:
Commitment and Response:
Verification Equation:
The verification equation $g^s=R⋅y^c$ essentially checks that the prover knows the correct relationship between the public key $y=g^x$ and the challenge c without revealing the secret key x.
To break it down:
$g^s=g^{k+cx}=g^k⋅g^{cx}$
On the other hand,
$R \cdot y^c = g^k \cdot (g^x)^c = g^k \cdot g^{cx}$
If the prover computed s correctly, then both sides of the verification equation will match, ensuring that s is consistent with the knowledge of the secret key x and the original random value k.
Security through Binding:
The challenge c=H(R∥m) binds the commitment R to the message m. This binding ensures that the challenge c is unpredictable until R is determined. This unpredictability makes it infeasible for an attacker to forge a signature without knowing the secret key x.
c=H(R∥m)
Non-malleability: