Applied Cryptography, Second Edition: Protocols, Algorthms, and Source Code in C (cloth)
(Publisher: John Wiley & Sons, Inc.)
Author(s): Bruce Schneier
ISBN: 0471128457
Publication Date: 01/01/96

Previous Table of Contents Next

Like the previous protocol, a group of signers use a shared public large prime, p, and a primitive element, g. Alice has a unique private key, x, and a public key, gx mod p. To sign a message, Alice computes z =mx mod p.

To verify a signature:

(1)  Bob chooses two random numbers, a and b, both less than p, and sends Alice:
c = magb mod p
(2)  Alice chooses a random number, q, less than p, and computes and sends to Bob:
s1 = cgq mod p, s2 = (cgq)x mod p
(3)  Bob sends Alice a and b, so that Alice can confirm that Bob did not cheat in step (1).
(4)  Alice sends Bob q, so that Bob can use mx and reconstruct s1 and s2. If then the signature is valid.
s1cgq (mod p)
s2 ≡ (gx)b +qza (mod p)

Alice can also disavow a signature, z, for a message, m. See [329] for details.

Additional protocols for undeniable signatures can be found in [584,344]. Lein Harn and Shoubao Yang proposed a group undeniable signature scheme [700].

Convertible Undeniable Signatures

An algorithm for a convertible undeniable signature, which can be verified, disavowed, and also converted to a conventional digital signature is given in [213]. It’s based on the ElGamal digital signature algorithm.

Like ElGamal, first choose two primes, p and q, such that q divides p -1. Now you have to create a number, g, less than q. First choose a random number, h, between 2 and p -1. Calculate

g = h( p-1)/q mod p

If g equals the 1, choose another random h. If it doesn’t, stick with the g you have.

The private keys are two different random numbers, x and z, both less than q. The public keys are p, q, g, y, and u, where

y = gx mod p
u = gz mod p

To compute the convertible undeniable signature of message m (which is actually the hash of a message), first choose a random number, t, between 1 and q -1. Then compute

T = gt mod p


m' = Ttzm mod q.

Now, compute the standard ElGamal signature on m'. Choose a random number, R, such that R is less than and relatively prime to p -1. Then compute r =gR mod p, and use the extended Euclidean algorithm to compute s, such that

m'rx + Rs (mod q)

The signature is the ElGamal signature (r, s), and T.

Here’s how Alice verifies her signature to Bob:

(1)  Bob generates two random numbers, a and b. He computes c = TTmagb mod p and sends that to Alice.
(2)  Alice generates a random number, k, and computes h1 = cgk mod p, and h2 = h1 z mod p, and sends both of those numbers to Bob.
(3)  Bob sends Alice a and b.
(4)  Alice verifies that c = TTmagb mod p. She sends k to Bob.
(5)  Bob verifies that h1 = TTmagb+k mod p, and that h2 = yrarsaub+k mod p.

Alice can convert all of her undeniable signatures to normal signatures by publishing z. Now, anyone can verify her signature without her help.

Undeniable signature schemes can be combined with secret-sharing schemes to create distributed convertible undeniable signatures [1235]. Someone can sign a message, then distribute the ability to confirm that the signature is valid. He might, for example, require three out of five people to participate in the protocol in order to convince Bob that the signature is valid. Improvements on this notion deleted the requirement for a trusted dealer [700,1369].

23.5 Designated Confirmer Signatures

Here’s how Alice can sign a message and Bob can verify it, such that Carol can verify Alice’s signature at some later time to Dave (see Section 4.4) [333].

First, a large prime, p, and a primitive element, g, are made public and used by a group of users. The product of two primes, n, is also public. Carol has a private key, z, and a public key is h =gx mod p.

In this protocol Alice can sign m such that Bob is convinced that the signature is valid,but cannot convince a third party.

(1)  Alice chooses a random x and computes
a = gx mod p
b = hx mod p

She computes the hash of m, H(m), and the hash of a and b concatenated, H(a,b). She then computes
j = (H(m) ⊕ H(a, b))1/3 mod n

and sends a, b, and j to Bob.
(2)  Bob chooses two random numbers, s and t, both less than p, and sends Alice
c = gsht mod p
(3)  Alice chooses a random q less than p, and sends Bob
d = gq mod p
e = (cd)x mod p
(4)  Bob sends Alice s and t.
(5)  Alice confirms that
gshtc (mod p)

Then she sends Bob q.
(6)  Bob confirms
dgq (mod p)
e/aqasbt (mod p)
H(m) ⊕ H(a, b) ≡ j1/3 mod n

If they all check out, he accepts the signature as genuine.

Bob cannot use a transcript of this proof to convince Dave that the signature is genuine, but Dave can conduct a protocol with Alice’s designated confirmer, Carol. Here’s how Carol convinces Dave that a and bconstitute a valid signature.

(1)  Dave chooses a random u and v, both less than p, and sends Carol
k = guav mod p
(2)  Carol chooses a random w, less than p, and sends Dave
l = gw mod p
y = (kl)z mod p
(3)  Dave sends Carol u and v.
(4)  Carol confirms that
guavk (mod p)

Then she sends Dave w.
(5)  Dave confirms that
gwl (mod p)
y/hwhubv (mod p)

If they both check out, he accepts the signature as genuine.

In another protocol Carol can convert the designated-confirmer protocol into a conventional digital signature. See [333] for details.

Previous Table of Contents Next
[an error occurred while processing this directive]