主页 > imtoken官网 > 比特币算法演化成Schnorr签名算法是一种改进吗?

比特币算法演化成Schnorr签名算法是一种改进吗?

imtoken官网 2023-05-14 06:47:56

历史的车轮滚滚向前,科技的进步从未停止。 具有里程碑意义的特殊货币协议已经开始技术升级。 Schnorr 签名和主根已集成到比特币核心版本 0.21.0 中。

比特币的未来似乎从未如此光明。 现在,它有机会不仅在容量上而且在功能上超越所有其他区块链。

在使用比特币ECDSA椭圆曲线签名算法时,多重签名交易验证过程非常繁琐。 现在可以将一笔交易中的所有签名和公钥合并为一个签名和公钥,既无迹可寻又简单快捷?

其实在此之前,中本聪在设计比特币协议时,需要考虑签名算法的签名长度,是否开源,是否有专利,是否经过足够长的时间验证,性能和其他条件。 当时不仅是ECDSA,Schnorr签名在各个方面都不亚于ECDSA,能够满足以上条件。 但由于2008年之前的专利保护状态,可能也是这个原因,中本聪在设计比特币协议时并没有使用签名算法,最终选择了椭圆曲线数字签名算法(ECDSA)。 选择了特殊的椭圆曲线 secp256k1。

十年后的 2018 年 7 月,比特币开发者 Pieter wuille 编写了 BiP Schnorr,提出将比特币的签名算法改为 Schnorr 方案。 虽然Schnorr和ECDSA都采用了secp236k1曲线的椭圆曲线加密算法,但是由于Schnorr签名在密码学上的优势,在几乎同等安全的基础上构建多重签名交易更加方便。

当在比特币中使用时,Schnorr 比 ECDSA 有一些额外的显着优势

更安全:在随机预言机模型中很容易证明Schnorr签名的安全性,但对于ECDSA则没有这样的证明。

没有可扩展性问题:ECDSA 签名是可扩展的。 第三方可以在不知道私钥的情况下直接修改现有签名,并且仍然保持签名对交易有效。 比特币一直存在可扩展性攻击,直到激活隔离见证才得以修复,前提是使用隔离见证交易而不是传统交易。 Bip62 和 bip66 对此进行了详细描述。

线性:Schnorr 签名算法是线性的! 基于这个特性,我们可以构建一个更高效、更私密的区块链系统。 使用 Schnorr 签名的各方可以为其各自的密钥生成签名聚合。 例如,如果使用n个公钥进行签名,使用ECDSA,则有n个签名,也需要n次验证。 如果使用 Schnorr,由于其线性特性,仅保留最终叠加签名。 例如,无论输入多少笔交易,都可以将同一笔交易叠加成一个签名,对签名进行一次验证。

Schnorr 签名算法在性能、安全性、体积、可扩展性等方面几乎优于现有的比特币签名算法 ECDSA,而且 Schnorr sig 可以使用与 ECDSA 相同的椭圆曲线:secp256k1 曲线,因此提升非常小。

当然,除了签名算法之外,taproot 脚本语言用于定义比特币的使用方式。 比特币多签名地址既不能公开自己的“多签名”身份,又支持大量的多签名场景(链上交易只需要一个聚合公钥和一个签名),可以减少大量事务字节数,特别是对于需要高频操作的地址。 降低供应链上的交易成本可以节省大量成本。

以下是一些常见问题和解答:

问题和答案

比特币多重签名的钱包_比特币的多重签名是什么_比特币多重签名用于交易

Q:Schnorr签名可以用于M/N多重签名吗?

答:当然。 多重签名只是签名数m/n的一种模式,与签名算法无关。

Q:Schnorr的群签名可以生成或者模拟m/N签名吗?

答:不可能。 如果一组中有 n 个公钥,则必须有 n 个签名。 每个人生成签名时,在散列函数中代入组公钥p。

Q:如何衡量签名机制的安全性?

A:主要看两个方面:1、签名算法本身。 椭圆曲线。 目前,Schnorr 和 ECDSA 使用相同级别的曲线 secp256k1。 就签名算法本身的安全性而言,Schnorr 比 ECDSA 有更好的安全证明。

关于生物安全信息交易所所

Schnorr 签名算法

早在2019年5月16日,BCH就开启了硬分叉升级。 升级的主要内容是Schnorr签名算法和隔离见证恢复,这是Schnorr签名升级中最值得期待的功能,而隔离见证恢复是一种找回误发到隔离见证地址的BCH的恢复技术。

开发人员 marklundeberg 用户无需生成新地址即可开始使用 Schnorr 签名。 升级到BCH的好处如下:

提高签名数据的有效性:

因为签名是 64 字节的数据,与通常的 70 字节相比,交易可以减少 4%。 该功能实质上提高了每笔比特币现金交易所需签名数据的有效性(Schnorr 签名将区块链存储和带宽减少至少 25%,并使 BCH 网络更快、更高效)。 升级后,Schnorr 签名为 BCH 带来了隐藏常用支付渠道的能力。

比特币多重签名用于交易_比特币的多重签名是什么_比特币多重签名的钱包

增强隐私:

升级前,许多用户会故意使用多个签名发送交易以提高隐私性,而 Schnorr 签名会使所有用户的签名看起来像任何其他签名,从而大幅提高交易隐私性。 Schnorr 提供的属性以及 BCH 开发人员和基础设施提供商添加的一些扩展,例如钱包,将进一步增强隐私性和可扩展性。

对抗垃圾邮件交易攻击:

过去有垃圾邮件交易攻击。 攻击者希望用尽可能多的交易空间来阻止比特币。 他们的方法之一是经常从多个来源发送交易,因此交易中包含数十个签名。 这些签名占用了大量的空间,这是ECDSA签名留下的隐患。

Schnorr 避免了此类交易垃圾邮件攻击。 如果每笔交易只有一个签名,一个区块可以容纳更多的交易。 为了制造攻击,垃圾邮件交易生成者必须发送更多的交易来与更多的人竞争,因此攻击成本相对较高。 签名空间通常是交易的最大部分,因此攻击者没有优势。

当然,我们不能只看到好的一面,要什么都缺,偏激了就要消极。 特别是量子计算机的发展对区块链的安全性构成了威胁。 为了解决量子计算机对某些算法的攻击,NIST在2017年启动了后量子密码学的标准化进程,其中包括瑞士ABCMICT基金会推动的反量子签名方案,其中一种反量子算法基于后量子加密,最短的具有签名长度彩虹的抗量子签名方案,量子签名方案,是最有前途的。

2017年8月,刘进与数学家丁金泰教授在瑞士苏黎世附近的Cryptovalley创立并注册了abcmint。 彩虹签名是ABC数字货币的基础签名。 他们的愿景是支持国际上抗量子计算机破解算法的研究和应用。 研究内容包括国内外数学家对算法的发现、破解和改进,以及合适的算法在主流数字加密货币中的应用。

比特币算法进化为Schnorr签名算法是进步吗?

他们认为bip340是比特币从ECDSA改为Schnorr签名的提案,使用Schnorr签名,是比特币的一大倒退。 我们并不看好计算机安全专家提出的算法选择和改进。 我们更喜欢数学家提出的算法选择和改进。 Schnorr 签名很重要,应该像 litecain 一样用于长期测试运行。

BTC应该等BCH或者其他公链签下Schnor几年。 Schnorr签名的主要优点是“多人签名时签名长度最短”,缺点是“多人签名时最后一个人容易被骗”。

从密码学的角度来看,采用 Schnorr 签名是一种“大胆而草率的做法”,背离了“长期安全”的基本含义。

从密码学的角度来看,Schnorr 签名主要针对多重签名。 适合多重签名的场景是中心化且极其重要的场景,类似于核弹发射的十多个可验证程序。 或者去燕山核武器基地。 应该不是去中心化的场景,也不是发送比特币的场景。

比特币的多重签名是什么_比特币多重签名的钱包_比特币多重签名用于交易

简而言之:去中心化本身就是对多重签名的背离。

下面是一些简单的算法:

椭圆曲线的数量

签名算法 (ECDSA)

椭圆曲线数字签名算法 (ECDSA) 是为了响应 NIST 对数字签名标准 (DSS) 的要求。 由 Neal-Koblitz 和 victor-ECDSA 组成的椭圆曲线密码术 (ECC) 最早由 Scott 和 Vanstone 于 1992 年提出,用于数字签名。 算法仿真 (DSA)。

