Skip to content

Theshold BBS+

Threshold BBS+ Signatures for Distributed Anonymous Credential Issuance

BBS+方案流程

1. KeyGen

  • 假设要签名的数量为
  • 随机选择 +1 个元素 G1,构成向量 H=(H1,H2,,H+1)
  • 随机选择 x$Zp,计算 X=xG2G2
  • 公钥 pk(H,X), 私钥 skx

2. Sign

  • 给定消息向量 m=(m1,m2,,m)
  • 产生随机数 e,s$Zp
  • 计算 A:=(x+e)1(G1+sH1+i=1miHi+1)
  • 输出签名:σ(A,e,s)

3. Verify

  • 给定消息向量 m=(m1,m2,,m) 和签名 σ(A,e,s)
  • 验证等式是否成立:
e(A,X+eG2)=?e(G1+sH1+i=1miHi+1,G2)

4. 正确性验证

LHS=e(A,X+eG2)=e((x+e)1(G1+sH1+i=1miHi+1),xG2+eG2)=e(G1+sH1+i=1miHi+1,G2)=RHS

5. 门限设置下的 BBS+

只需通过秘密分享把 x 分成 n 份,任意 t 份可以重构出 x 即可,签名时运用 MPC 计算出 (x+e)1 即可。

6. 选择性披露 (Selective Disclosure)

BBS+ 可以支持选择性披露,既用户可以选择性地向验证者披露部分消息内容,同时保持其他消息的隐私。

BBS+ 的安全性假设q-Strong Diffie-Hellman

  • 给定 (G1,xG1,x2G1,,xqG1), 计算出 (c,1x+cG1) 是不可行的,其中 c$Zp

选择性披露

可以把 BBS+ 签名视为对以下“承诺”的签名:

C=G1+sH1+i=1miHi+1=(x+e)A

用户知道 (A,e,s,m),希望向验证者证明:

  • 存在某个 e,s,m ,使得上述等式成立;
  • 其中某些信息 mi 被隐藏,如 m1=namem2=age,用户只想披露 age 给验证者。

我们的目标是构建一个 证明,对于知道 (A,e,s,m) 的用户,披露 (e,s,mreveal) , 使得以下条件成立:

  • (x+e)A=G1+sH1+i=1miHi+1, 但是用户不知道 x,需要转换为如下形式
e(A,X+eG2)=e(G1+sH1+irevealmiHi+1+jhiddenmjHj+1,G2)
  • 这里可以用一个多底数离散对数知识的零知识证明实现,使用一个或者多个 Sigma 协议

  • 对于所有隐藏的 mi,满足某些条件,这里需要用范围证明如 Bulletproofs 来实现。

不可链接性

由于输出证明时每次都使用随机数 r$Zp,所以每次生成的证明都是不可链接的。