BLS Threshold Signature

Table of Contents

1. 简介

本文将介绍 BLS 门限签名,它比 ECDSA 门限签名要简单很多。

1.1. 标准的 BLS 签名

BLS 签名利用了 Pairing,记私钥为整数 k ,则公钥为 P=kG (这里 G 是曲线 G1 的 Generator);对消息 m ,将其映射到曲线 G2 上的一个点,记为 H(m)消息 m 的签名数据为 S=kH(m) 显然,公钥 P 是曲线 G1 上的点,而签名数据 S 则是另一曲线 G2 上的点。

要验证签名时,验证 e(P,H)=e(G,S) 是否成立即可(这里的 e 就是 Pairing 运算)。证明如下: e(P,H)=e(kG,H)=e(G,H)k=e(G,kH)=e(G,S)

1.2. Lagrange 插值

在介绍 BLS 门限签名前,先介绍一下 Lagrange 插值,这是后面介绍的 BLS 门限签名的基础。

已知 t1 次曲线 f(x) 上的 t 个点 (x1,y1),(x2,y2),,(xt,yt) ,则这个 t1 次曲线可由下式确定 f(x)=(xx2)(xx3)(xxt)(x1x2)(x1x3)(x1xt)y1+(xx1)(xx3)(xxt)(x2x1)(x2x3)(x2xt)y2++(xx1)(xx2)(xxt1)(xtx1)(xtx2)(xtxt1)yt

对于 x=0 的特殊情况,从上式可得零点函数值为 f(0)=i=1t(j=1,jitxjxjxi)yi

2. BLS 门限签名

设共有 n 个参与者,下面将介绍一个门限为 t 的 BLS 签名方案,即生成群体签名时至少需要 t 个参与者配合(小于 t 个参与者不能生成群体签名)。

这里关注的重点是签名方案,不关心它的 DKG 方案。假设采用 Shamir's Secret Sharing 方案,Trusted Dealer 把群体私钥 k 做为某个 t1 次多项式 x=0 时的值 f(0) ,这个多项式中取 n 个点 (x1,k1),,(xn,kn) ,分别发送给 n 个参与者。

任何 t 个参与者,利用 (x1,k1),,(xt,kt) 可以恢复出完整私钥 k=i=1t(j=1,jitxjxjxi)ki

BLS 门限签名的思路: 每个参与者把 ki 作为 BLS 私钥生成签名 Si=kiH(m) ,发送给其它的参与者;每个参与者收集到其它人发来的签名后,进行签名校验,一旦收集到 t 个通过校验的合法签名后,把这 t 个签名 Si 通过 Lagrange 插值计算出对应的零点函数值,把它记为 SS 就是群体签名。

下面验证一下 S 确实是群体私钥 k 对应的签名 Si=1t(j=1,jitxjxjxi)Si=i=1t(j=1,jitxjxjxi)(kiH(m))=(i=1t(j=1,jitxjxjxi)ki)H(m)=kH(m)

3. 参考

Author: cig01

Created: <2023-07-22 Sat>

Last updated: <2023-07-30 Sun>

Creator: Emacs 27.1 (Org mode 9.4)