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 :)