Samantha

Parameters known by Samantha:

Computes the public key $pk = (n, v)$:

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

Computes the signature $\sigma$ of the fingerprint $\mathcal{H}(m)$:

Step y/x

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

Hit enter to generate the parameters and use the left and right arrow keys to navigate.

Samantha chooses the two prime numbers $p$ and $q$ and computes $n = p \cdot q$.

She then computes the public verification exponent $v$ by randomly choosing a $3 \leq v \leq n-1$ until $\gcd(v, \phi(n)) = 1$ where $\phi(n) = (p - 1) \cdot (q - 1)$.

Samantha then sends her public key $pk = (n, v)$ to Victor.

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

Because Samantha know the value of $v$ and $\phi(n)$ she can easily compute the secret signing exponent $s$ with the extended Euclidean algorithm.

She then computes the signature of the fingerprint and sends the message $m$ and the signature $\sigma$ 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 get the same fingerprint as Samantha.

Victor verifies the signature $\sigma$ of the fingerprint $\mathcal{H}(m)$.

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

Victor

Parameters known by Victor:

Receives the public key $pk = (n, v)$

Receives the signature $\sigma$ and the message $m$

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

Verifies the signature of the fingerprint: