主页 > imtoken2.0下载 > 火线观点:为什么 Schnorr 签名被称为隔离见证后比特币最大的技术更新

火线观点:为什么 Schnorr 签名被称为隔离见证后比特币最大的技术更新

imtoken2.0下载 2023-07-29 05:16:46

摘要:

10 月 15 日,由比特币核心开发者 Pieter Wuille 牵头的三个提案(BIP340-342))正式合并到比特币代码的主分支[1]。三个提案分别包含 Schnorr、Taproot 和 Tapscript 的内容。社区评论说,这一变化是继隔离见证之后比特币最大的技术更新。

Schnorr 签名的主要目标是替代目前的比特币 与比特币区块链目前使用的 ECDSA 相比,Schnorr 有一些优势:

(1)签名高度安全,其安全性可以用数学证明,而且不可延展;

(2)签名可以为多签参与者提供隐私保护;

(3)签名的线性特性可以作为Taproot等技术的基础,进一步加强交易的隐私性;

(4)签名长度更短,可以聚合多个签名,可以节省存储空间,实现比特币相对于兑换的扩容;

(5)可以批量验证签名,提高验证效率;

但是,它也有一些不足:

(1)用户在使用前需要多轮交互;

(2)签名会消耗一些额外的带宽和计算资源;

(3)签名对随机数的随机性要求很高。

作为可能替代椭圆加密算法ECDSA签名机制的技术更新,Schnorr签名是比特币底层技术发展的重要里程碑之一。这段代码添加之后,表示技术已经基本成型,需要等待社区确定软分叉的正式激活时间,不过这个时间点还没有最终确定。

火线视点:为什么Schnorr签名被誉为比特币Segwit后的最大技术更新

1.背景

比特币升级版

Schnorr签名机制最初是由德国密码学家和数学家Claus-Peter Schnorr发明的(见图1),Schnorr数字签名也是以他的名字命名的。Schnorr的安全性是基于一个特定的离散对数问题和长期以来一直以安全性和简单性着称。但是 Schnorr 为他的签名申请了专利,所以这项技术很好,但长期以来,有些应用程序无法直接使用它。

火线视点:为什么Schnorr签名被誉为比特币Segwit后的最大技术更新

Schnorr 签名的专利直到 2008 年才到期。同时,业界还没有广泛接受的具体实现。因此,同年发表比特币白皮书的中本聪并没有选择当时的 Schnorr 签名方案,而是选择了当时较为成熟的 ECDSA 签名方案。名称计划。随着施诺尔技术专利的到期,这项技术也逐渐落地。在比特币社区Pieter Wuille等核心开发者的推动下,社区开始认真考虑应用Schnorr签名来替代目前的ECDSA签名,进行软分叉。升级。

2018 年 7 月,比特币核心开发者 Pieter Wuille 提出升级 Schnorr 的 BIP,随后 Blockstream 和开源社区也参与了相关的开发工作。在比特币正式采用之前,Schnorr 是通过比特币分叉 BCH 中的硬分叉提前部署的。即2019年5月,BCH将签名方案升级为Schnorr签名。之所以会较早激活,主要是因为它是通过硬分叉完成的升级比特币升级版,而比特币不能采用硬分叉方案,需要更复杂的软分叉方案。后来,Pieter Wuille 进一步提出了 Taproot/Schnorr 软分叉升级方案,于今年 1 月正式发布,即本文提到的 BIP 340-342。这一次,Schnorr 的升级提案已经正式并入代码库。已合并到比特币骨干网中的三个提案是 BIP 340:secp256k1[2] 的 Schnorr 签名、BIP 341:Taproot:SegWitversion 1 支出规则[3]和 BIP 342:Taproot 脚本验证[4]。其中,第一个提案是施诺尔签署的主要提案。 Taproot 是 Merkle 风格的抽象语法树升级,与 Schnorr 签名一起,将允许比特币以私有方式执行更多智能合约脚本;而最后一个提案是对前两个关于比特币的提案的补充,主要是对原有的比特币脚本进行了升级,以支持Schnorr签名、批量验证和签名哈希。不过值得注意的是,Schnorr算法还没有被业界标准化,本次BIP 340提案中使用的Schnorr仍然是基于比特币量身定制的。

