密码学 | 多重签名:基本概念

目录

摘要

[1 什么是多重签名?](#1 什么是多重签名?)

[2 多重签名的作用](#2 多重签名的作用)

[2.1 联名账户](#2.1 联名账户)

[2.2 提高安全性](#2.2 提高安全性)

[2.3 秘钥备份](#2.3 秘钥备份)

[3 比特币的多重签名](#3 比特币的多重签名)

[3.1 对比一](#3.1 对比一)

[3.2 对比二](#3.2 对比二)

[3.2.1 线性性](#3.2.1 线性性)

[3.2.2 不可延展性](#3.2.2 不可延展性)

[3.2.3 安全性证明](#3.2.3 安全性证明)

[3.2.4 效率高、占用空间少](#3.2.4 效率高、占用空间少)


⚠️原文: 多重签名:Schnorr 协议与 ECDSA 协议 - 知乎

⚠️**写在前面:**本文属搬运博客,自己留存学习。

摘要

  • 什么是多重签名?多重签名的作用?
  • 比特币为什么放弃 ECDSA 多签名方案而选择 Schnorr 多签名方案?

比特币是中本聪提出的加密货币,以太坊的加密货币是以太币。

1 什么是多重签名?

众所周知,一个 数字货币所有权 的三要素为:

  • 地址(Address)
  • 公钥(Public Key)
  • 私钥(Private Key)

地址 相当于大家的银行账户。公钥 由本人公开,用于加密和验证签名。私钥 用来进行解密和签名,是数字货币所有权的表征,相当于银行卡的密码。

看来公钥不太好和银行卡这个例子对应起来。

常规账户或者轻钱包都是 一个数字货币地址对应一个私钥,动用这个地址中的资金需要私钥的所有者发起签名才行。

常规账户采用的是单签名机制,即只要该地址对应的那 1 把私钥参与签名就行了。

在比特币中,多重签名技术 ------ 也叫 m-of-n 多重签名 ------ 用 n 把钥匙生成一个多重签名的地址,需要其中的 m 把钥匙才能花费这个地址上的比特币。比如说,某笔资金对应有 3 个私钥,并且要求至少有其中 2 把私钥参与签名才能动用,只有 1 把私钥参与签名则是无效的。

m-of-n 直译就是 n 个中的 m 个,因此 m<=n 就很好理解了。为什么只需要 m 把私钥参与就行了?答:应该是考虑到了 "灵活" 这一因素。要是每次都需要所有私钥才能签名,那么但凡有一把私钥外泄了,这个账户地址就用不了了😇

BitCoin Wiki 中是这样描述的,多重签名是指需要多个密钥来授权比特币交易,而不是一个密钥的单个签名。关于多签名的应用介绍,可查看 BitCoin Wiki

2 多重签名的作用

以下内容均来自 BitCoin Wiki

多重签名的三大作用:

  • 联名账户:把持有比特币的责任分给多个人,多方共同管理资产;
  • 提高安全性:避免单点故障,从而使钱包受到损害的难度大大增加;
  • 秘钥备份:m-of-n 的备份,丢失单个私钥不会导致钱包丢失。

2.1 联名账户

比特币网络上的标准交易可以称为 "单签名交易",因为转账只需要一个签名 ------ 与比特币地址相关联的私钥所有者的签名。然而,比特币网络支持更复杂的交易,这些交易在转移资金之前需要多个人的签名。这些通常被称为 m-of-n 交易。这个概念是,通过提供多个当事方的地址,比特币变得 "受限制",从而需要这些当事方的合作才能对它们做任何事情。这些当事方可以是个人、机构或编程脚本。

2.2 提高安全性

与账户地址关联的私钥可以分布在多台机器上,从而消除了任何一台机器作为单一故障点的可能性,因为恶意软件和黑客不太可能感染所有这些机器。所需私钥数量越多 ------ 即 m-of-n 中的 m 值越高 ------ 攻击者成功盗窃您的资金就越困难,然而实际上使用该钱包也会变得更加繁琐。

要求 n 个人中参与签名的人 m 越多,钱包会变得越安全,但是使用该钱包会变得越繁琐。

针对一个 2-of-3 的多签名钱包,你可以将自己的私钥分布在台式机、笔记本电脑和智能手机上,其中任何 2 个私钥都是转移资金所必需的,但任何 1 个私钥的泄露都不会导致资金被盗。

2.3 秘钥备份

这段不知道是不是翻译器的问题,不过看原文也不太懂它到底是什么意思😇

将多个密钥存储在不同位置的 m-of-n 钱包中可以用作备份。

例如,在 2-of-3 的多重签名钱包中,一个密钥的丢失不会导致该钱包的丢失,因为其他 2 个密钥可用于回收资金。备份的冗余为 n 和 m 之间的差值 n-m 。

例如,3-of-5 多重签名钱包的冗余为 2,这意味着仍可从中恢复任何 2 个密钥的丢失。

个人理解:对于一个 m-of-n 钱包,丢了其中的 n-m 把私钥也不要紧,这个钱包还能继续用。但对于一个 n-of-n 钱包,只要丢了其中的 1 把私钥,这个钱包就不能用了,因为它的忍耐度是 n-n=0,即没有忍耐度。

3 比特币的多重签名

比特币协议为什么放弃了 ECDSA 多签名方案,选择了 Schnorr 多签名方案?

警告:有一点 ECDSA 多签名方案和 Schnorr 多签名方案的基础知识会没那么难受。

3.1 对比一

ECDSA 签名占据空间大,而 Schnorr 签名占据空间小,因为它支持 多重签名聚合

多重签名聚合:多个参与方可以基于一个聚合公钥共同生成一个聚合签名。

BCH 开发者 Lundeberg 提到,聚合签名 的优势在于,在一笔交易中,所有参与的输入只需要一个 合并签名 便能够完成。用一个签名替代多个签名的好处是显而易见的。这能大幅减少数据量。预计通过 Schnorr 签名,区块链的存储和带宽将至少减少 25%,从而使 BCH 网络运行得更快、更高效。同时,这也能够有效防止垃圾交易攻击。

攻击者试图通过占用比特币网络的交易空间来拥堵比特币网络,他们的策略之一是频繁地从多个来源发送交易,这些交易中包含了数十个签名。在使用 ECDSA 签名算法的情况下,这些签名会占用大量的空间。

Lundeberg 还指出,Schnorr 机制的另一个重要特性是其 抗篡改能力:即使在聚合签名的情况下,Schnorr 签名也是不可篡改的,除非所有的签名者共同重新创建一个新的签名。这增强了交易的安全性,确保了签名的完整性和交易的不可篡改性。

后文接着进行对比。

3.2 对比二

Schnorr 签名相比 ECDSA 签名具有:

  • 线性性
  • 不可延展性
  • 安全证明性
  • 效率高、占用空间少
3.2.1 线性性

Schnorr 签名是线性的,这一点非常重要。使用 Schnorr 签名的各方可以生成对其各自密钥的签名聚合。以这一特性作为基础,可以构建更高效和隐私性更强的区块链系统。

没有 Schnorr 签名基础的小白看不懂很正常。

3.2.2 不可延展性

ECDSA 签名存在一个可塑性问题,即不知私钥的第三方可以修改给定公钥和消息的一个有效签名,以生成另一个对同一私钥和消息的有效签名。这个问题在 SegWit 激活后得到了解决。BIP62 和 BIP66 文档中详细讨论了这一问题。而采用 Schnorr 签名则能够避免此类情况的发生。

简单来说,不知道私钥的攻击者声称自己知道私钥,且 ECDSA 签名还检测不出来。

3.2.3 安全性证明

在随机预言机模型中,Schnorr 签名的验证过程极为简洁,而 ECDSA 签名则不支持这种验证。Yannick Seurin 在 2012 年发表了关于 Schnorr 方案的完整性证明。该论文题为 On the Exact Security of Schnorr-Type Signatures in the Random Oracle Model,为 Schnorr 签名提供了精确的安全性证明。

随机预言机模型是一种在密码学中使用的理想化模型,用于分析基于哈希函数的密码协议的安全性。在这个模型中,预言机是一个黑盒子,它能够随机生成哈希值,这些哈希值与输入的消息之间存在一对一的映射关系,但预言机本身不泄漏任何关于其内部工作原理的信息。

3.2.4 效率高、占用空间少

与 ECDSA 签名相比,Schnorr 签名使得链上交易所占用的存储空间更少,从而释放了更多的存储资源。同时,确认交易所消耗的时间也显著减少。


原文还提到了以下方案的具体操作:

  • ECDSA ------ 单签名
  • Schnorr Signatures ------ 单签名
  • Naive Schnorr Multi-Signatures ------ 多签名 + 聚合 + 不安全
  • Bellare-Neven Multi-Signature ------ 多签名 + 非聚合 + 安全
  • MuSig ------ 多签名 + 聚合 +安全

MuSig 就是 Naive Schnorr Multi-Signatures 的升级版,它们都基于 Schnorr 签名。

相关推荐
西京刀客2 小时前
密码学之柯克霍夫原则(Kerckhoff原则)
安全·密码学
祁许2 天前
【Golang】手搓DES加密
开发语言·golang·密码学
白#泽5 天前
信息安全设计实验3 1-3学时
ai·密码学
看星猩的柴狗6 天前
现代密码学|古典密码学例题讲解|AES数学基础(GF(2^8)有限域上的运算问题)| AES加密算法
密码学
Nonullpoint.6 天前
对称加密与非对称加密:密码学的基石及 RSA 算法详解
java·计算机网络·算法·网络安全·密码学
it技术分享just_free7 天前
软考教材重点内容 信息安全工程师 第 3 章 密码学基本理论
网络安全·信息安全·密码学·软考
abments9 天前
JavaScript逆向爬虫教程-------基础篇之JavaScript密码学以及CryptoJS各种常用算法的实现
javascript·爬虫·密码学