主页 > imtoken官方地址 > 区块链替代签名方案优缺点对比,Schnorr签名最适合比特币

区块链替代签名方案优缺点对比,Schnorr签名最适合比特币

imtoken官方地址 2023-03-25 07:10:50

2021-06-19 区块链替代签名方案优缺点对比,Schnorr签名最适合比特币

作者:Leland Lee(独立)和 Dev Ozha(加州大学伯克利分校/前 Tendermint)

区块链替代签名方案优劣势对比,Schnorr签名最适合比特币

(图:有时我们需要多个签名才能完成工作)

具有讽刺意味的是,一些价值数十亿美元的加密货币本身并不支持多重签名。 其中,m-of-n的签名者需要对一笔交易进行授权。 我们不需要试用,因为也许我们只设计了一个私钥[0]。 但这不是我们想要生活的世界,因为没有人愿意因为智能合约错误或私钥丢失而损失数百万美元。

今天,我们将研究用于 UTXO 和账户模型的各种交易签名多重签名方案。 请注意,某些场景仍在积极研究中,并且会有多个具有不同属性的结构。 如果读者因为本文涉及的技术内容太多而不想看这些枯燥的东西,可以直接跳到“Tradespace”部分比特币合约例子,看看各个签名方案的优缺点。

在目前的情况下,现有的区块链采用了几种不同的系统供多个所有者控制同一个区块链代币,以太坊基于智能合约,比特币基于脚本(如 P2SH)。

基于智能合约的例子:Ethereum、Tezos、EOS、Vechain、ETC; 基于脚本的示例:比特币、莱特币、Iota、Cardano、Zcash[1]、NEO、DASH、Decred; 内置客户端:Stellar)和Ripple; 自定义密码系统:GRIN[2] 和 Monroe[3];

1. 签名如何运作

区块链替代签名方案优劣势对比,Schnorr签名最适合比特币

为了在任何区块链上发送有效交易,必须采取几个步骤:

构建一个有效的交易; 使用账户对应的私钥或UTXO签署交易; 将已签名的交易提交给网络; 矿工(或节点验证者)验证交易和签名; 交易被放入区块并更新相关的区块链状态;

2. 非密码技术及其存在的问题

智能合约:虽然基于智能合约的多重签名账户提供了很大的灵活性(无限定制),但它们在代码、语言、虚拟机和编译器方面历来存在缺陷。 由于人为错误,数亿美元的区块链代币被永久锁定。

比特币合约爆仓家破人亡_比特币合约例子_比特币合约对手盘

脚本:与智能合约平台不同,比特币有一种更原始​​的脚本语言。 区别也很明显:非图灵完备,非编译,没有虚拟机,没有“状态”的概念。 这是否会降低加密货币的用处将在别处进行辩论。 但更重要的是,它具有针对多重签名的特定操作码。 在比特币和比特币的相关分叉中,有一个名为 Pay-to-Script-Hash 的特殊脚本,用于创建多重签名账户。 在这里,读者可以找到深入的解释。

比特币的多重签名地址和以太坊的多重签名钱包都要求在发送交易时提交所有相关签名。 我们今天将探讨的一些方案只需要提交一个签名,从而节省宝贵的链上空间,并可能使地址与单个私钥地址无法区分(增加隐私)。

3、多种加密签名技术

在本文中,我们探索了向区块链协议添加多重签名的各种技术。 请注意,这些技术都不是万灵药,因为在决定哪种技术最适合特定情况之前,需要对每种方法进行各种权衡取舍。

1. Shamir 秘密共享算法(SSS)

区块链替代签名方案优劣势对比,Schnorr签名最适合比特币

注意:这不是经典意义上的多重签名,尽管此处的讨论提供了其他形式的加密多重签名的反例。

这里使用一个私钥来派生 n 个分片,其中需要 m 来重建私钥。 该方案通常用于密钥恢复。 如果用户丢失私钥,可以利用用户分发给不同好友的碎片重建原始密钥。 但是,它不适用于多重签名,因为:

必须生成私钥才能派生分片; 在签署交易之前,必须从分片中重新组装私钥;

这意味着有一个信任生成和重组的步骤,这是一个失败点。 此外,个人分片持有者对他们提供的产品没有发言权,只有分片。 可信硬件减轻了信任生成和签名问题,但这会导致侧信道攻击、可用性等问题。

