2018-07-28

Schnorr 签名

Schnorr 签名由来

Schnorr 源于 Claus-Peter Schnorr 的发明,是一种签名策略:一系列连接私钥、公钥和签名的数学规则。很多密码学家认为 Schnorr 签名在相关应用中是最好的,具备相当高水平的正确性,没有延展性问题,验证速度快,最重要是支持多重签名,即把多个签名聚合成为一个新的签名。比特币协议使用的是另一种类型的签名策略 ECDSA 椭圆曲线数字签名算法。Schnorr 签名基于与 ECDSA 相同的安全假设,并与比特币已使用的椭圆曲线 secp256k1 兼容。这意味着 Schnorr 签名可以使用相同的私钥创建,并与当前使用的密钥派生方案兼容。

 但截至目前,Schnorr 签名尚不能在比特币中使用,除非硬分叉。大家都知道的 SegWit 隔离见证,会把所有的签名数据转移到某个交易上的独立空间:见证数据 witness 将不被嵌入从前比特币协议中。有了脚本版本控制,所有见证中的规则通过软分叉改变,包括 Schnorr 签名策略。

为交易腾出更多容量

Schnorr 对比特币最大的好处是多重签名聚合。很多比特币交易包含多个输入,这些输入记录着这些比特币的地址来源,这些输入需要有各自的签名。这意味着即使一笔交易,也必须包含所有签名,网络必须传输所有这些签名,同时一个区块也必须包含所有这些签名。这就好像你把零钱凑在一起,去买个百元的大件商品。假如使用 Schnorr 签名,所有输入只需要一个合并签名即可完成。这可以为交易腾出更多空间。__比较目前的状况,重点看下方的数字签名,_Schnorr 签名聚合_预示着效率提升从目前来看,ECDSA 签名的大小各不相同,大多数字符长度为 71-73 个字节,最大为 75 个字节,理论上最小为 8 个字节。Schnorr 签名比 ECDSA 签名更高效、更紧凑。每个签名的最大长度是 64 个字节。再比如 Bitcoin Core 给出的隔离见证方案,让所有的见证数据大小减少 75%,1MB 见证数据可以压缩至 0.25MB,在原来的区块多腾出了 0.75MB 空间。然后,聚合的 Schnorr 签名又可以减少见证数据量,按照 1MB 可以减少 0.5MB 计算,通过这两次,见证数据可以压缩到 0.125MB,相当于区块容量提升约 17%,能腾出多少空间取决于区块中所包含的交易类型。比特币核心开发者 Eric Lombrozo 估算,Schnorr 签名最终会把总容量提高至少 40%,且是在隔离见证增加 60% 至 100% 容量之后。

多重签名问题

上述的容量提升只针对一般交易,也就是包含多个输入的交易。在多重签名交易中,Schnorr 的威力更加强大。多重签名交易中,一个输入需要多个签名,通常这些签名又来自不同的人。像正常的交易一样,多重签名交易只需要单个签名替代多个签名,无论原本需要多少签名,也不管这个交易涉及的人有多少。为更为复杂的智能合约架构敞开了大门,且只需要一点点的数据需求量。不管是多重签名交易类型是 2/3、3/15,或者 100/100,所有类型需要的签名数据量相同,与单签名交易类型所需量一致。

CoinJoin 隐私强化

Schnorr 签名同时满足隐私保护。如上文所述,一个交易可以包括多个输入,通常情况下,与这些输入相连的地址都属于同一个人。比特币核心开发者 Gregory Maxwell 提出一种隐私强化方法 CoinJoin,让不同的用户把他们的交易组合进一个交易。这个交易包含来自不同交易的多个输入,然后把钱发送的多个输出中,传送给不同的收款人。这好比一群人,把各自的钱、硬币放在一起,去不同的商店购物。每一个体不必各自去购买,但也会得到各自付出相应价格的商品。如进展顺利,CoinJoin 将成为在比特币协议中加强隐私的一种方式,但这是后话。Schnorr 签名可以为 CoinJoin 带去优势,让所有 CoinJoin 交易的参与者不仅可以组合他们的交易,而且可以组合他们的签名。交易体积比所有个体交易组合要小得多,这也意味着矿工打包的费用也会小得多。

难以预料的攻击

据 Blockstream 联合创始人 Pieter Wuille 这次在斯坦福的演讲所述,Schnorr 签名在过去的几年中经历了几次「不容易被发现的挑战」。2017 年,在 Schnorr 签名实施时,发现了「流氓密钥攻击」,即参加交易的一方使用一把特别制作的密钥来盗窃资金。这个问题对于简单的多重签名是很好解决的,只需进行一个注册程序,让密钥自己进行签名,但是要支持一笔转账中的多个交易输入就必须要使用公钥,这个办法也就行不通了。他们递交了可能要进行的修订,但被学会驳回,此后 ANSSI 密码学专家 Seurin 加入了比特币核心开发组,与 Pieter Wuille、比特币核心开发者 Gregory Maxwell 及 Blockstream 数学家 Andrew Pwolstra 共同完成了更安全的构造改进。但随后又发现了另一问题。Blockstream 工程师 Russell O’Connor 发现了另一种攻击,有多个参与者的交易中,其中一名参与者可以宣称拥有其他人的密钥,从而使用他人的交易输出。Wuille 称之为「Russell 攻击」,并表示在有多个参与者的交易中,攻击模型非常微妙。现在有几个比特币改进建议 BIPs 正在起着作用,一个代码的实施,在发展过程中需要很长时间,如果上述情况持续下去的话,Schnorr 代码的完成不会花很长的时间。比特币核心开发者 Nicolas Dorier 表示,Schnorr 签名添加到比特币协议上可能要花去很多年的时间。Wuille 也承认有必要用相当长的时间去充分推敲。

转载链接:https://www.chainnews.com/articles/053513188565.htm。

你可能感兴趣的:(2018-07-28)