BLS 签名和基于 BLS 签名的门限签名
在区块链的整个体系中大量使用了密码学算法,密码学是保证区块链安全的基石,而区块链的广泛应用也推进了密码学的发展。2003 年 Boneh 和 Franklin 提出了身份基加密,从此基于双线性映射的密码学算法走向了人们的视野,并且成为了密码学新兴的研究方向。
今天我们要学习的 BLS 签名算法是基于双线性映射构造的,阅读本文将带领你步入基于双线性映射的密码学算法的大门。
2003 年 Boneh 和 Franklin 提出了身份基加密[1],从此基于双线性映射(也称为 pairing 运算/对运算)的密码学算法走向了人们的视野,并且成为密码学新兴的研究方向。今天我们要学习的 BLS 签名算法[2]就是基于双线性映射构造的,在给出具体的签名算法之前,我们需要学习一下什么是双线性映射。
双线性映射
定义1 双线性映射:设群 G1,G2,GT 是阶为素数 p 的乘法循环群,如果映射 e: G1 ×G2→ GT 满足以下性质,就称映射 e 为双线性映射:
(1) 双线性:任意元素 u ∈ G1,v∈ G2 ,任意元素 a,b∈ Zp (Zp 指的是{0,1,...,p-1}),都有 e(ua,vb)=e(u,v)ab ;
(2) 非退化性:存在元素 m∈ G1,n∈ G2 使得 e(m,n)≠1;
(3) 可计算性:任意元素 u,v∈ G1 ,存在有效算法计算 e(u,v)。
可能有些读者还不知道群,循环群,乘法循环群,群的阶是什么意思,因此我下面介绍一下这些术语的定义,已经熟悉这些知识的读者可以直接跳过定义 2,定义 3 直接阅读后续签名算法部分。
定义 2 群[3]:群是一个集合 G 和其上的二元运算,满 以下条件:
(1)封闭性:对于任意 x,y∈G ,有 ;
(2)结合率:对于任意的 x,y,z∈G ,恒有;
(3)存在单位元:存在 e∈G ,对于 G 中任意元素 x ,满足,e称为单位元,也称为幺元;
(4)存在逆元:对于任意 x∈G ,都存在一个元素 h∈G ,满足,这样的元素 h 称为 x 的逆元。
当二元运算为已知时,简单的将集合 G 称为群。
定义 3 循环群[3]:若群 G 中存在元素 g 满足对群 G 中任意元素 f,都存在整数 t 使得 ,则群 G 是循环群,g 是群 G 的生成元,若群 G 的阶为素数,则 G 中每一个非单位元元素都是生成元。群元素的个数称为阶。二元运算为模乘法的循环群,称为乘法循环群。
有了以上知识,应该可以理解 BLS 签名算法了,这个算法包括:初始化,密钥生成,签名,验证,四个部分,具体构造如下:
1.初始化
G1, G2 是阶为 p 的乘法循环群,生成元分别是 g1, g2 , e 是双线性映射:G1 * G2 -> GT , 安全 hash 函数:h:{0,1}*-> G1 , 公开参数是(G1, G2, GT, e, g1, g2,p,h)
2.密钥生成
选择一个随机数 x∈ZP ,计算 ,私钥 SK=x,公钥 PK=v
3.签名
对消息 M 签名
σ = h(M)x
4.验证
e(σ, g2)? = e(h(M), v)
门限签名的通俗理解是:在一个签名者群体中,有超过 t(门限)个签名者对一条消息进行签名就可以得到这个群体对这条消息的签名,这个签名是唯一的(即超过 t 个签名者的不同子集生成的签名是一样的)且任何人都可以验证。由门限签名的性质可知,少于 t 个签名者的群体是得不到群体签名的,因此在一个由 n 个节点组成的区块链系统中当恶意节点的数量小于 t 时,可以利用门限签名来做可验证随机函数(Verifiable Random Functions)。
随机数在共识领域有着重要的应用,从本质上讲,共识问题就是随机选择出块人问题,并且这个随机性不能被提前预测,不能被操纵,并且需要可以被全网验证。PoW 方案通过计算满足一定条件的 Hash 来选取出块人,算力大的节点被选中的概率高,为了获取记账权,需要投入更多的算力。为了解决 PoW 方案算力浪费的问题,PoS 方案根据每个节点所拥有份额多少来随机选择出块人,份额越多的节点被选中的概率越大,门限签名可以作为 PoS 方案的随机性来源。
拉格朗日差值法
现在可以在 BLS 签名方案的基础上通过使 Shamir 秘密分享方法[4]来构造门限签名算法,为了便于理解,在给出具体构造算法之前,我先介绍一下拉格朗日差值法,这是 Shamir 秘密分享方法的核心。
已知一条 n-1 次曲线上的 n 个点 (x1,y1), (x2,y2), ...., (xn,yn) , 我们可以使用拉格朗日插值法来恢复这条曲线方程,具体如下:
现在改变一下问题,想要实现 t-of-n 的秘密分享。t=3,n=4 时,先任意选择一条 t-1=2 次曲线,以这条曲线在 x=0 处的值作为秘密。然后任意取出曲线上的n=4个点 (1,2),(2,5), (3,10),(4,17) 后,任选其中三个点后恢复出来 t-1=2 次曲线是一样的。因此,我可以将这四个点(横坐标分别是 1、2、3、4)发送给四个不同的人,这样就是一个 3-of-4 的秘密分享了。
有了以上知识,应该可以理解基于 BLS 签名的门限签名算法 ,这个算法包括:初始化,密钥生成,签名,验证,四个部分,具体构造如下:
1.初始化
G1, G2 是阶为 p 的乘法循环群,生成元分别是 g1, g2 , e 是双线性映射:G1 * G2 -> GT , 安全 hash 函数:h:{0,1} -> G1 , 公开参数是(G1, G2, GT, e, g1, g2,p,h)
2.密钥生成
这步由密钥生成中心完成
a.密钥生成中心选择随机数 x ∈ ZP , 计算算, 系统主私钥 MSK = x, 系统主公钥 MPK = v
b.随机选择一个 ZP 上的 t-1 阶多项式 P, 满足 P(0)=x, 计算 xi = P(i) ,,签名者 ui 的私钥为 xi, 公钥为 vi
c.公开 MPK 及所有用户的公钥
3.签名
设对消息 M 签名
a.用户 ui 计算自己的签名, 然后将 σi 广播出去
b.用户 ui 收到了来自 uj 的签名 σj 后,首先验证签名的正确性:, 如果签名正确则记录下来
c.待收集到 t 个不同用户的正确签名后,用户计算完整的签名:
由拉格朗日差值公式可知,任意 t 个用户所产生的完整签名相同
4.验证
e(σ, g2)? = e(h(M), MPK)
然而这个算法由于使用了密钥生成中心这样一个中心化机构,因此并不能直接 用来做可验证随机函数,我们需要构造一个分布式密钥生成的门限签名算法,具体算法我会在下篇文章给出,感兴趣的读者可以先想想怎么做。(tips: 多个多项式之和作为秘密多项式)
ref
[1] Boneh D, Franklin M. Identity based encryption from the Weil pairing[J]. Siam Journal on Computing, 2003, 32(3):213-229.
[2] Dan B, Lynn B, Shacham H. Short Signatures from the Weil Pairing[C]// International Conference on the Theory and Application of Cryptology and Information Security. Springer, Berlin, Heidelberg, 2001:514-532.
[3] 陈恭亮. 信息安全数学基础[M]. 清华 学出版社, 2004.
[4] Shamir A. How to share a secret[J]. Communications of the ACM, 1979, 22(11): 612-613.
BLS 签名和基于 BLS 签名的门限签名相关推荐
- 门限签名技术火了,它的硬核之处绝不仅仅是秘密共享……
作者 | 苏冠通 责编 | Aholiab.Carol 出品 | 区块链大本营.ARPA 门限签名是一种分布式多方签名协议,包含有分布式密钥生成,签名和验签算法.近几年,伴随区块链技术的快速发展,签名 ...
- 聚合签名、门限签名、Multisigs 和多签名
引言 数字签名在区块链技术中扮演着举足轻重的角色,因为每一笔交易都需要签名才能成为一笔有效的交易.准确地说,数字签名在区块链协议中有三方面的目标: 证明所有权,并为花费资金提供授权 证明了不可否认性, ...
- 门限签名(1)——秘密共享
门限签名(threshold signature区块链中叫多重签名 multisig),即n个用户中有t个签名时,签名有效. 秘密共享是门限签名的一种特殊情况,即多个用户共享一个秘密,并不是把秘密发给 ...
- Taproot升级在即!门限签名技术将给数字钱包带来什么?
继四年前比特币隔离见证升级之后,今年十一月份的BTC Taproot升级将为比特币带来巨大的技术革新. Taproot是什么?GregoryMaxwell的原始Taproot提案标题是这样说的:Tap ...
- BitGo的TSS门限签名方案代码解析
1. 引言 前序博客有: 门限签名 threshold signature verifiable secret sharing可验证的秘密共享 开源代码见: https://github.com/Bi ...
- ARPA基于BLS的门限签名算法随机数生成器设计
作者 | ARPA 责编 | 晋兆雨 头图 | 付费下载于视觉中国 随机数已经在密码学.彩票和游戏等众多领域被广泛使用.区块链与随机性也有着紧密的关联,因为它们从随机性中寻求公平.被广泛应用的的工作量 ...
- 介绍一种门限SM2密码方案
中科院信息工程研究所的科研人员林璟锵.马原.荆继武等设计了一种 SM2 门限密码算法实现方案,他们在 2014 年 8 月向国家知识产权局提交了专利申请,名称是<适用于云计算的基于SM2算法的签 ...
- 门限的限意思是什么_门限是什么意思_门限的翻译_音标_读音_用法_例句_爱词霸在线词典...
全部 Threshold secret sharing is the foundation of implementing threshold cryptosystem. 门限秘密共享是门限密码系统实 ...
- 史上最全的Schnorr签名方案和BLS签名方案的全面对比
前言 Schnorr 签名算法最初是由德国密码学家 Claus Schnorr 于 2008 年提出的,而来自区块链协议公司 Blockstream 的密码学家 Gregory Maxwell.Pie ...
最新文章
- H3C 7506E基于时间的分时段上网的ACL
- word2003快速排版工具栏_干货分享 | 闲到在家数瓜子?——先把ID排版秘籍学了吧(上)...
- c++STL容器的priority_queue
- linux修改默认发布目录,Linux环境更改Jenkins默认主目录
- 20年前的吴恩达,藏在一个数据集里
- PostgreSql之pgsql 条件和顺序控制
- 重新编译PHP加载PDO模块
- 后端利用MultipartFIle类型参数接受文件上传
- matlab用方程的解赋值,Matlab隐式符号方程求解和赋值
- php 百度转高德经纬度,PHP腾讯地图经纬度转百度地图经纬度
- 如何专注?一个番茄钟就够了!
- 深夜有感而发的第一个文章
- Python语言基础编程
- 13 款开源的全文检索引擎
- 医院信息系统的业务功能详解
- 蓝牙加密二【配对和绑定的关系和定义】【IO Capabilities】【sec_params.rsp_key】【BOND MODE】【加密方式】【Encryption Procedur】【计算MIC】
- emqx 使用httpapi踢除mqtt客户端clientid(保姆级教程)
- P3498 [POI2010]KOR-Beads(hash表)
- 如何借助官网例程学习STM32
- 测试用例入门(三)-使用边界值分析法编写测试用例
热门文章
- FastRule: Efficient Flow Entry Updates for TCAM-based OpenFlow Switches(一)
- 简单的CSV文件读取,C语言实现
- Linux Debian 系统的单网卡绑定多个IP地址的操作步骤
- Android 源码 PackageManagerService 启动流程分析
- PTA-输出大写英文字母
- 3GPP TS 23501-g51 中英文对照 | 5.2.5 Access control and barring
- 人生效率手册:重塑升级版
- 2021年中国集成电路市场现状及封测行业重点企业对比分析:通富微电vs华天科技vs长电科技
- GIt远程仓库pull拉取代码
- cf103202M. United in Stormwind