尽管如此,应该注意 SSS 的一些独特属性,这些属性允许在不修改底层密钥/私钥的情况下创建尽可能多的不同共享集。 所以,如果 Alice 最初持有 10 个秘密,而 Bob 不是朋友,而是秘密持有者,Alice 可以重新生成 9 个秘密并将它们交给其余的可信方(他们希望销毁旧的持有部分,使 Bob 的秘密持有无用)。

2.门槛ECDSA

比特币合约例子_比特币合约爆仓家破人亡_比特币合约对手盘

区块链替代签名方案优劣势对比,Schnorr签名最适合比特币

在阈值 ECDSA 方案中,我们消除了 Shamir 方案中的一个漏洞。 在这里,我们描述了 Steven Goldfeder 在他的 ECDSA MPC 论文中率先提出的一种最新构造,该构造在密钥生成和签名效率方面优于以前的 ECDSA 工作。

使用分布式密钥生成 (DKG) 方案,所有密钥持有者都参与为自己生成私钥和公钥的交互过程。 这确保任何一方都不知道真正的私钥。 在生成此构造之前只能使用一个可信方,因为计算时间对于两个以上的参与方来说太长了。

据了解,Keep Network 和 Kzen Networks 都在使用这种阈值 ECDSA 方案。

3. 阈值 ED25519

区块链替代签名方案优劣势对比,Schnorr签名最适合比特币

ECDSA 的一个问题是由于签名算法的复杂性,门限签名很复杂。 但是对于其他的签名方案,比如EdDSA(Edwards Curve Digital Signature Algorithm),尤其是Curve Edwards25519,其签名方案ED25519具有相对更高效直接的门限签名。 用户生成自己的密钥,然后有一个聚合步骤来创建一个单一的公钥,还有一个用于交易签名的三轮交互协议。

Kzen Networks 已经实现了 ED25519 门限签名的参考库,Stellar [4]、Near Protocol 和 Cosmos 使用相同的曲线但没有实现密码门限签名。

4. Schnorr 签名

区块链替代签名方案优劣势对比,Schnorr签名最适合比特币

在比特币中,Schnorr 签名是签名聚合的一种形式。 与使用随密钥数量线性增长的 P2SH 相比,签名聚合允许使用恒定大小的签名。 验证者不需要知道签名者的个人公钥,增加了隐私性。 在这方面,Blockstream 正在大力推动将这项技术应用于比特币。

在 Schnorr 签名方案论文(第 5.3 节)中,有几种方法可以实现 m-of-n 多重签名,并进行各种权衡,在某些方案中,用户提供自己的密钥,在其他方案中,必须有 DKG。 一般来说,至少有一轮密钥生成和交易签名通信,交易签名不能很好地扩展到大 m 或 n。

比特币合约对手盘_比特币合约例子_比特币合约爆仓家破人亡

5. BLS签名方案

区块链替代签名方案优劣势对比,Schnorr签名最适合比特币

所谓BLS签名,全称是(Bohen-Lynn-Shacham)签名方案,在签名集很大的情况下非常有效。 换句话说,我们可以有 2-of-10 或 2-of-1000 多重签名方案,并且与普通签名方案在设置和签名时间上几乎没有区别。 对于设置阶段,唯一需要做的就是为每个私钥生成成员密钥,这只需要一轮通信。 由于用户提供自己的私钥比特币合约例子,因此可以使用 HD 推导等技术轻松管理多个密钥。 用户离线签署交易,单个聚合器聚合签名并提交。

这种使用成员密钥的特殊构造是相当新的,另一种方法是利用 Shamir 秘密共享方案(正在使用 dfnity 和 dash),但需要可信方或 DKG。 BLS 签名方案的一个缺点是它的签名验证可能很慢,比 ECDSA 慢一个数量级。

4.平衡空间

从远处看这些技术时,我们可能会认为有些技术优于其他技术。 不幸的是,当我们深入权衡领域时,我们发现情况并非如此。 有些技术更适合较大的签名者群体,有些技术更适合低带宽环境。 在这里,我们探索了一个非详尽的属性列表来分析上述每一种技术。

Preimage:是否有必须拆分的私钥?

可信设置:是否存在生成密钥的单个实体,或者是否存在分布式密钥生成方案?

检测多重签名:区块链的查看者能否确定特定地址是否为多重签名地址?

高清推导:是否可以为相关的加密过程设置硬件确定性**?

(用户可以使用像 bip32 这样的技术,这样他们只需要记住自己的种子而不是一堆私钥)

权重:是否可以为特定的私钥分配不同的权重? (例如:1-of-2多重签名,其中**holder A的权重为2,**holder B的权重为1,也就是说A不需要B的签名,但是B总是需要A ).

比特币合约对手盘_比特币合约爆仓家破人亡_比特币合约例子

能见度

签名者隐私:区块链的查看者能否确定谁是交易的特定签名者? 签名大小:多重签名交易是否需要更多的链上空间,空间大小是否随签名者数量而变化?

时间

**生成时间:需要多长时间生成**,**生成时间会随着参与人数的增加而增加吗? **Generation rounds:如果**generation是交互的,参与者需要交互多少次? 验证时间:验证签名需要多长时间? 签名时间:签署交易需要多长时间?

符号

Interactive:签署一笔交易需要多少轮通信? 曲线效率:虽然其中一些技术适用于所有曲线,但有必要考虑曲线效率和辅助因子选择等问题。

区块链替代签名方案优劣势对比,Schnorr签名最适合比特币

图:上述方案的权衡考虑。 请注意,每个方案都有多个结构,从而产生不同的属性。

五、未来发展

尽管有许多不同的技术可以为区块链启用多重签名帐户,但我们必须认识到协议中的设计注意事项。 其中一些技术需要更改底层协议,而另一些则不需要。 协议设计者应该意识到用户体验和校对未来密码学进步的隐含权衡。

有趣的事实:签名比发送交易有更多用途。 它们可用于权益证明系统中的块签名、较小区块链的聚合签名以及交易压缩。

6.有趣的问题

比特币合约例子_比特币合约爆仓家破人亡_比特币合约对手盘

现在您对加密多重签名有了一些了解,在决定实施协议时选择哪种签名方案时,这里有一些值得探讨的问题:

是否存在需要能够区分链上的多重签名账户和单签名账户的用例? 阈值密码术提供了一个个人 ** 签名者未知的属性,这是有益的还是有害的? 是否有可能有一个允许选择性披露的签名方案,其中签名者为某些交易而被披露而不为其他交易? 是否可以有一个签名方案只显示签名者的一个子集而不是所有签名者? 是否可能出现签名者无法确定交互步骤中的其他签名者是谁的场景? HD 钱包不可用时**管理如何工作? 对于BLS方案,可以使用HD**,但需要生成其他成员**。 当用户失去会员资格时,协议应该是什么样子**? 多重签名应该完全在加密领域,还是应该在智能合约/脚本和加密之间取得平衡? 是否存在签名大小根本无关紧要的情况,因为签名被丢弃,或者有一种新的压缩形式?

脚注

[0] 从技术上讲,假设存在加密签名,所有区块链都有一种本地多重签名形式。 然而,对于任何一种签名算法,都很难找到一种有效的门限签名方案。

[1] zcash 目前使用 P2SH,在即将到来的 Blossom 更新中它将切换到自定义加密结构。

[2] GRIN是唯一使用基于密码学的多重签名方案的加密货币,类似于比特币的保密交易。 这种方法的一个缺点是它是根据他们的协议定制的,很难推广。

[3] Monero 仅支持 n-of-n 和 (n-1-of-n) 多重签名方案,前者与 Splitkey 非常相似。

[4] Stellar 有多重签名,但不是在密码学中实现的,而是通过使用他们的脚本语言实现的。

[5] 请注意,对于 UTXO 模型,有一个生成公钥的一次性交互步骤,这是用户想要花费的解锁脚本所必需的。

感谢 Tarun Chitra、Joyce Yang、Dan Robinson、Jeremy Rubin、Jeremiah Andrews 和许多其他人审阅和解释本文中提到的各种加密技术。

预览:下篇文章,译者将重点翻译Schnorr签名和BLS签名两大技术方案。 前者很有可能应用于比特币,而后者也有非常有意义的应用场景。

分类:

技术要点:

相关文章: