Schnorr Threshold Signature (Stinson and Strobl's 2001 paper)

Table of Contents

1. 论文介绍

2001 年,D.R. Stinson and R.Strobl 在论文 Provably Secure Distributed Schnorr Signatures and a (t,n) Threshold Scheme for Implicit Certificates 中提出了一种 Schnorr 门限签名方案,本文将介绍它。

2. 基础知识

2.1. Schnorr 签名

下面介绍一下椭圆曲线上的 Schnorr 签名。

设椭圆曲线定义在有限素数域 Fp 上,椭圆曲线的 Generator 为 G ,用户的私钥和公钥分别为 (x,Y) ,记待签名的消息为 m ,则 Schnorr 签名过程如下:

  1. 随机选择 eZp
  2. 计算 V=eG
  3. 计算 σ=e+h(m,V)xmodp
  4. 输出签名 (V,σ)

签名验证时,如果 (V,σ) 满足下面等式则通过验证: σG=V+h(m,V)Y

2.2. Shamir's Secret Sharing

如何把秘密值 sZp 分散保管到 n 个参与者中,且至少需要其中 t 个参与者才能恢复出秘密值 s

Shamir 给出的方案是,由可信任的第 3 方(称为 Dealer)随机生成一个满足条件 f(0)=st1 次多项式,为第 i 个参与者分配的 Shared Key 为: si=f(i),1in

使用拉格朗日插值公式,由点 (1,s1),(2,s2),,(n,sn) 中任意的 t 个点(这 t 个点的横坐标组成的集合记为 P )可以重建出多项式 f(x)f(x)=iPsiwi(x),wherewi(x)=jP,jixjijmodp

由于 s=f(0) ,所以 s 还可以写为: s=iPsiwi,wherewi=wi(0)=jP,jijjimodp

2.3. Feldman's VSS

为了防止 Shamir 方案中的 Dealer 做恶(比如分配给参与者的 shared key 是随便给的,并不满足相关约束),Feldman 提出了另一种方案。

Dealer 随机选择多项式 f(x)=s+a1x+a2x2++atxt 这里 s 是秘密值, f(i) 通过加密通道分配给参与者 Pi

Dealer 同时公开下面信息(被称为 Commitment)

C0=sGC1=a1GCt=atG

每个参与者 Pi 验证自己收到的 f(i) 是否满足 f(i)G=C0+C1i+C2i2++Ctit 或者写为 siG=sG+j=1t1ajijG 如果满足则说明 Dealer 没有做恶。

3. 协议介绍

3.1. DKG

论文 Provably Secure Distributed Schnorr Signatures and a (t,n) Threshold Scheme for Implicit Certificates 中没有提出新的 Distributed Key Generation(DKG)协议,它直接使用了 1999 年 Rosario Gennaro, Stanislaw Jarecki, Hugo Krawczyk, and Tal Rabin 在论文 Secure Distributed Key Generation for Discrete-Log Based Cryptosystems 中提出的 DKG 协议,简称 GJKR99 协议,图 1 是 GJKR99 协议 的总结。

dkg_GJKR99.gif

Figure 1: GJKR99 DKG

这里简单交待一下记号 (s1,,sn)(t,n)(r|Y,aiG,H0),i{1,,t1} 的含义:秘密值 r 分散保存到 n 个参与者,每个人得到的 shared key 为 siH0 是诚实的参与者集合,每个参与者可以得到的公开信息有:公钥 Y 及 Feldman Commitment aiG ,其中 ai 就是多项式 f(x)=r+a1x++at1xt1 的各个系数,这个多项式满足 f(i)=si

3.2. 门限签名过程

介绍签名前,先要进行 DKG,假设采用节 3.1 所示的协议得到的 DKG 结果为: (α1,,αn)(t,n)(x|Y,biG,H0),i{1,,t1} 也就是说真正的私钥是 x ,公钥是 Y ,每个参与都得到的 shared key 为 (α1,,αn)

论文 Provably Secure Distributed Schnorr Signatures and a (t,n) Threshold Scheme for Implicit Certificates 中的门限签名协议如图 2 所示。

schnorr_threshold_signature_issue.gif

Figure 2: Signature Issuing Protocol

下面简单说明一下每个步骤。

第 1 步,采用 DKG 相同的协议(参见节 3.1)把随机数 e 分散到集合 H1 的所有参与者中,每个参与者得到的 Shared Key 是 βi

第 2 步,上一步的诚实参与者 PiH2 公布 γi=βi+h(m,V)αi 其中, V=eGαi 是 DKG 结束后每个参与者得到的 Shared Key。

第 3 步,每个 PiH2 验证下式是否成立 γkG=V+j=1t1cjkjG+h(m,V)(Y+j=1t1bjkjG)for allkH2 如果成立,则 Pk 就是这一步的诚实参与者。这个式子为什么应该成立呢?下面是推导过程:

γkG=(βk+h(m,V)αk)G=βkG+h(m,V)αkG=V+j=1t1cjkjG+h(m,V)αkG=V+j=1t1cjkjG+h(m,V)(Y+j=1t1bjkjG)

关于为什么 βkG=V+j=1t1cjkjG,αkG=Y+j=1t1bjkjG ,可参考节 2.3

第 4 步,上一步的诚实参与者中,取 t 个组成集合 H4 ,计算 σ=jH4γjwjandwj=hjh,jH4hhj 签名输出就是 (V,σ) 。我们知道,在标准的 Schnorr 签名中(参考节 2.1), σ=e+h(m,V)x ,为什么它会等于这里的 jH4γjwj 呢?下面来推导一下:

σ=e+h(m,V)x=βjwj+h(m,V)αjwj=(βj+h(m,V)αj)wj=γjwj

关于为什么 e=βjwj,x=αjwj ,可参考节 2.2

3.2.1. 4 Rounds

上面介绍的门限签名过程至少需要参与者进行 4 轮的数据交换,其中签名过程中的 DKG 占据了 3 轮。

This construction requires at minimum four rounds for each signing operation (assuming no participant misbehaves): three rounds to perform the DKG, and one round to distribute signature shares and compute the group signature.

From: https://eprint.iacr.org/2020/852.pdf

4. 参考

Author: cig01

Created: <2020-11-27 Fri>

Last updated: <2022-04-24 Sun>

Creator: Emacs 27.1 (Org mode 9.4)