Samantha

Parameters known by Samantha:

Computes the generator \( g \):

Computes the fingerprint \( \mathcal{H}(m) \) of the message:

Computes the public verification key \( v \) and sends it to Victor:

Chooses a unique ephemeral key \( e \) for this signature:

Computes the signature of the fingerprint and sends it to Victor:

Step y/x

Enter the message (or integer) that Samantha wants to sign:

Press Enter to generate the parameters. Use the left and right arrow keys to navigate between steps.

A trusted third party chooses two prime numbers, \( q \) and \( p \), and a generator \( g_{1} \) of the group \( \mathbb{Z}_{p} \).

The generator \( g_{1} \) is used to compute another generator \( g \) of order \( q \) from the group \( \mathbb{Z}_{p}^{*} \).

Samantha and Victor receive the two prime numbers \( p \) and \( q \), and the generator \( g \).

Samantha computes the fingerprint \( \mathcal{H}(m) \) of the message \( m \) using a publicly known hash function \( \mathcal{H} \).

Samantha chooses a secret signing exponent \( s \) and computes the public verification exponent \( v \), which she sends to Victor.

For the signature, Samantha needs an ephemeral key \( e \) that is unique for this signature.

Samantha computes the signature of the fingerprint \( \mathcal{H}(m) \), which consists of two parts: \( \sigma_{1} \) and \( \sigma_{2} \). In the computation, she uses the concatenation operation \( \| \).

She then sends the message \( m \) and the signature \( (\sigma_{1}, \sigma_{2}) \) to Victor.

Victor uses the same hash function \( \mathcal{H} \) as Samantha to compute the fingerprint \( \mathcal{H}(m) \) of the message \( m \).

If nobody has tampered with the content of the message, Victor gets the same fingerprint as Samantha.

Victor verifies the signature of the fingerprint \( \mathcal{H}(m) \), using the concatenation operation \( \| \).

If the two computed values are equal, the message was signed by Samantha and nobody has tampered with the content of the message.

Victor

Parameters known by Victor:

Receives the public parameters.

Receives the public verification key \( v \).

Receives the message and the signature.

Computes the fingerprint \( \mathcal{H}(m) \):

Verifies the signature of the fingerprint: