BBS+ signatures

 

tl;dr: BBS+ is a transformation1 of the the Boneh-Boyen-Shacham (BBS) group signature scheme2 into a standalone signature scheme. This blog post describes BBS+ as well as a recent improvement over it dubbed standalone BBS3.

Why BBS+?

The BBS+ and standalone BBS schemes have some really nice properties:

  • Can sign a vector of field elements $(m_1,m_2,\ldots,m_\ell)\in \Zp$
    • The signing can be done blindly over a Pedersen vector commitment $C = h_0^r \prod_{i\in[\ell]} h_i^{m_i}$, where $r \randget \Zp$ is a uniformly-picked blinding factor.
    • This way, the signer gets the commitment $C$ to sign and never sees the messages $m_i$ themselves
      • TODO: show in a separate section
  • Does not rely on random oracles
  • It is as efficient to verify as BLS4 signatures: a size-2 multipairing

These properties makes BBS+ (and standalone BBS) very useful for building anonymous credential (AC) schemes. (In a future post, I hope to constrast BBS+ with other schmes like CL or Pointcheval-Sanders (PS).)

Preliminaries

  • There is a bilinear map $e : \Gr_1 \times \Gr_2 \rightarrow \Gr_T$, where $\Gr_1 = \langle g_1 \rangle, \Gr_2 = \langle g_2 \rangle$ and $\Gr_T$ are of prime order $p$
  • Let $\Zp = \{0,1,2,\ldots,p-1\}$ denote the finite field of order $p$.
  • A Pedersen commitment to a vector $(m_1,\ldots,m_\ell) \in \Zp^\ell$ is $C = h_0^r \prod_{i\in[\ell]} h_i^{m_i}$, where $r \randget \Zp$ is a uniformly-picked blinding factor and $(h_0,\ldots,h_\ell)$ are fixed generators in a group $\Gr$ of order $p$ whose pairwise discrete logs are unknown.

The BBS+ signature scheme

BBS+ is slightly less efficient than standalone BBS, so it should probably be dropped in favor of the latter.

$\mathsf{BBS+}$.$\mathsf{KeyGen}(1^\lambda, \ell) \rightarrow (\sk, \pk)$:

  • $\mathbf{h} \stackrel{\mathsf{def}}{=} (h_0, h_1 \ldots, h_{\ell}) \gets \Gr_1^{\ell+1}$
  • $x \randget \Zp$
  • $y \gets g_2^x$
  • $\sk \gets (x, \mathbf{h})$
  • $\pk \gets (y, \mathbf{h})$

$\mathsf{BBS+}$.$\mathsf{Sign}((m_1,\ldots,m_\ell), \sk) \rightarrow \sigma$:

  • $(x, \mathbf{h}) \gets \sk$
  • $(e, s)\randget \Zp^2$
  • $C \gets g_1 h_0^s \prod_{i\in[\ell]} h_i^{m_i}$
    • Note: This is a Pedersen-like commitment to the $m_i$’s. (Except it is not blinded, since the randomness $s$ is publicly-exposed as part of the signature.)
  • $\sigma \stackrel{\mathsf{def}}{=} (A, e, s) \gets (C^\frac{1}{x + e}, e, s)$

TODO: Does reusing randomness break anything?

$\mathsf{BBS+}$.$\mathsf{Verify}((m_1,\ldots,m_\ell), \pk, \sigma) \rightarrow \{0,1\}$:

  • $(y,\mathbf{h})\gets \pk$
  • $(A, e, s)\gets \sigma$
  • $C \gets g_1 h_0^s \prod_{i\in[\ell]} h_i^{m_i}$
  • assert $e(A, y \cdot g_2^e) \stackrel{?}{=} e(C, g_2)$

Correctness: It is easy to see why correctness holds (i.e., signatures produced by $\mathsf{BBS+}.\mathsf{Sign}$ pass verification in $\mathsf{BBS+}.\mathsf{Verify}$): \begin{align} e(A, y \cdot g_2^e) &\stackrel{?}{=} e(C, g_2)\\
e(C^\frac{1}{x + e}, g_2^x \cdot g_2^e) &\stackrel{?}{=} e(C, g_2)\\
e(C^\frac{1}{x + e}, g_2^{x + e}) &\stackrel{?}{=} e(C, g_2)\\
e(C, g_2) &\stackrel{?}{=} e(C, g_2) \end{align}

The standalone BBS signature scheme

