# 22.5 Signatures

# 22.5.1 BLS Signatures

Alice wants to sign a document $m\text{.}$ In earlier chapters, we have seen how to do this with RSA and ElGamal signatures. The BLS method, due to Boneh, Lynn, and Schacham, uses pairings.

We use a supersingular elliptic curve ${E}_{0}$ and point ${P}_{0}\text{,}\text{}$ as in Section 22.1. To set up the signature scheme, we’ll need a public hash function $H$ that maps arbitrary length binary strings to multiples of ${P}_{0}\text{.}$ A little care is needed in defining $H\text{,}\text{}$ since no one should be able, given a binary string $b\text{,}\text{}$ to find $k$ with $H(b)=k{P}_{0}\text{.}$ See Exercise 7.

To set up the system, Alice chooses, once and for all, a secret integer $a$ and computes ${K}_{\text{Alice}}=a{P}_{0}\text{,}\text{}$ which is made public.

Alice’s signature for the message $m$ is $S=aH(m)\text{,}\text{}$ which is a point on $E\text{.}$

To verify that $(m\text{,}\text{}S)$ is a valid signed message, Bob checks

If this equation holds, Bob says that the signature is valid.

If Alice signs correctly,

so the verification equation holds.

Suppose Eve wants to forge Alice’s signature on a document $m\text{.}$ The values of $H(m)\text{,}\text{}{K}_{\text{Alice}}\text{,}\text{}$ and ${P}_{0}$ are then already determined, so the verification equation says that Eve needs to find $S$ satisfying $\tilde{e}(S\text{,}\text{}{P}_{0})=$ a known quantity. Assumption (A) is Section 22.1 says that (we hope) this is computationally infeasible.

# 22.5.2 A Variation

The BLS signature scheme uses a hash function whose values are points on an elliptic curve. This might seem less natural than using a standard hash function with values that are binary strings (that is, numbers). The following method of Zhang, Safavi-Naini, and Susilo remedies this situation. Let $H$ be a standard hash function such as SHA-3 or SHA-256 that maps binary strings of arbitrary length to binary strings of fixed length. Regard the output of $H$ as an integer. Alice’s key is the same as in BLS, namely, ${K}_{\text{Alice}}=a{P}_{0}\text{.}$ But the signature is computed as

where $(H(m)+a{)}^{-1}$ is the modular multiplicative inverse of $(H(m)+a)$ mod $q$ (where $q$ is the order of ${P}_{0}\text{,}\text{}$ as in Section 22.1).

The verification equation for the signed message $(m\text{,}\text{}S)$ is

Since $H(m){P}_{0}+{K}_{\text{Alice}}=(H(m)+a){P}_{0}\text{,}\text{}$ the left side of the verification equation equals the right side when Alice signs correctly. Again, assumption (A) from Section 22.1 says that it should be hard for Eve to forge Alice’s signature.

# 22.5.3 Identity-Based Signatures

When Alice uses one of the above methods or uses RSA or ElGamal signatures to sign a document, and Bob wants to verify the signature, he looks up Alice’s key on a web-page, for example, and uses it in the verification process. This means he must trust the web-page to be correct, not a fake one made by Eve. It would be preferable to use something closely associated with Alice such as her email address as the public key. This is of course the same problem that was solved in the previous section for encyprytion, and similar techniques work in the present situation.

The following method of Hess gives an identity-based signature scheme.

We use a supersingular elliptic curve $E$ and point ${P}_{0}$ as in Section 22.1. We need two public hash functions:

${H}_{1}$ maps arbitrary length binary strings to multiples of ${P}_{0}\text{.}$ A little care is needed in defining ${H}_{1}\text{,}\text{}$ since no one should be able, given a binary string $b\text{,}\text{}$ to find $k$ with ${H}_{1}(b)=k{P}_{0}\text{.}$ See Exercise 7.

