BLS 签名算法很出色——它能将区块中的签名聚合成单一签名;能进行密钥聚合和 m-n 多重签名(无需额外通信);能避免使用随机数生成器。这些优点使它显得如此简单优雅。
在区块链上,由于一切信息都是透明公开的,提供一个安全实用的随机数是一个非常困难的问题。但是随机数是很多应用的基础,比如游戏,博彩,流程控制等。因此,提供一个实用可靠的随机数是基于智能合约的应用的迫切需求。
在日常生活中,很多场景都需要应用到“随机数”,例如福利彩票、车牌摇号、公租房的分配等等。虽然借助互联网,随机数的应用愈加的方便,但是不可避免中心化的系统带来的弊端,即中心化系统产生的随机数可能是弱随机数。借助区块链以及相关的加密算法,使得拆解、破解随机数几乎不可能,因为需要消耗大量的时间和人力,并且结果也并不理想。因此,使用区块链可以保证竞猜类应用的随机性和公平性。
过去一年以太坊上发生了什么?详解以太坊上最值得关注的 12 个新鲜事物。
本文介紹了BLS签名简要过程及其原理,综上可以看出BLS签名过程没有使用随机数,签名结果具有确定性(与RSA,EdDSA类似,不同于ECDSA,Schnorr等)。其构建在具有双线性映射的配对函数之上。
改进的密钥聚合的算法是如何防止伪签名的呢?本质上增加了公钥的可验证性
本文接着前一篇BLS密钥聚合,讲下原始的聚合密钥签名可能出现的问题,需要一些背景知识铺垫,以Schnorr签名为例来说明,对此不熟悉的可先参考相关文章:Schnorr签名与椭圆曲线
双线性配对特性不仅可以用于签名构造,密钥协商等,还可以实现乘法的同态隐藏和校验。这一点在零知识证明项目中应用很多。另外需要说明的是,并非基于任何椭圆曲线都可以构造配对函数,对于能有效实现双线性对的椭圆曲线,称为pairing-friendly curves,例如BLS12_381曲线。