什么是 Schnorr 签名?

article/2025/10/4 5:34:22

在密码学中,Schnorr 签名是由 Schnorr 签名算法生成的数字签名。

与大多数区块链不同,BTC自其早期以来基本保持不变,大多数升级都是有限的,并旨在增强网络的效率而不是功能。BTC协议的更新是非常罕见的,并且通常用于技术增强,以确保网络的稳定性和安全性。

BTC有一个重要的升级是 Taproot,它引入了几个增强功能,其中包括 Schnorr 签名。相比于前一个用于密钥生成和验证的机制(ECDSA),Schnorr 签名提供了几个优势。

在本文中,我们将解释 Schnorr 签名是什么,以及它如何使 BTC 上的数字签名更快速和高效。

数字签名

数字签名是用于验证数字信息的真实性和完整性的数学方案。它们提供了一种证明消息是由特定发送者发送的(真实性)并且在传输过程中没有被更改(完整性)的方式。换句话说,数字签名与物理签名并没有太大的不同,发送者通过其独特的签名方式验证自己的身份和特定意图。

数字签名通常在软件分发、金融交易、合同管理软件以及许多其他需要检测伪造或篡改的情况下使用。

BTC中的数字签名的重要性在BTC白皮书中由中本聪(Satoshi Nakamoto)描述如下:

“我们将电子 coin 定义为一个数字签名链。每个所有者通过对前一笔交易的哈希和下一个所有者的公钥进行数字签名,并将其添加到 coin 的末尾来将 coin 转移给下一个所有者。收款人可以验证签名以验证一条链上的所有权。”

在 BTC 的情况下,数字签名用于验证与地址关联的私钥的所有者,而无需将私钥透露给网络。当一个交易被提交以被纳入一个区块时,BTC 网络上的节点会检查签名是否与消息匹配,并在匹配时接受该交易。

什么是Schnorr签名?

Schnorr 签名是一种数字签名方案,可以高效且安全地对交易和消息进行签名。它最早由克劳斯·施诺尔(Claus Schnorr)在 1991 年的一篇论文中描述。

作为一种利用椭圆曲线密码学的算法,Schnorr 被提议作为 BTC 技术路线图的一部分,用来替代椭圆曲线数字签名算法(ECDSA)。Schnorr 因其简单性、可证明的安全性和线性性而受到赞誉。由于 Schnorr 需要的计算量较少于 ECDSA,它被认为适用于 cryptocurrency 交易。

Schnorr 签名的优势

Schnorr 签名具有多种优势,包括高效性、增强的隐私性,同时保留了 ECDSA 的所有功能和安全假设。Schnorr 签名可以实现较小的签名大小、更快的验证时间,并且对某些类型的攻击具有改进的抵抗能力。

Schnorr 签名最显著的优势是密钥聚合(key aggregation)- 将多个签名聚合为一个签名,该签名对其密钥的总和有效。换句话说,Schnorr 使得多个合作方能够生成一个对他们的公钥总和有效的签名。

Schnorr-Sig-1.png
签名聚合使得多个签名者的签名可以合并为一个单一的签名。

密钥聚合能够降低交易费用并提高底层可扩展性,因为来自多签名设置的电子签名在区块中占用的空间与来自单方交易的签名相同。Schnorr 的这个特性可以用于减小多重签名支付和其他与多重签名相关的交易的大小,例如闪电网络通道交易。

Schnorr 签名的另一个重要特性是不可篡改性。在数字签名的背景下,篡改性是指攻击者能够修改有效签名,使得修改后的签名仍然有效,并认证不同于原始签名的消息。这可能对 cryptocurrency 应用造成严重问题,恶意攻击者可以修改交易签名以增加转移资金的金额或更改资金的接收者。

Schnorr 还提供了很多隐私优势。它可以让多重签名方案与传统的单一公钥无法从外部区分,Schnorr 使得观察者在链上活动中更难区分多重签名的支出和单一签名的支出。此外,在 n-of-m 多重签名设置中,Schnorr 使得外部观察者更难通过查看链上信息来确定哪些参与者在交易中签名,哪些没有签名。

Schnorr 在BTC中的应用

Schnorr 签名被实现在 BIP-340 中,作为 Taproot 软分叉升级的一部分,并于 2021 年 11 月 14 日在区块高度 709,632 上激活。与其他BTC升级提案一样,Taproot 被BTC矿工投票通过。Taproot 是一系列协议改进的集合,引入了几个新功能,改变了区块链上交易的处理方式,并开启了新的脚本能力。Taproot 被认为是自2017年采用隔离见证(Segregated Witness)以来BTC最重要的更新之一。

Schnorr 使BTC的数字签名更快、更安全、更易处理。值得注意的是,Schnorr 签名与BTC的密码学算法向后兼容,这样就可以通过软分叉升级引入它们。

Schnorr 签名与 ECDSA 的比较

正如前文所述,Schnorr 签名相对于 ECDSA 具有几个优势,包括更小的签名大小、更快的验证时间以及对某些类型攻击的改进抵抗能力。Schnorr 签名还允许进行签名聚合,这可以降低交易费用并提高可扩展性。

值得注意的是,虽然Schnorr 签名可能被认为更适合BTC,但 ECDSA 仍被广泛使用,并被认为是一种安全的签名方案。在选择 Schnorr 签名和 ECDSA 之间,可能会取决于具体的用例和安全要求。

欢迎关注 Chainlink 预言机并且私信加入开发者社区,有大量关于智能合约的学习资料以及关于区块链的话题!


http://chatgpt.dhexx.cn/article/GB9AEPVf.shtml

相关文章

史上最全的Schnorr签名方案和BLS签名方案的全面对比

前言 Schnorr 签名算法最初是由德国密码学家 Claus Schnorr 于 2008 年提出的,而来自区块链协议公司 Blockstream 的密码学家 Gregory Maxwell、Pieter Wuille 等人,则在 2018 年提出了一种名为 MuSig 的 Schnorr 签名方案,这也是我们即将探索…

Schnorr身份识别方案

Schnorr身份识别协议是又一个零知识证明协议,相比Fiamt协议有两点不同,一是其安全性依赖于离散对数的困难性,二是该方案使用乘法群,从而可以提前计算了一些参数,减小了证明者实时计算开销,特别适合计算能力…

Schnorr协议:非交互零知识身份证明和数字签名

本文首发公众号区块链之美!致力于区块链技术研究,传播区块链技术和解决方案、区块链应用落地、区块链行业动态等。 摘要:本篇文章介绍Schnorr的两大应用场景:从交互式零知识身份证明到非交互零知识身份证明、数字签名实现基本原理…

matlab实现rrt算法

这一部分算法强烈推荐两篇博客,尤其是第一篇博客介绍算法的原理非常简单易懂: https://blog.csdn.net/weixin_43465857/article/details/96451631 https://www.cnblogs.com/long5683/p/11795987.html https://blog.csdn.net/aoyousihaiqiuqihuang/articl…

RRT*算法的原理简介以及Python实现代码