BBS+ was a transformation of the BBS group signature scheme2 into a standalone signature scheme by Au et al.1. Unfortunately, this transformation increased the size of the signature from $(A, e)\in\Gr\times\Zp$ to $(A, e, s)\in\Gr\times\Zp^2$. The $s$ component had to be included only so that the security proof could pass. Recently, however, Tessaro and Zhu3 gave a security proof for BBS+ without an $s$-component, which they dubbed standalone BBS signatures.

I guess the alternative BBS++ name would have been worse? On the other hand “[standalone] BBS”3 stands to be confused with the BBS [group] signature scheme2.

Naming issues aside, Tessaro and Zhu’s standalone BBS (sBBS) scheme’s decription follows below. (It is denoted as $\mathsf{sBBS}$ to avoid confusing it with the $\mathsf{BBS}$ group signature scheme.)

$\mathsf{sBBS}$.$\mathsf{KeyGen}(1^\lambda, \ell) \rightarrow (\sk, \pk)$:

  • (This is almost the same as in BBS+, except only $\ell$ $h_i$’s are needed.)
  • $\mathbf{h} \stackrel{\mathsf{def}}{=} (h_1, \ldots, h_\ell) \gets \Gr_1^{\ell}$
  • $x \randget \Zp$
  • $y \gets g_2^x$
  • $\sk \gets (x, \mathbf{h})$
  • $\pk \gets (y, \mathbf{h})$

$\mathsf{sBBS}$.$\mathsf{Sign}((m_1,\ldots,m_\ell), \sk) \rightarrow \sigma$:

  • $(x, \mathbf{h}) \gets \sk$
  • $e\randget \Zp$
  • $C \gets g_1 \prod_{i\in[\ell]} h_i^{m_i}$
    • Note: This is a Pedersen-like commitment to the $m_i$’s. (Except it is not blinded.)
  • $\sigma \stackrel{\mathsf{def}}{=} (A, e) \gets (C^\frac{1}{x + e}, e)$

Signing is slightly faster than in BBS+ because there is no $h_0^s$

$\mathsf{sBBS}$.$\mathsf{Verify}((m_1,\ldots,m_\ell), \pk, \sigma) \rightarrow \{0,1\}$:

  • $(y,\mathbf{h})\gets \pk$
  • $(A, e)\gets \sigma$
  • $C \gets g_1 \prod_{i\in[\ell]} h_i^{m_i}$
  • assert $e(A, y \cdot g_2^e) \stackrel{?}{=} e(C, g_2)$

Unlike in BBS+, the requirement on picking $e$ is simpler: $e$ does not have to be picked uniformly at random. Instead, we only need to make sure $e$’s don’t collide. A simple way can be to simply treat $e$ as an always-increasing counter. Or, to derive it pseudo-randomly from the message (via hashing).

Conclusion

BBS+ (and/or standalone BBS) are versatile signature schemes (e.g., can sign [commitments to] field element(s) without random oracles, can verify as fast as BLS4, etc.).

However, like any signature scheme, they have their disadvantages:

  • Larger signatures for BBS+: 1 group element and 2 field elements.
    • Standalone BBS has smaller signatures: 1 group element and 1 field element.
  • They do not “thresholdize” very well: $t$-out-of-$n$ threshold protocols for BBS+ (and standalone BBS) either require offline preprocessing or multiple rounds of interaction between signers.
  • Signing requires randomness.
  • Signatures are not re-randomizable5. (It may be sufficient to expose $h_0^\frac{1}{x+e}$ next to each signature $(A,e)$ to allow for re-randomizability?)
$ $

  1. Constant-Size Dynamic $k$-TAA, by Man Ho Au and Willy Susilo and Yi Mu, in Cryptology ePrint Archive, Paper 2008/136, 2008, [URL]  2

  2. Short Group Signatures, by Boneh, Dan and Boyen, Xavier and Shacham, Hovav, in Advances in Cryptology – CRYPTO 2004, 2004  2 3

  3. Revisiting BBS Signatures, by Stefano Tessaro and Chenzhi Zhu, in Cryptology ePrint Archive, Paper 2023/275, 2023, [URL]  2 3

  4. Short Signatures from the Weil Pairing, by Boneh, Dan and Lynn, Ben and Shacham, Hovav, in Advances in Cryptology — ASIACRYPT 2001, 2001  2

  5. Short Randomizable Signatures, by Pointcheval, David and Sanders, Olivier, in CT-RSA 2016, 2016