摘自:https://zhuanlan.zhihu.com/p/135258941
1 门限签名
门限签名是普通数字签名的一个重要分支,是门限秘密共享技术和数字签名的一种结合。1991年,Desmedt-Frankel首次提出了 门限签名方案。
门限签名方案是指由
个成员组成一个签名群体,该群体有一对公钥和私钥,群体内大于等于
个合法、诚实的成员组合可以代表群体用群私钥进行签名,任何人可利用该群体的公钥进行签名验证。这里
是门限值,只有大于等于
个合法成员才能代表群体进行签名,群体中任何
个或更少的成员不能代表该群体进行签名,同时任何成员不能假冒其他成员进行签名。采用门限签名方式可以实现权力分配,避免滥用职权。
2 基于RSA的门限签名
本算法[1]由IBM实验室提出,算法有以下特点:
1. it is unforgeable and robust in the random oracle model, assuming the RSA problem is hard;
2. signature share generation and verification is completely non-inter-active;
3. the size of an individual signature share is bounded by a constant times the size of the RSA modulus.
算法流程:
![](https://pic2.zhimg.com/80/v2-4ec3fd116f03ccbdcc9c09c52af6786e_720w.jpg)
2.1 RSA算法
2.1.1 RSA加解密
首先,RSA算法的安全性是建立在大整数因子分解的困难性之上的。
- 秘钥生成:选择两个互异的大素数
和
,二者保密。计算
,公开
。
,
保密,选择一个公开的随机数
,满足
,计算
,
保密。此时,公钥为
,私钥为
。
- 加密:加密结果
,已知条件
,公钥
。
- 解密:解密结果
,已知条件
,私钥
。
2.1.2 RSA签名验签
选取整数,消息空间与签名空间均为整数空间,即
,定义秘钥集合
。
对,Bob要对
签名,取
,
,于是验证等式
是否成立。
2.2 系统初始化
系统中有个参与者,编号分别为
,有一个可信的dealer和一个敌手adversary。dealer选择两个长度(512bit)相等的素数
和
,设
,其中
也都是素数。RSA模
,令
,并选择公共一个素数指数
。
此时,RSA公钥为。
2.3 密钥分享
接下来,dealer选择,满足
,即
就是要分享的秘密值。设置
,dealer随机的选择
为门限值。即构成的关于
次多项式为
。
对于,计算分享的密钥值
。
就是对于参与者
的私钥
。
接下来,计算 verification keys,用于验证签名的是否有效。dealer选择一个随机值,并计算
,令
。
接下来,计算拉格朗日系数。令,对于集合大小为
的子集
,其中元素均属于
,对于任何
,定义:
这些值是标准拉格朗日插值公式系数。从拉格朗日插值公式可得:
2.4 生成门限签名份额
下面,计算一个关于消息的一个签名份额:令
,对于参与者
计算
,
是一个参与者
的签名份额。
每个签名份额对于有一个正确性的证明,这个正确性证明仅对于基的
离散对数与对于基
的
离散对数相似。
下面,计算内阁签名份额的正确性证明以及如何验证这个签名份额:是
的比特长度,
是一个hash函数,函数输出一个
bit的整数,此处
是第二个安全参数。为了生成正确性证明,参与者选择随机数
,计算:
此时,正确性证明就变成。为了验证这个证明,只需要检查下面等式是否成立:
此处,计算的是,而不是
,原作者是这样解释的:Although
is supposed to be a square, this is not easily verified. This way, we are sure to be working in
, where we need to be working to ensure soundness.
2.5 组合签名份额
在组合所有签名份额之前,先要验证每一个签名份额,并且要满足有效的签名份额个数不能小于门限。
假设此处有一组有效的签名份额集合,
。令
,且假设
。然后组合签名份额,计算:
此处的就是2.3节中的
。根据
,可得
,此处
。
因为,通过算法:
,即为组合后的签名结果。此处
和
均为整数,且满足
,可以从
和
上的扩展欧几里德算法得到,这样就很容易计算出满足
和
。
2.6 签名验证
验证签名与RSA签名验证逻辑一样:计算,此处
即为2.5节中组合后的签名结果。验证者,只需要验证
是否成立。
3 参考资料
[1]http://www.iacr.org/archive/eurocrypt2000/1807/18070209-new.pdf
本文首发公众号VenusBlockChain,VenusBlockChain致力于区块链技术研究,传播区块链技术和解决方案、区块链应用落地、区块链行业动态等。有兴趣的小伙伴们,欢迎关注。