2.Schnorr 签名和 BIP 提案

2.1 什么是 Schnorr 签名?

Schnorr本质上是一种加密签名技术,我们可以简单理解为,在比特币系统中,Schnorr将是ECDSA的替代升级。

ECDSA代表椭圆曲线数字签名算法(EllipticCurve Digital Signature Algorithm)。我们对它在比特币中的作用并不陌生,我们对比特币网络中的每一个签名都使用了 ECDSA 技术。例如,如果 Alice 想要发送一笔交易,矿工必须确认只有 Alice 拥有私钥并且有权处置该资产。因此,Alice 需要使用 ECDSA 生成唯一且不可修改的签名,以证明 Alice 拥有私钥并确认交易部分的具体金额。当施诺尔正式启动后,这项工作将由施诺尔接管。这个过程如图2.

火线视点:为什么Schnorr签名被誉为比特币Segwit后的最大技术更新

2.2 为什么要更改签名方案?

ECDSA 在过去 10 年中运行良好,似乎可以胜任生成签名的关键工作。然而,有一个问题困扰着 ECDSA,即业界一直无法提供严格的数学和密码学证明来证明 ECDSA 在数学上是安全的。相比之下,施诺尔可以。 Schnorr 签名技术在某些条件下被证明在数学上是安全的 [5-6]。对于像比特币这样严重依赖安全性的加密货币来说,能够证明安全性的技术肯定比在实践中没有问题的技术更让人放心。

同时,对于比特币来说,更重要的是Schnorr签名具有“线性”的特性,可以让多个用户的公钥通过线性计算聚合成一个公钥,并且可以生成。对应的聚合签名。

为什么“线性”特征对当前的比特币很重要? ECDSA 本身不支持多重签名。比特币现在通过 P2SH 脚本进行处理,但 P2SH 类型的脚本会将多重签名交易的存在暴露给网络并显示所有签名者。使用 Schnorr 签名可以将多个签名聚合为一个签名,增强交易隐私,节省解锁脚本中多个签名占用的空间,节省宝贵的链上空间,实现变相扩展。总体而言,如果广泛普及,可能会带来 5% 到 20% 的比特币性能提升。

另外,由于签名聚合为一个,因此在验证签名时只需进行一次验证,降低了计算成本。这部分的技术细节将在下一章详细介绍。

比特币升级版

Schnorr签名对比特币意义重大,可以成为Taproot等技术的基石。 Taproot 也是第二个提案 BIP 341 的内容。 Taproot 源自 MAST(Merkelized Abstract Syntax Tree),它可以用基于 Merkel 树的形式表达复杂的脚本。我们知道,Merkle 树的一个重要特性就是它可以快速验证一个节点值的存在,而不会泄露无关分支的真实数据,因此被广泛用于将数据存储在区块链中。事务、状态数据等。 Taproot 基于这个特性可以完成脚本的执行,而不会泄露脚本中没有用到的分支条件。相比之下,P2SH 需要显示所有脚本内容。

结合 Schnorr 签名技术,Taproot 甚至可以让复杂脚本的交易(包括闪电网络交易、多重签名交易、多判断分支交易等)看起来像普通 P2PKH 的交易。支持复杂脚本,保护脚本隐私,不暴露签名者,让判断条件复杂的交易看起来像普通交易一样简单,形式上无法区分。这是Taproot和Schnorr结合的效果。

2.3 施诺尔会采取什么形式?

与之前的许多 BIP 类似,这次 Schnorr 正在经历一个软分叉。

