秘密共享及门限签名

Elgamal 签名算法 Harn 的门限签名方案

RSA Shoup 门限签名方案

Asmuth-Bloom 法

Karnin-Greene-Hellman 法

Shamir 门限法(拉格朗日插值法)

Elgamal 签名算法

依赖有限域上的离散指数的难计算性,即设为素数的模循环群的原根,对任意的,计算:

是容易的(通过幂取模算法)。反过来,给定计算满足上式的是非常困难的,称为以为基的离散对数。

初始化

Alice随机选择大素数之间的整数,找出有限域的一个生成元,计算:

则公钥为,私钥为

签名

设待签名消息为,Alice随机选择整数,满足。计算:

的签名发送给Bob。

验证

Bob收到,利用Alice的公钥验证等式:

若等式成立则签名有效。

Harn 的门限签名方案

初始化

假设有个成员为门限值,为大素数,为有限域上的阶生成元,的循环群中的一个数,待签名消息为,每个成员随机选择,计算:

成员私钥为,组公钥计算如下:

$Pi(i=1,2,\cdots,n)t-1f_i(x)=z_i+a{i,1}x+a{i,2}x^2+\cdots+a{i,t-1}x^{t-1}f_i(x_j)\bmod qP_j$,并计算验证信息:

产生部分签名

设参与签名的成员。成员选择一个随机数,计算并将其广播给所有成员。

收到其他成员广播的后,计算

通过自己的私钥、份额计算:

将部分签名发送给签名合成者。

合成者收到后,通过下式验证其有效性:

若验证式成立,则收到的部分签名有效。

产生组签名

合成者确认接收到个正确的部分签名后,计算:

作为消息的组签名。

验证签名

验证者收到组签名后,验证其有效性:

每个参与者拥有的数

Shoup 门限签名方案

RSA 体制中为安全大素数,即存在大素数使得,记

初始化

可信中心TC随机选取次数不超过的多项式

其中

TC计算,并将其发送给成员

同时计算

TC公开

产生部分签名

成员计算消息摘要,然后计算:

产生组签名

若有个成员产生正确的部分签名,则计算

,由欧几里得定理可知存在使得,即,最终签名:

验证签名

验证门限签名时,验证以下等式是否正确:

Asmuth-Bloom 法

初始化

假设为共享秘密,为秘密分发者,有个成员为恢复秘密的门限值。选择大素数和严格递增的序列满足如下条件:

秘密分发

,选择满足式的整数计算:

并将作为秘密份额发给成员

秘密恢复

选取个成员参与秘密的恢复,通过交换秘密份额,任意成员可以建立同余方程组:

可知该方程组有唯一解:

其中:

可求出共享秘密

Karnin-Greene-Hellman 法

产生主次密钥

(m,n)

  1. 信任单位产生个任意维矩阵,矩阵元素为,分别为
  2. 信任单位产生个任意维矩阵
  3. 产生n个次密钥
    ,不可暴露,分别保存
  4. 主密钥为
  5. 公开矩阵

密钥恢复

  1. 选取m组次密钥
  2. 拼接矩阵
  3. 计算逆矩阵
  4. 计算
  5. 计算

Shamir 门限法

秘密分发

任取$a1,a_2,\cdots,a{t-1}\in GF(q)$构造一个多项式:

其中为密钥,计算,称为部分密钥,将分别通过安全的信道发送给每个分享者

秘密恢复

如果有个共享者想恢复秘密信息,他们分别拿出自己的,然后利用Lagrange插值公式:

其中$\lambda{x,i}=\prod{k=1,k\neq j}^t\frac{i-k}{j-k}d=f(0)=h(0)d$。