目前,比特币采用ECDSA椭圆曲线数字签名算法。 要对消息 M 进行签名,我们需要对其进行哈希处理,并将哈希视为一个数字:z = hash(M)。 我们还需要一个随机数或随机数K。我们不喜欢相信随机数生成器(有太多的毛刺,很多与错误的RGN相关的错误),所以我们通常使用rfc6979,并根据计算确定性K值我们的秘密和要签署的信息。

使用私钥PK,我们可以为消息M生成一个签名,签名包含两个数字:R(随机点的横坐标R=k×g)和S=(Z+R⋅PK)/k。 然后,使用我们的公钥 p = PK × g,任何人都可以通过检查点 (Z/S) × g + (R/S) × p 的 x 坐标是否等于 R 来验证我们的签名。

比特币算法进化为Schnorr签名算法是进步吗?

签名验证涉及倒数(1/s)和两点乘法,需要大量的计算。 在比特币中,每个节点都必须验证所有交易。 这意味着当你广播交易时,成千上万的计算机将不得不验证你的签名。 简化验证过程将非常有益,即使签名过程会更加困难。

其次,每个节点必须单独验证每个签名。 如果是N对M的多重签名交易节点,可能需要对同一个签名进行多次验证。 例如,具有 7-of-11 多重签名输入的交易将包含 7 个签名,网络中的每个节点都需要 7-of-11 签名验证。 话又说回来,像这样的交易会占用很多空间,而且你必须为此付出很多。

Schnorr 签名

Schnorr 签名算法由德国数学家、密码学家 Claus Schnorr 提出。 他于1990年申请了专利,美国专利4,995,082,2008年2月到期。目前,该算法可以免费获取。

比特币多重签名用于交易_比特币的多重签名是什么_比特币多重签名的钱包

Schnorr 签名生成略有不同,我们使用一个点 R 和一个标量 s 而不是两个标量 (R, s)。 与 ECDSA 类似,R 是椭圆曲线上的一个随机点 (R=k×g)。 签名计算的第二部分略有不同:

S=K+hash(P,R,m)⋅PK。 这里PK是你的私钥,P=PK×G是你的公钥,M是消息。 然后可以通过检查 s×g=R+hash(P,R,m)×P 来验证签名。

比特币算法进化为Schnorr签名算法是进步吗?

这个方程是线性的,所以方程之间的加法和减法可以完成并且仍然有效,这给了我们一些 Schnorr 签名的好处。

Schnorr 签名的批量验证

为了验证比特币区块链中的一个区块,我们需要确保该区块中的所有签名都是有效的。

对于 ECDSA 签名算法,每个签名都必须单独验证。 也就是说,如果区块中有1000个签名,我们需要计算1000次反转运算和2000次点乘运算,总共需要大约3000次繁重的计算任务。

通过使用 Schnorr 签名,我们可以添加所有的签名验证方程来节省一些计算能力。 对于具有 1000 个签名的块,我们需要验证:

(s1+s2+…+s1000)×G=(R1+…+R1000)+(散列(P1,R1,m1)×P1+散列(P2,R2,m2)×P2+…+散列(P1000,R1000,m1000) ×P1000)

这里我们有一堆加法(几乎没有计算能力)和 1001 次乘法。 我们需要为每个签名计算大约一次繁重的计算。

比特币算法进化为Schnorr签名算法是进步吗?

Schnorr 签名的密钥聚合

比特币多重签名用于交易_比特币的多重签名是什么_比特币多重签名的钱包

我们希望保证我们的比特币安全,所以我们可能希望使用至少两个不同的私钥来控制我们的比特币。 例如,一个在笔记本电脑或手机中,另一个在硬件钱包/冷钱包中。 因此,当其中之一遭到破坏时,我们仍然可以控制我们的比特币。