BIP的全称是Bitcoin Improvement Proposals。一般来说,它包括比特币底层区块链技术的更新、新特性的引入和信息的补充。自 2009 年中本聪发布第一版比特币区块链客户端以来,大多数技术更新都以 BIP 的形式添加到比特币技术中。目前,比特币社区已经采用了100多个BIP提案,例如:隔离见证(BIP 144)、P2SH多重签名结构(BIP 49)和助记词(BIP 39)@ >).等

您可能熟悉硬分叉和软分叉之间的区别。在硬分叉中,当社区对某些特性和技术存在强烈分歧时,主链会被分成两条链,新老客户端互不兼容,比如BTC和BCH,BCH和BSV等. 在软分叉升级中,比如 Segwit 升级,虽然社区可能存在差异,但仍然可以保持新老两种客户端在一定程度上兼容。

硬分叉有时会给社区带来强烈的动荡,因此比特币社区长期以来对主动硬分叉升级持保留态度。可以避免通过硬分叉升级。这一次,比特币的Schnorr升级将通过软分叉完成,这也是它很可能被社区成功激活的一个重要原因。

看来ECDSA签名的替换是一个非常大的变化。为什么 Schnorr 可以通过软分叉完成?这要从 Schnorr 本身说起。

Schnorr 的安全性是基于某个离散对数问题非常难以解决的假设,并且这种安全性可以通过数学手段来证明。换句话说,只要这个假设成立,Schnorr 签名的不可破译性就等于离散对数问题的不可破译性。

同时,在一个椭圆曲线中,有一个与离散对数非常相似的问题。难以理解。

Schnorr签名依然沿用比特币使用的原始椭圆曲线,但采用了新的计算方式,最大程度兼容不想升级的版本,实现软分发分叉升级。

另一方面,Schnorr 对 Segwit 客户端的改动非常小,目前 Segwit 客户端渗透率超过 90%。据luke.dashjr统计,截至2020年10月,比特币网络节点90%以上的节点已将客户端更新到0.16或以上版本,即隔离见证的升级版。 Segwit 将签名信息与交易信息隔离开来,并将其作为单独的结构附加到末尾。因为签名信息只起到验证的作用,并不影响交易的关键参数:比如转账地址、数量等。Schnorr签名主要影响签名信息。对于升级了Segwit功能的客户端,Schnorr签名只涉及到一个单独的结构附加到最后签名验证信息影响较小。

综上所述,Schnorr签名可以分为软分叉升级的形式,添加到比特币区块链的底层,不需要硬分叉,也不会造成社区分裂。拒绝 Schnorr 签名的客户端仍然可以正常加入网络,完成打包等操作。作为区块链账本升级的一种手段,软分叉的实现难度更大,往往需要复杂的设计来规避某些规则,但它们的兼容性更强,不会导致共识分裂。这是一个渐进的过程。 ,一种温和的更新方法。

由于软分叉升级温和的特点,再加上Schnorr弊端少,由核心开发者(Bitcoin Core)驱动,激活概率高。

比特币升级版

3.Schnorr签名技术细节分析

接下来,我们来分析一下Schnorr签名的技术细节:

3.@ >1 高安全性

Schnorr 签名的安全性已在数学上得到证明,而 ECDSA 尚未得到证明。虽然ECDSA多年来一直没有出现安全问题,但它就像一座从未喷发过的火山,沉寂了许久,却不知道有一天它会不会突然喷发。并且经过数学证明的算法必须比可能存在“隐藏危险”的算法更值得信赖。

根据David Pointcheval、Yannick Seurin等学者的数学证明[5-6],我们知道在随机预测模型中,很难假设椭圆曲线离散对数问题,很难突破 Schnorr 签名。唯一的办法就是解决离散对数问题。

因此在某种程度上,Schnorr 签名更安全且无需信任。