${H}_{2}$ maps binary strings of arbitrary length to binary strings of fixed length; for example, ${H}_{2}$ can be a standard hash function such as SHA-3 or SHA-256.

To set up the system, we need a Trusted Authority. Let’s call him Arthur. Arthur does the following.

He chooses, once and for all, a secret integer $s\text{.}$ He computes ${P}_{1}=s{P}_{0}\text{,}\text{}$ which is made public.

For each User, Arthur finds the user’s identification

*ID*(written as a binary string) and computes$${D}_{\text{User}}=s\text{\hspace{0.17em}}{H}_{1}(ID)\text{.}$$Recall that ${H}_{1}(ID)$ is a point on $E\text{,}\text{}$ so ${D}_{\text{User}}$ is $s$ times this point.

Arthur uses a secure channel to send ${D}_{\text{User}}$ to the user, who keeps it secret. Arthur does not need to store ${D}_{\text{User}}\text{,}\text{}$ so he discards it.

The system is now ready to operate, but first let’s review what is known:

Public: $E\text{,}\text{}p\text{,}\text{}{P}_{0}\text{,}\text{}{P}_{1}\text{,}\text{}{H}_{1}\text{,}\text{}{H}_{2}$

Secret: $s$ (known only to Arthur), ${D}_{\text{User}}$ (one for each User; it is known only by that User)

To sign $m\text{,}\text{}$ Alice does the following.

She chooses a random point $P\ne \infty $ on $E\text{.}$

She computes $r=\tilde{e}(P\text{,}\text{}{P}_{0})\text{.}$

She computes $h={H}_{2}(m||r)\text{.}$

She computes $U=h{D}_{\text{Alice}}+P\text{.}$

The signed message is $(m\text{,}\text{}U\text{,}\text{}h)\text{.}$

If Bob receives a triple $(m\text{,}\text{}U\text{,}\text{}h)\text{,}\text{}$ where $U$ is a point on $E$ and $h$ is a binary string, then he does the following.

He computes ${v}_{1}=\tilde{e}({H}_{1}(I{D}_{\text{Alice}})\text{,}\text{}\text{\hspace{0.17em}}{P}_{1}{)}^{-h}\text{,}\text{}$ which is a $q$th root of unity.

He computes ${v}_{2}={v}_{1}\cdot \tilde{e}(U\text{,}\text{}{P}_{0})\text{.}$

If $h={H}_{2}(m||{v}_{2})\text{,}\text{}$ then Bob says the signature is valid.

Let’s suppose Alice signed correctly. Then, writing ${H}_{1}$ for ${H}_{1}(I{D}_{\text{Alice}})\text{,}\text{}$ we have

Also,

Therefore,

so the signature is declared valid.

Suppose Eve has a document $m$ and she wants to forge Alice’s signature so that $(m\text{,}\text{}U\text{,}\text{}h)$ is a valid signature. She cannot choose $h$ arbitrarily since Bob is going to compute ${v}_{2}$ and see whether $h={H}_{2}(m||{v}_{2})\text{.}$ Therefore, if ${H}_{2}$ is a good hash function, Eve’s best strategy is to choose a value ${v}_{2}^{{}^{\prime}}$ and compute $h=H(m||{v}_{2}^{{}^{\prime}})\text{.}$ Since ${H}_{2}$ is collision resistant and ${H}_{2}(m||{v}_{2}^{{}^{\prime}})=h={H}_{2}(m||{v}_{2})\text{,}\text{}$ this ${{v}_{2}}^{\prime}$ should equal ${v}_{2}={v}_{1}\cdot \tilde{e}(U\text{,}\text{}{P}_{0})\text{.}$ But ${v}_{1}$ is completely determined by Alice’s ID and $h\text{.}$ This means that in order to satisfy the verification equation, Eve must find $U$ such that $\tilde{e}(U\text{,}\text{}{P}_{0})$ equals a given quantity. Assumption (A) says this should be hard to do.