LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 理解WisdomChain中的聚合签名

理解WisdomChain中的聚合签名

2020-05-29 智慧链技术社区 来源:区块链网络

什么是聚合签名

聚合签名是使用Schnorr签名(一种数字签名方案,以其简单高效著称,其安全性基于某些离散对数问题的难处理性。)的各方生成的对各自密钥的签名聚合。

它可以把一笔多签交易的各个参与方的公钥和签名合并为一个公钥与签名,整个合并过程是不可见的,无法从合并后的公钥与签名推导出合并前的信息,并且在验证时仅需一次验证即可。目前,Mimblewimble已利用Schnorr签名算法实现签名聚合。

在使用ECDSA进行多签的情况下,如果共有N个私钥进行了签名,则验证时需要对N个签名各自进行验证。由于Schnorr签名算法的线形特性,在同样的情况下,N个私钥的签名可以「聚合」成为一个签名,原理如下:

由于椭圆曲线上的点可以满足乘法结合律,因此对于椭圆曲线上的两个点X,Y和相应的标量(私钥)x,y以及原点G,则:

对于ECDSA签名算法,验证n个签名,需要进行n次取模和2*n次点乘运算。而对于Schnorr签名,我们可以将验证方程相加:

此时对Schnorr签名算法生成的多签进行验证时,只需要进行2n次加法运算和n+1次点乘运算即可。由于加法运算所占用的资源是极低的,两种多签验证方式的资源消耗可以近似的比较为:ECDSA为一次取模加两次点乘,Schnorr为一次点乘的资源消耗。显而易见的结论是,使用Schnorr签名算法所消耗的资源更少。

对于上述多重签名的情况,使用Schnorr签名算法进行聚合签名,可以提供如下额外的好处:

性能方面:可以大大减少验证签名的成本。Schonrr签名算法的优势是显而易见的,对于一笔多签交易,原本需要进行多次的验证,而聚合签名仅需验证一次,从而提升节点对于交易的验证速度

交易体积:由于将多个签名聚合为一个签名,可以大大减少多重签名的大小,并且可以显著降低对于网络传输消耗的带宽,以及对于节点存储空间的占用

隐私:使用Schnorr聚合签名可以提高链上数据的隐私性。对于验证者来讲,聚合签名看起来和普通的Schnorr签名并无区别,无法分辨这一笔交易是普通的交易还是一笔多签交易,而参与交易的用户的公钥和签名都不会暴露出来

在创建一个基于Schnorr聚合签名的多签方案时,为保证多签的签名看起来像单密钥签名,并且使传统的验证方法有效并且保证整个过程只需要线性次签名聚合,该方案需要满足如下的特性:

(1)在普通的公钥模型中被证明是安全的

(2)满足Schnorr方程,从而可以将得到的签名写成公钥组合的函数

(3)允许签名者需要合作的交互式聚合签名(IAS);

(4)允许非交互式聚合签名(NAS),其中聚合可以由任何人完成;

(5)允许每个签名者签署相同的消息;

(6)允许每个签名者签署自己的消息。

基于Schnorr的聚合签名方案目前有多种实现,最终Blockstream给出的方案是MuSig。

聚合签名的使用

在Wisdom Chain最新的白皮书中的隐私保护中,我们看见聚合签名的使用。

通过聚合签名,可以安全又简单的实现原子交换。聚合签名本质是一个签名的偏移量,一旦与真实的签名进行组合,即可计算出签名所用的私钥。聚合签名的可信度可以进行验证,同时又无需暴露任何信息。聚合签名可以保证原子交换的原子性,又可以保证交易双方的安全。

假设A与B通过聚合签名进行一笔原子交换的简洁过程如下:

(1)A和B将加密货币分别存入两个各自签名的地址之中;

(2)A所用的私钥会是一次性的,因为她需要将这个私钥发送给B;

(3)A向B提供一个聚合签名,这个签名需要经过B的确认;

(4)当A广播她的签名来证明她持有的加密货币时,B可以获得足够的信息计算出A的私钥并获得她持有的加密货币;

(5)B签署一笔交易发送加密货币给A;

(6)A使用另一半私钥对接收加密货币的交易进行签名并将其广播;

(7)B获知全部的私钥并收到A持有的加密货币,同时A也将获得B的货币。

—-

编译者/作者:智慧链技术社区

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...