另外,Schnorr 签名不具有延展性,这在与 ECDSA 的对比中可以得到充分证明,ECDSA 是一种延展性的签名算法。具体来说,基于 ECDSA 生成的签名,对于给定的消息,攻击者可以在不知道密钥的情况下生成同样有效的新签名。在比特币上也专门提出了 BIP146 来解决这个问题。但是,Schnorr 签名本质上是不可扩展的,可以直接规避这个安全问题。

3.2 支持签名聚合,节省存储空间

签名聚合主要是指多个签名的聚合。多重签名(简称多重签名)是比特币中控制资金使用的一种技术。例如,我们常见的“2 of 3”多重签名要求3个授权方中至少有2个签署交易才能使用资金。

火线视点:为什么Schnorr签名被誉为比特币Segwit后的最大技术更新

比如上图4是一个“2 of 3”多签输入脚本,可以看到红框是2个ECDSA的签名,有了这2个签名,资金就可以合法使用了。但是ECDSA的多重签名并没有做任何签名的聚合,只是简单的把每个签名放在输入脚本中,两个签名者的公钥也需要分别放在输入脚本中。如果存在“9 of 10”多重签名,则需要在区块中存储 9 个签名和 9 个公钥,占用大量空间。但是如果使用 Schnorr 签名,这个问题可以得到改善。 Schnorr签名可以通过一种称为Key Aggregation的技术将任意“m of n”多重签名中的m个签名聚合为一个签名,并且m个签名者的公钥也可以聚合为一个公钥。无论m多大,在输入脚本中只需要填写1个签名和1个公钥,可以大大减少多重签名在区块中占用的空间。

火线视点:为什么Schnorr签名被誉为比特币Segwit后的最大技术更新

上图(图5)是Pieter Wuille对比特币历史数据做的模拟计算,比特币历史数据中的所有多重签名都是用Schnorr的聚合签名替换后,比特币区块的存储空间可以显着减少。以上只是Schnorr的一种聚合签名,即“在一个UTXO的单个输入中聚合多个签名”。其实Schnorr签名还有一个更强大的功能,可以“聚合多个签名”在UTXO的多个输入中”,因此整个UTXO只有一个Schnorr签名。但是这种聚合的前提条件苛刻,实现起来也比较复杂。

3.3 签名长度更短,节省存储空间

比特币升级版

根据 Pieter Wuille 提出的方案,比特币使用的 Schnorr 签名算法,公钥长度为 32 字节,签名长度为 64 字节。比特币目前使用的ECDSA签名算法,公钥长度为33字节,签名最多可达72字节。比特币区块很小比特币升级版,节省一点空间意义重大。

火线视点:为什么Schnorr签名被誉为比特币Segwit后的最大技术更新

例如图3中2输入2输出的UTXO,红框选中的部分为输入中填写的ECDSA签名,长度为72字节;后面是 33 字节的公钥。那么在使用 Schnorr 签名之后,签名和公钥占用的空间可以减少到 64 字节和 32 字节。其实 Schnorr 签名也有变种,将签名缩短为 48 字节,但 Pieter Wuille 并不推荐,因为它不支持批量验证。

3.4 加强隐私保护

Schnorr 可用于将多个密钥聚合为一个,它允许比特币“多重签名”钱包发送的交易只显示聚合后的一个,这使得多个钱包更加简洁和私密。过去,基于 ECDSA 的用户在使用“多重签名”钱包时,由于需要显示多个公钥,很容易暴露钱包的多重签名。但是,如果基于 Schnorr 签名,在链下聚合多个密钥,允许多重签名的交易看起来与普通交易(即单签名交易)没有什么不同。还是在上面的“2 of 3”多重签名示例中,可以看到提供签名的 2 方的公钥是公开的,即 2 方参与了多重签名是公开的。但是,如果使用 Schnorr 的聚合签名,公钥也聚合为一个,这样就不会透露哪 2 方参与了多重签名。聚合的多重签名甚至与一个普通的“单一签名”相关联似乎没有什么区别,这意味着外界甚至不知道它是一个交易多重签名。这极大地保护了多重签名参与者的隐私。

