什么是 Schnorr 签名

Eddy 2020-07-08 15:45:20

在密码学中,Schnorr 签名是由 Schnorr 签名算法产生的数字签名。它是一种数字签名方案,以其简单高效著称,其安全性基于某些离散对数问题的难处理性。

下面用小写字母表示数字,比如:a = 42。同时我们将使用一些椭圆曲线(elliptic curve)上的点。这些点是一些满足椭圆曲线方程的大数对。我们将用大写字母来表示这些点,比如:A = (4, 68)。椭圆曲线上的点可进行一些代数运算。其上两个点可以相加可以得到近似随机的第三个点,表示为:C = A + B。某个点可以与自身相加多次:D = C + C + C。当我们讲一个点与自身相加多次时,我们称其为“乘以一个数”:D = 3  C。显而易见的,如果将一个点 A 与自身相加很多次(或者说将其乘以一个很大的数)然后得到一个点 B ,如果我们只是知道原始点 A 和结果点 B ,计算出与 A 相乘的这个大数是相当困难的。这里的“困难”意思是,如果要计算出这个“大数”,我们不能简单的用 B 除以 A ,只能不断的猜测一个值 x ,计算是否 x  A等于 B 。所以如果这个 x 的值非常大,甚至大于宇宙中所有原子数目的和,猜测这个 x 的值将花费一个难以接受的时间。同时如果某人持有正确的 x ,计算 x * A 是非常迅速的。

简介

众所周知,比特币应用椭圆曲线数字签名算法(ECDSA)来强化所有权。此种算法允许您使用一组数字(即私钥)来派生公钥。

此种算法的神奇之处在于,通过私钥来获得公钥很容易,然而反向操作却不可能。私钥既是进入比特币网络的护照。它允许您生成接收代币的地址。 

在本文中,我们将初步了解Schnorr签名算法,它是ECDSA的替代方案,并给比特币网络带来了不可思议的改变。

数字签名概述

数字签名的运行原理与最原始的手写签名类似,但却安全的多。人们可以耗费大量的时间和精力来伪造手写签名。但此种方式对于强大的数字签名机制来说却是不可能的,就算是给您几十万年的时间也不可能完成伪造。

数字签名的用例包含几个方面。最常见的便是向世界传达特定的消息。正如之前所提到的,您可以通过私钥(您需要保密的大量数字)来创建公钥。而此过程则可以通过secp256k1曲线的复杂数学运算来完成。并通过公钥来生成公共地址。

将公钥对外展示是绝对安全的。您可以将它公布在网站或Twitter个人简介上,这样其他人就可以验证您的身份。同样,您也可以将公共地址分享给其他人以便接受加密货币。

而私钥则允许您来创建数字签名。编辑信息并通过私钥来执行操作就形成了一条签名信息。任何人都可以将它与您的公钥作比较来检查签名的真实性。

然而这些又与比特币有什么关系呢?其实,任何一笔比特币交易都包含一条数字化签名信息,表明您正在发送一些属于您的代币。当该信息经过网络其他节点时,任何人都可以核查ECDSA签名是否与信息匹配。如果不匹配,则节点们就会决绝。

什么是Schnorr签名?

Schnorr签名则是一种完全不同的机制。它的运行类似于椭圆曲线数字签名,但却具有更多优点。事实上Schnorr签名早于ECDSA,所以很多人都想知道为何一开始不在比特币中应用该种机制。

一种可能的原因是,该机制的发明者Clasu P.Schnorr对它申请了专利。这些专利在比特币白皮书发布之前就已经到期(2008年初),但该机制当时却未全面标准化。所以,中本聪选择了更广泛接受的开源ECDSA。

Schnorr签名的优势在哪里?

相比于其他机制Schnorr签名要简单的多。所以,比其他选择要安全的多。乍一看可能意义并不大,但其却有一个强大的特性:直线性。 

通俗地讲,此特性使得该机制更加适合于某些操作,尤其是在多签名交易方面。现如今的比特币已经支持了多签名,但其中方式却不是最完美的。

当您创建一个多签名地址时,发送资金的用户并不会知道您为花费输入设置了什么条件。他们甚至也不知道正在向一个多签名设置中发送资金,唯一奇怪的是地址是以“3”为开头。

只有当您想要转移资金时才会显露它的本质。假设您使用了一个3-3设置(Alice、Bob和您)。当您想要花费5BTC时,你们三人必须提供公钥以及有效签名。当您将资金转移出改地址时,整个网络都可以通过查看区块链来了解其中发生的状况。 

从隐私角度出发,此种模式并不是很理想。另外,假如我们创建了一个更复杂的多签名(8-10),则我们将会占用区块链更多的空间。因为它将造成一个更加冗长的交易,所以会非常昂贵(请记住,交易中的字节越多,您需要支付的费用就越多)。

Schnorr签名被认为是隐私性和可扩展性的解决方案。正如您所见,它们支持签名聚合——将多个签名者的签名整合成单一签名。而这就使得“主签名”的长度与常规的单人签名相同,从而大大节省了空间。 

此外,混合签名使得观察者很难确定哪些人对交易进行了签名(或没签名)。也就是说此时的m-m机制中(资金在所有参与者完成签名后才能花费),您甚至无法辨别是单方交易还是多签名交易。

更为重要的是,Schnorr签名是进一步发展的基石。一旦实施,就可以利用它们来改进加密技术(例如原子交换和闪电网络)。

何时Schnorr签名将会应用到比特币中?

目前具体时间还不能确定。与比特币协议的大多数升级一样,Schnorr签名需要更多比特币社区用户的同意才能完成实施,而这可能需要一段时间。比特币的主要贡献者Pieter Wuille,Jonas Nick以及 Tim Ruffing已经提交了草案《比特币改进提案(BIP)》,但却需要更多的工作来实现。

Blockstream已经进行了实践——MuSig。该算法允许签名和密钥的聚合,并很可能成为比特币自有Schnorr签名机制的基础。

Schnorr签名可以作为软分叉集成到代码中,这就意味着改变不会分裂网络。相反,它将成为一种“选择性”升级。尽管我们乐观的认为它们的集成会在不久的将来完成,但也还是需要几年的时间才能达成共识。

总结

Schnorr签名是比特币发展史(目前)中最受瞩目的里程碑之一。只需一次升级,它们就可以提供更大的隐私和可扩展性优势。它们也很有可能成为比特币智能合约以及更先进结构(例如Taproot)进一步发展的敲门砖。


本文来源于 Eddy

免责声明:
1. 本文版权归属原作所有,仅代表作者本人观点,不代表币推儿的观点或立场。
2. 如发现文章、图片等侵权行为,侵权责任将由作者本人承担。