Note:
I wasn’t aware when quickly writing this up, but it turns out that this is an application of the Guillou-Quisquater protocol.
Maurer’s 2009 paper provides a generalization of schnorr signatures to a large class of situations. Essentially, any time you have a group homomorphism , you can provide a zero-knowledge protocol to prove:
(with kept secret).
In the case of a cyclic group of prime order , with generator , and the following homomorphism:
We have the usual Schnorr sigma protocol, which leads to Schnorr signatures after a Fiat-Shamir transform.
RSA
We can use the following group homomorphism, inspired by RSA:
Here, is an RSA public key.
Now, this is evidently a group homomorphism, since:
Furthermore, this homomorphism is one way, provided we don’t know the factorization of , and we think RSA is hard.
The Signature Protocol
For the memes, let’s explicitly describe the signature scheme.
Key-Generation
Generate random primes of half the desired modulus size. Let , and pick such that .
Pick a random , and then set .
is the private key.
is the public key.
Signing
Note:
What type should have? Well, one approach is to take it such that is coprime with , so that we’ll have extractability. Basically, given and , you can learn . We also need to be large enough to have our security parameter, i.e. or so.
Verification
Security
Trust me :)