什么是 Schnorr 签名?

news/2024/11/20 22:08:59/

在密码学中,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://www.ppmy.cn/news/75277.html

相关文章

SpringBoot 一个注解,优雅的实现重试机制retry

1&#xff1a;POM配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.…

Godot4节点树右键菜单添加自定义选项

前言 查看godot的源码推荐使用在线版vscode直接从github上看。&#xff08;直接把网址的com改成dev即可&#xff09; 重点查看以下源码 scene_tree_dock.h scene_tree_dock.cpp 开始 tool extends EditorPluginvar window var scene_menustatic func find_child_by_class(no…

C语言中链表经典面试题目——设计循环队列

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;数据结构 &#x1f525;座右铭&#xff1a;“不要等到什么都没…

【Unity】UGUI基础控件的使用介绍

UGUI基础控件的使用 一、基本介绍二、UI控件介绍1. Text(文本)2. Image(图片)3. Button(按钮)4. Input Field(输入框)5. Toggle(开关)6. Slider(滑动条)7. ScrollBar(滚动条)8. DropDown(下拉列表)9. Panel(面板)10. ScrollRect(滚动视图)一、基本介绍 Un…

Chatbot UI老外在用的gpt网页版 搭建方法分享!

新建了一个网站 https://ai.weoknow.com/ 每天给大家更新可用的国内可用chatGPT资源 Chatbot UI 高仿ChatGPT官网&#xff0c;中文还支持贼好&#xff0c;界面美观度间距还需要打磨。是老外做的吗&#xff1f; ​ 环境部署 更新环境 apt update -y && apt upg…

SpringCloud学习-实用篇04

以下内容的代码可见&#xff1a;SpringCloud_learn/day04 1.初始MQ 同步通讯和异步通讯 微服务间通讯有同步和异步两种方式&#xff0c;同步通讯就像打电话需要实时响应&#xff0c;异步通讯就像发邮件不需要马上回复。两种方式各有优劣&#xff0c;比如打电话能立即得到响应&a…

Kali-linux分析密码

在实现密码破解之前&#xff0c;介绍一下如何分析密码。分析密码的目的是&#xff0c;通过从目标系统、组织中收集信息来获得一个较小的密码字典。本节将介绍使用Ettercap工具或MSFCONSOLE来分析密码。 8.2.1 Ettercap工具 Ettercap是Linux下一个强大的欺骗工具&#xff0c;也…

08 集合框架1

什么是数据结构? 存储数据,组织数据的方法,就是对数据做增删改查的操作 常见的数据结构有哪些?各自的优缺点是什么? 数组:擅长修改 查找操作,不擅长增加 删除操作 链表:有单项链表和双向链表,擅长增加和删除操作,不擅长修改和查找的操作 队列:擅长操作头和尾,先进先出,…