![RRT算法原理图](https://img-blog.csdnimg.cn/20210420101155956.png?x-oss-p RRT大致流程 1.初始化随机树tree,以空的随机树开始添加节点,最开始只有Qinit。 2.执行sample函数,在地图中获得一个随机点Qrand。 3.遍历tree中所有节点&#…

RRT 算法研究(附 Python / C++ 实现)

RRT 算法研究 参考 机器人路径规划、轨迹优化课程-第五讲-RRT算法原理和代码讲解 机器人路径规划之RRT算法(附C源码) RRT算法(快速拓展随机树)的Python实现 《基于改进RRT算法的路径规划研究》 《面向室内复杂场景的移动机器人快速路径规划算法研究》 理论基础 RRT&#xff0…

RRT* 算法研究(附 MATLAB 和 Python 实现)

RRT* 算法研究 参考 机器人路径规划、轨迹优化课程-第六讲-RRT*算法原理和代码讲解 路径规划 | 随机采样算法:PRM、RRT、RRT-Connect、RRT* 基于采样的运动规划算法-RRT(Rapidly-exploring Random Trees) 《改进RRT算法在移动机器人路径规划中的应用研究》 理论基础…

算法实现1——一步一步实现RRT(算法原理及matlab代码)

首先我们得明白算法的原理,然后写出步骤。根据步骤可以写出主函数包括每一步的输入输出,怎么表示(基本的伪代码表示,当然如果可以也可以写成汉字形式的),最后一步一步写出代码,调试工作是必须的…

RRT、RRT-connect、RRT*等算法、A*等等路径规划算法

1 原始RRT算法运行结果:python,这里以2D_rrt及其衍生相关算法为例(边做边更新) CV搬运工们,先上github连接:(点个赞呗)(不想要拿github包的后面有现成代码)…

RRT路径规划算法

RRT路径规划算法 地图RRT算法原理路径平滑处理总结 RRT(Rapidly-Exploring Random Tree)算法是一种基于采样的路径规划算法,常用于移动机器人路径规划,适合解决高维空间和复杂约束下的路径规划问题。基本思想是以产生随机点的方式…

自动驾驶路径规划——基于概率采样的路径规划算法(RRT、RRT*)

目录 1. RRT算法背景1.1 RRT算法核心思想1.2 RRT算法优缺点 2. 经典RRT算法2.1 RRT算法流程2.2 RRT伪代码 3. 基于目标概率采样4. RRT*算法4.1 RRT与RRT*的区别4.2 RRT*算法详解4.2.1 RRT*算法总体伪代码4.2.2 重新选择父节点4.2.3 重新布线4.2.4 RRT*算法Choose Parent过程详解…

基于Python的RRT算法实现

基于Python的RRT算法实现 一、RRT算法原理及实现效果二、RRT算法python代码实现 本文为博主原创内容,未经博主允许不得转载。尊重他人知识成果,共同建立良好学习分享氛围,谢谢! 一、RRT算法原理及实现效果 关于RRT算法的原理&…

基于采样的路径规划算法RRT的优化:RRT*,Kinodynamic-RRT*,Anytime-RRT *,Informed RRT *

基于采样的路径规划算法RRT的优化 RRT * 算法Kinodynamic-RRT*Anytime-RRT *Informed RRT *关于搜索树按搜索方向生长的计算方法 基本的基于采样的路径规划算法RRT,在地图中进行采样取点,直到新的节点取到终点的一定阈值范围内,视为查找到路径…

RRT*算法图解

原文链接: https://blog.csdn.net/yuxuan20062007/article/details/88843690 【运动规划RRT*算法图解】 https://blog.csdn.net/weixin_43795921/article/details/88557317 尽管RRT算法是一个相对高效率,同时可以较好的处理带有非完整约束的路径规划问题…

快速扩展随机树(RRT)算法

RRT是Steven M. LaValle和James J. Kuffner Jr.提出的一种通过随机构建Space Filling Tree实现对非凸高维空间快速搜索的算法。该算法可以很容易的处理包含障碍物和差分运动约束的场景,因而广泛的被应用在各种机器人的运动规划场景中。 1. Basic RRT算法 原始的RR…

RRT算法及其部分改进算法介绍

基于采样的运动规划算法-RRT(Rapidly-exploring Random Trees) RRT:一种通过随机构建Space Filling Tree实现对非凸高维空间快速搜索的算法。该算法可以很容易的处理包含障碍物和差分运动约束的场景,被广泛的应用在各种机器人的运…

RRT*算法

简介 RRT* 和RRTconnect一样,是对RRT算法的优化。RRT算法的一个问题在于,它只是找到了可行的路径,不能保证路径是相对优化的。RRT*算法在每次迭代后,都会在局部更新搜索树,以优化路径。 多了两个过程,为&…

RRT算法介绍

RRT算法介绍 RRT算法原理介绍:RRT搜索树与树的生长相类似,即不断生长的同时又向四周扩散。算法以路径起点Xstart作为随机树T的根节点,树中节点xj用集合V存储,节点间的连接用连接边集E存储,所有节点xj满足属于集合Xfree…

【规划】RRT*算法图解

尽管RRT算法是一个相对高效率,同时可以较好的处理带有非完整约束的路径规划问题的算法,并且在很多方面有很大的优势,但是RRT算法并不能保证所得出的可行路径是相对优化的。因此许多关于RRT算法的改进也致力于解决路径优化的问题,R…

RRT算法简介

声明:本文为转载内容非原创,来源会在文末声明,绝无冒犯之意,只为一时复习之方便,侵权必删! 感谢原作者写出如此优秀的博文,让我对RRT算法有个大致的理解。 对RRT算法感兴趣,是因为…