目前,它是通过 2/2 多重签名脚本实现的,这需要在交易中包含两个单独的签名。 使用Schnorr签名,我们可以用一对私钥(PK1,PK2)生成共享公钥p=P1+P2=PK1×G+PK2×G对应的共享签名。 为了生成这个签名,我们需要在每个设备上选择一个随机数(K1,K2),生成一个随机点RI=ki×G,将它们相加,计算出一个公共哈希(p,R1+R2,m),以及然后从每个设备中获取 S1 和 S2 (Si=ki+hash(P,R,m)⋅PKI)。 然后我们可以添加这些签名并使用对 (R, s) = (R1+R2, S1+S2) 作为我们在共享公钥 P 上的签名。没有人能说它是否是聚合签名。 它看起来就像一个普通的 Schnorr 签名。

这种结构存在三个问题。 首先,从用户界面的角度来看,要进行交易,需要进行几轮通信,计算公共 R,然后 - 签名。 使用两把私钥,我们只需要访问一次冷钱包:我们在在线钱包上准备一个无保留交易,选择K1,并记录R1=K1×g和无保留交易。 然后我们将数据发送到冷钱包并签名。 由于我们已经有了 R1,我们可以一次签署一个交易。 从冷钱包中,我们得到 R2 和 S2 并转回在线钱包。 在线钱包用先前选择的(K1,R1)签署交易,合并签名并广播签署的交易。 这与我们现在拥有的非常相似,但是一旦我们添加第三个私钥,一切都会变得更加复杂。 比如你有一笔财富,由10把私钥控制,存放在世界各地不同的安全位置,然后你需要进行一笔交易。 目前,您只需要遍历所有这些位置一次比特币的多重签名是什么,但如果您使用密钥聚合,则需要进行两次以组装所有 RI,然后进行签名。 在这种情况下,最好保持单一签名而不聚合,那么我们需要进行三轮通信:

选择一个随机数Ki和对应的RI=Ki×g,然后只告诉大家它的hash Ti=hash(RI),这样大家就可以确定你学习了其他随机数后不会改变主意;

把所有的数放在一起,计算出共同的R;

符号;

第二个问题是已知的恶意密钥攻击。 它们在这篇文章和这篇文章中都有很好的描述比特币的多重签名是什么,所以我不想详细讨论它们。 这个想法是,如果你的一个设备被黑客攻击(比如你的在线钱包)并且假装它的公钥是(P1-P2),那么它可以使用它的私钥 PK1 来控制共享资金。 一个简单的解决方案是在设置设备时使用相应的私钥对公钥进行签名。

还有第三个重要问题。 确定性 K 不能用于签名。 有一个简单的攻击方法,如果你使用确定性K,它可以让黑客得到我们的私钥。 攻击看起来像这样:有人侵入了我们的笔记本电脑并完全控制了两个私钥之一(如 PK1)。 我们可能会感到安全,因为我们的比特币需要 PK1 和 PK2 的聚合签名。 所以我们尝试像往常一样进行交易,准备一个未签名的交易和 R1 值,将它们转移到我们的硬件钱包,并在那里签名。 然后回到(R2,S2),我们的在线钱包出现问题,无法签名和广播。 我们再次尝试,但这次计算机被破解并使用了另一个随机值 R1#39;。 我们再次与我们的硬件钱包签署相同的协议,并将值 (R2, S2) 带回我们被黑的计算机。 然后发生了一些不好的事情,我们的比特币丢失了。

在这次攻击中,黑客获得了同一笔交易的一对有效签名:(R1, S1, S1, R2, S2) and (R13535353539;, S1\35 hashes (P, R1+R2, m) - hash column( P,R1\39;),m))。 我发现这是密钥聚合最不方便的特性:我们到处都需要好的随机数生成器来使用密钥聚合。

彩虹签名

比特币算法进化为Schnorr签名算法是进步吗?

Rainbow 是一个多元签名方案。 其层次结构基于不平衡油流 (uov) 签名方案。 彩虹层的额外结构使方案面临更多的密码分析技术,但提高了方案的效率。 Rainbow 提供快速签名和验证以及非常短的签名,但具有非常大的公钥。

Rainbow 增加了入围签名方案的多样性,但由于密钥容量较大,Rainbow 不适合作为通用签名算法来替代 fips186-4 中已有的算法。 特别是,大的公钥会使证书链变得非常大。 但是,某些应用程序不需要经常发送密钥。 对于这样的应用,Rainbow 提供了小而快的签名。

比特币的多重签名是什么_比特币多重签名的钱包_比特币多重签名用于交易