3.可批量验证5个签名,提高验证效率

Schnorr 签名由于其线性特性,自然可以支持批量验证。其实原理并不复杂。 Schnorr签名的验证过程是判断一个方程“s⋅G=R+e⋅P”是否成立。其中,“s=r+ex”、“R=r⋅G”、“P=x⋅G”,带入上式,变为“(r+ex)⋅G=r⋅G+ex ⋅ G" ,根据乘法分配律,不难看出等式成立。而批量验证,即当有n个这样的方程S1⋅G= R1+e1⋅P1, ..., Sn⋅G=Rn+en⋅Pn需要验证时,我们可以把它们的左边全部相加,而右边也把它们都加起来,这样你只需要验证一次等式是否为真,就可以判断这n个签名是否都合法了。

而最初验证n个方程时,计算S1⋅G, S2⋅G,..., Sn⋅G需要n次乘法,现在可以组合为(S1+S2+..... .+Sn)⋅ G ,只需要做n-1次加法和1次乘法,大大提高了验证效率。

Schnorr 签名的线性特性是与生俱来的,因此即使来自不同用户、不同 Tx 甚至不同区块的签名也可以组合起来进行批量验证。一个新的全节点在同步区块数据时需要做大量的验证工作。如果比特币采用 Schnorr 签名,批量验证可以显着提高全节点的同步速度。

3.6 一些缺点

上面提到了Schnorr签名的优点。事实上,这些好处是有代价的。由于 Schnorr 聚合私钥签名的特点,需要参与方之间进行多轮交互,这比过去的 ECDSA 更麻烦。而且它对随机数的要求比较高,必须保证随机数不容易被攻击者猜到,一些传统的伪随机数生成方法可能不适合。同时,PC计算这些签名和生成随机数的过程比较繁琐,这也导致发送交易的步骤略有延迟,需要PC消耗更多的计算带宽资源。但是,以目前的技术,这些问题是可以在一定程度上得到解决和克服的。

4.总结

Schnorr签名比ECDSA更安全可信,顺便也带来了比特币链上空间的扩展,使得比特币的性能略有提升同时,Schnorr签名还可以保护隐私多签名和闪电网络等技术的参与者。结合 Taproot,更多的智能合约脚本可以增加隐私。目前该提案由Core团队成员推动,采用软分叉方式进行温和升级。未来顺利激活的概率非常高。我也希望 Schnorr 签名能够为比特币和区块链世​​界带来更多新鲜的技术。活力。

参考文献

比特币升级版

[1]

[2]BIP340:

[3]BIP341:

[4]BIP342:

[5]DavidPointcheval,数字签名和盲签名的安全参数

[6]YannickSeurin,随机 Oracle 模型中 Schnorr 型签名的精确安全性

本研究报告官网链接:

打开链接:,输入提取码:yvga,即可得到本报告的PDF版本;

或扫描下方二维码获取此报告:

火线视点:为什么Schnorr签名被誉为比特币Segwit后的最大技术更新

关于火币区块链研究院

火币区块链应用研究院(简称“火币研究院”)成立于2016年4月,自2018年3月起,以泛区块链领域为研究对象,致力于全面拓展区块链各领域的研究探索,以加快区块链技术研发,促进区块链产业应用,促进区块链产业生态优化为研究目标。主要研究内容包括区块链领域的行业趋势、技术路径、应用创新、模式探索等。火币研究院将本着公益、严谨、创新的原则,与政府、企业、高校等机构以多种形式开展广泛深入的合作,搭建覆盖区块链全产业链的研究平台,从而帮助区块链行业。行业专业人士提供扎实的理论基础和趋势判断,推动整个区块链行业健康可持续发展。

联系我们:

查询邮箱:

huobiresearch@huobi.com