研究 | 全面对比Schnorr签名方案和BLS签名方案_数字货币_比特币代理_数字货币代理_区块链_数字货币

研究 | 全面对比Schnorr签名方案和BLS签名方案

admin 206

前言

Schnorr签名算法是德国密码学家Claus Schnorr在2008年提出的,区块链协议公司Blockstream的密码学家Gregory Maxwell、Pieter Wuille等人在2018年称为MuSig的Schry 这也是我们即将

BLS签名案是斯坦福大学教授Dan Boneh等人2001年提出的方案,现在在Boneh教授们的完善下,开始适用于区块链。

总的来说,两大签名方案各有千秋,各有各的优势。

原文

目录

1、椭圆曲线数字签名算法(ECDSA ) )。

2、什么是Schnorr信号?

3、Schnorr签名的批量验证

4、Schnorr签名的密钥聚合

5、musig:blockstream提出的Schnorr签名方案

6、默克尔多重签名(甲基多重签名(Merkle Multisig ) () ) ) ) ) ) ) ) ) ) ) ) ) )。

7、什么是BLS签名案?

8、BLS签名的魔法

9、BLS签名方案的具体原理

10、BLS签名的签名汇总

11、BLS签名的密钥聚合和n-of-n多重签名

12、子群多重签名方案(m-of-n multisig ) ) ) ) )。

13、可以进行BLS签名的APP场景

14、BLS签名的弊端:配对效率低

十五、结论

Blockstream在2018年初发表了关于MuSig的论文。 这是一个Schnorr签名方案,总的来说,这个签名方案的一些特点非常好,但也有讨厌的其他特点。

1 椭圆曲线数字签名算法(ECDSA)

首先,比特币目前使用的是ECDSA椭圆曲线数字签名算法,要对消息m签名,必须进行散列操作,并将这个散列视为数字。 z=混列(m )。 还需要随机或随机检索的数字k。 我们不喜欢信任随机数发生器。 (有很多障碍,很多漏洞与坏的RGN有关。 因此,通常使用RFC6979,根据我们的秘密和签名的消息,计算确定性k的值。 私钥pk允许在包含两个数字(r (随机点r的x坐标=kG )和s=) zRPK )/k的消息m中生成签名。 然后,使用我们的公钥P=pkG,任何人都可以通过检查点(z/s ) g ) r/s ) p的x坐标等于r来验证我们的签名。

可显示ECDSA算法

这个算法很常见,很棒,但是可以改进。 首先,签名验证包括反转(1/s )和两点乘法,这些操作的计算量非常大。 在比特币中,每个节点都必须验证所有交易。 也就是说,广播交易后,数千台计算机必须验证签名。 即使签名过程变得更加困难,简化验证过程也是非常有益的。 二是各节点需要分别验证各签名。 对于m-of-n多重签名事务节点,可能需要多次验证同一签名。 例如,具有7-of-11多个签名输入的事务包含7个签名,需要对网络中的每个节点进行7-11次签名验证。 同样,这样的交易占用了很多空间,必须为此支付很多费用。

2 什么是Schnorr签名

Schnorr签名的生成略有不同,用一个点r和一个标量s代替了两个标量(r,s )。 与ECDSA类似,但r是椭圆曲线(R=KG )上的随机点。 签名的第二个计算与:s=khash(p、r、m ) PK略有不同。 这里的pk是你的私钥,P=pkG是你的公钥,m是消息。 然后,可以通过检查sg=rhash(p,r,m ) ) p来验证该签名。

Schnorr签名算法的可显示性

因为这个方程是线性的,所以方程可以互相加减,仍然有效。 这给我们带来了关于施耐德签名的几大好处。

3 Schnorr签名的批量验证

要验证比特币区块链中的区块,必须验证区块中的所有签名是否有效。 如果其中一个无效,我不在乎哪个无效。 只是拒绝整个街区。

对于ECDSA签名算法,每个签名必须单独验证。 也就是说,块中有1000个签名时,需要计算1000次倒置和2000次积分乘法,总共需要约3000次重要的计算任务。

使用Schnorr签名可以将所有签名验证方程式相加,从而节省计算能力。 有1000个签名的块需要验证:

(s1 s2 … s1000 ) G=) R1…R1000 )混列) P1,R1,m1) P1混列) P2,R2,m2