风险提示:请理性看待区块链,树立正确的货币观念和投资理念,不要盲目跟风投资,本站内容不构成投资建议,请谨慎对待。 免责声明:本站所发布文章仅代表个人观点,与CoinVoice官方立场无关

Binance Research | 零币协议中的缺陷

加密谷Live
2020年02月11日

Binance Research | 零币协议中的缺陷

作者 | Binance Research

Binance Research | 零币协议中的缺陷

  • 零币协议(Zerocoin protocol)是为 BTC 提供强匿名性的第一个尝试。尽管未在 BTC 协议中实现,但在 2015 年被实现为独立的数字货币:ZCoin。

  • 为了解决交易可追溯性等现有问题,零币协议变得非常流行,并在多个隐私币中实现,如 PIVX、SmartCash、Zoin、Veil 等。

  • 然而,协议中的一些缺陷导致了运用零币协议的各种数字货币蒙受了巨大损失和事故。

  • 从那以后,遭受损失的大部分数字货币都脱离了零币协议,转而采用替代的加密协议和其他隐私解决方案。其中,最常用的替代方案是 RingCT、隐地址的使用、Super Sonic 和 Sigma。这些协议补充了现有的隐私协议,如 zk- SNARKS 和 MimbleWimble。

  • 无论如何,零币协议对整个加密行业起到了突破性的贡献。它是为基于 UTXO 的区块链提供匿名功能的首批解决方案之一,并为区块链解决方案中所有隐私功能的发展铺平了道路。

在成立的 7 年中,零币呈现了一段伴随着安全缺陷和曲折的动荡历史。

这份报告涵盖了一些最重要的事件,并从不同项目的角度关注 2019 年的事件及其后续。

Binance Research | 零币协议中的缺陷
Binance Research | 零币协议中的缺陷零币的概述

1.1 零币协议说明

零币协议允许匿名交易,而不需要经过任何受信任的第三方 (如 BTC 混合器)。相反,混合过程发生在协议层面。 2013 年,密码学家 Matthew D. Green 和他在约翰·霍普金斯大学信息安全研究所的学生开发了这项技术。这项技术的核心,即零币的工作方式与混合池类似,但也存在一个显著的区别,即用户不必信任任何第三方;tumbler 可以直接在协议层面实现。 该系统依赖于两个代币:basecoin(如 BTC) 和零币。通过销毁用过的币来铸造新币,并且赎回没有交易历史的新币。由于这种赎回 / 铸造过程,basecoins 的历史无法追溯到其原始用户。 例如,Alice 想向 Bob 发送 1 个 BTC。她可以通过零币协议来铸造一个零币,并将零币发送给 Bob。同时,将 1 个 BTC 转移到一个无法支出的代币中储备起来。无论何时 Bob 想要花费其 1 个 BTC 中的一部分,他都可以使用自己的零币作为一个零知识证明。 图 1 从交易角度看零币机制Binance Research | 零币协议中的缺陷
零币协议依赖于初始的信任设置;比如需要信任某人来生成初始参数,然后销毁这些参数。例如,ZCoin 依赖于 RSA 累加器,这需要生成两个较大的素数。具体来说,它依赖于从 RSA 因数分解质询生成的 RSA-2048 参数。 零币协议被认为是对 BTC 协议的一种延伸,但由于几个原因没有得到 BTC 开发商的批准,即计算时间过长,对最终结果的有效性存在一些争议,以及提议的修改是否与最初的 BTC 白皮书偏离太大。 相反,ZCoin 创建于 2015 年底 (以“Moneta”的名义),是第一个实现零币协议的独立数字货币 (见下一小节)。 Zerocoin 和 Zerocash 之间的区别 2013 年底,零币协议的范围在一次名为 Zerocash 的升级中得到了延伸。为了提供完全的隐私,Zerocash 引入了效率改进 (即证明容量更小和验证更快) 和增强隐私功能 (对金额和发收件方地址进行加密)。Zerocash 最广为人知的实现是 ZCash。 尽管有一些关键的优势,但有几个原因可以解释为什么 Zerocash 没有取代 Zerocoin。其中最突出的有:

  • Zerocash 总供给缺乏可审核性:Zerocash 协议隐藏了余额。另一方面,零币协议并不隐藏它们。然而,正如下一节所讨论的,一些攻击者设法从 RSA 累加器中创建不被检测到的错误证明,即花别人的代币。

  • 对其底层密码学 (zksnark 的主要实现是 ZCash),以及对协议底层的加密一般复杂性测试较少,使得审计系统变得复杂。

  • 由于 Zerocash 计算量大,因此在本地生成私人交易的时间很长。

结果,零币协议仍然独立于 Zerocash。因此,本文的其余部分只关注于在 library libzerocoin 中定义的零币算法及其核心实现。

1.2 零币协议不同实现的概述

表 1 基于 Zerocoin 的主要独立实现的比较Binance Research | 零币协议中的缺陷
尽管所有这些实现都依赖于零币协议,但这些数字货币有许多不同之处,并且它们的一些底层设计将在本文中进行讨论。

1.3 ZCoin、PIVX 和 Veil 的概述

1.3.1 ZCoin (截至 2019 年初的 Sigma 之前) ZCoin 是一种数字货币,于 2016 年 9 月推出,是 Zerocoin 协议的第一个独立实现(如上一节所述)。
Binance Research | 零币协议中的缺陷
ZCoin 核心特征包括 :

  • 基于 BTC 的源代码。

  • 工作量证明 : 它依赖于 MTP 挖掘算法,该算法是一种对 CPU 友好的抗 ASIC 挖矿算法。

  • 哈希函数 : 自 2018 年以来,默克尔树函数 (MTP) 已经取代了 Lyra2z。

  • 锁仓时间 : 从 10 分钟减少到 5 分钟。

  • 最大区块 :2MB。

  • 总供应量 :2100 万 (在利用了几个缺陷后增加到 2140 万)。挖矿奖励每四年减半一次 (目前为 25 ZCoin/ 块)。

零币协议 :ZCoin 是第一个本地实现该协议的数字货币。然而,自 2019 年 7 月以来,ZCoin 的零币协议已被停用,取而代之的是 Sigma,同时也不再需要一个可信任的设置。 图 2 ZCoin 在 2019 年的价格(单位 : 美元)Binance Research | 零币协议中的缺陷
1.3.2 PIVX PIVX 是一种数字货币,旨在于 2016 年开始实现“可替换性、交易隐私、社区治理、网络可拓展性和实际利用率”。Binance Research | 零币协议中的缺陷在零币铸造被禁用之前,即 2019 年年初时,PIVX 依靠的是:

  • PIVX 最初是 Dash 的一个代码分支 (它本身来自 Litecoin 的代码)。

  • 它始于 2016 年 1 月,当时名为 DNET,并于 2017 年 1 月更名为 PIVX。

  • 零币协议:PIVX 在基于 libzerocoin 的基础上开发了一个零币协议的自定义实现,该协议于 2017 年底引入主网。

  • 股权证明 (PoS): 在最初的 PoW 阶段 (2016 年 1 月至 8 月间使用 Quark 算法) 之后,PIVX 转换为股权证明。在 PIVX 网络上,PIV 和 zPIV 都可以连接。通过这个独特的权益奖励计划,提供了私人权益与“常规权益”。用户也有使用 zPoS 的动机,因为这将增加 50% 的预期权益奖励。它的目的是提供额外的隐私,防止来自其他参与者的恶意行为,因为匿名设置行为仍然是一个需要考虑的关键因素。从 2020 年 1 月 5 日开始,包含 Cold Staking 的 PoS Time Protocol v2 已经得到使用。

  • 最大区块 :2MB。

  • 锁仓时间 :60 秒 (每个区块都会重新定位)。

  • 代币发行率 :PIVX 的上限为每个区块 6 个 PIV。所有的交易费用和 zPIV 的铸币费用将从货币供应中扣除,而不是分配给额外的主节点 / 权益奖励。

  • 总供应量 : 供应没有上限。到 2060 年 6 月,预计最大总供应量为 189,001,497 个 PIV。然而,随着时间的推移,根据交易的数量,PIVX 甚至可以减少代币供应量。

图 3 2019 年 PIVX 的价格(单位: 美元)Binance Research | 零币协议中的缺陷
1.3.3 Veil Veil 是一种数字货币,由 James Burden 于 2018 年初创建。James Burden 是数字货币隐私专家,也是 PIVX 的负责人(请参阅第 1.2 小节)。 Veil 旨在提供“不影响匿名性的全面隐私”。Binance Research | 零币协议中的缺陷Veil 的核心:

  • BTC 协议软件 : 使用 0.1.7 版本的 BTC 软件。

  • 零币协议 : 使用上一小节所描述的 libzerocoin。

  • RingCT 基于 Particl 的实现。

  • 隐身地址 : 每次交易都使用一次性地址。

其他特征包括:

  • 区块时间:60 秒 (每个区块都会重新定位)

  • 总供应链:3 亿

  • 区块大小:2MB

  • 混合工作量证明和权益证明共识系统:

  1. 它的工作证明 (PoW) 共识依赖于抗集成电路的 X16RT 哈希算法。目的是公平分配新币。
  2. 它的股权证明 (PoS) 系统依赖于直接以零币面额进行的质押和奖励。目的是奖励 Veil 持有人。
  3. 在这种双重混合机制中,PoS 参与者必须找到一个区块 (六个区块中的一个) 的目标。
  • 自动铸币:Veil 依赖于自动铸币机制:除非明确制定,否则“basecoin veils”将自动转换成“zerocoin veils”。

图 4 2019 年 Veil 价格(单位: 美元)Binance Research | 零币协议中的缺陷

Binance Research | 零币协议中的缺陷基于零币的数字货币的历史漏洞和事件

2.1 历史漏洞和媒介攻击的描述

2.1.1 2017 年的 Zcoin 事件 2017 年,在 ZCoin 披露其源代码后的几个月,有人利用源代码中有一个错字铸造了 37 万枚额外的 ZCoins。 在 2017 年的事件之后,ZCoin 团队宣布,通过这一漏洞产生了 18,171 枚硬币。具体来说,有人能够产生虚假支出,从而夸大了 ZCoin 的供应。 该团队立即更新系统来修复这一漏洞,以防止额外的零币支出。最终,导致 ZCoin 硬分叉的 libzerocoin v2 发布了,并重新引入了零币的支出。 相反,如 SmartCash 等其他项目则停止使用零币,随后决定不再重新使用,并于 2018 年初正式放弃零币。 2.1.2 潜在的拒绝支出攻击(2017) 2017 年,德国 Friedrich-Alexander-University 的研究人员公开披露了另一个可能被利用的漏洞。人们通常将它的攻击称为拒绝支出攻击,它可能允许恶意用户破坏诚实用户的资金。攻击的工作原理如下:

  • 一个诚实的用户想要花费他的零币,并将消费交易 (包括序列号) 发送到网络。

  • 与此同时,攻击者需要控制目标受害者的网络,可以拦截开销信息来确保它永远不会到达网络节点。然后,攻击者制造一个新的带有相同序列号的恶意零币。如此一来,攻击者就可以通过显示正确的序列号来花掉这个零币。

  • 在恶意用户花费零币之后,如果诚实的用户试图花费他的零币,那么网络会拒绝该笔交易,并视为双花。

结果,恶意用户会在诚实的用户花费之前销毁零币,从而篡改诚实用户的新“的无历史记录”零币。 图 5 拒绝支出攻击的说明Binance Research | 零币协议中的缺陷
然而,这种攻击的回报并不局限于链上效应。从这种攻击中获得的更大的潜在收益将会造成短暂的恐慌,用户在听到协议受到攻击时便会卖出,而攻击者将持有资产本身的空头头寸 (例如 Zcoin)。但在 2017 年,在 ZCoin 中建立空头头寸相对困难,使得此类攻击难以进行。 此外,正如 ZCoin 团队自己所提到的那样,攻击失败的风险仍然很高,恶意个人也可能成为其自身攻击的受害者。 2.1.3.libzercoin 中的实施问题会影响 PIVX (2019) 2019 年 3 月 6 日,PIVX 团队披露了在 PIVX 网络零币协议 (即 zPIV) 上检测到的攻击。 这个协议的漏洞在于允许恶意个人伪造序列号,并花费最初并不是铸造出来的零币。与第 1.4 节中描述的攻击不同,它不会导致用户资金被盗或丢失。但是,这将对通货膨胀产生影响,因为循环供应可以独立于 PIVX 指定的通货膨胀时间表而增加。 在发现无效区块之后,PIVX 团队发现有恶意个人正利用漏洞,而零币协议也被谨慎地停用了 (基于 sporks)。PIVX 团队认为,有两个主要因素导致了这个漏洞被利用: 1. 在整个对象中,序列号存储为数字类型,允许存储大于 256 位的数据。2. 知识验证的签名是在代币花费签名验证之后进行的。它无法验证序列号的大小是否严格小于 256 位。 这个漏洞没有影响到 ZCoin,但影响了各种 PIVX 分叉币,它们大多是低市值的数字货币。 2.2.4 最新加密漏洞的描述(2019) 2019 年 4 月,ZCoin 遭受了一次基于零币核心协议设计的加密漏洞攻击。 ZCoin 于 2019 年 4 月 30 日在一篇博客中披露了攻击的全部细节。根据 ZCoin 提供的信息,攻击者只要拥有一枚合法铸造的代币,就可以用任何一种零面值的数字货币随心所欲地制造出任何数量的支出。这些虚假的消费与真实的消费并没有区别。 图 6 攻击说明(正常零币铸造 / 支出过程相比)Binance Research | 零币协议中的缺陷
从密码学角度来看,一个零币的铸造可能产生一个错误的证明。下一节将讨论这次攻击对 ZCoin、PIVX 和 Veil 的影响。

2.2 2019 年近期攻击的影响

2.2.1 ZCoin 作为一个紧急解决方案,该团队决定禁止零币铸币,并阻止任何零币消费行为的发生。因此,直到发布 Sigma 前他们有效地冻结了累加器中的资金。 在 1 月 20 日转换零币的窗口结束后,评估了此次攻击造成的总伤害:通过该漏洞共伪造了 66,996 个 XZC。 由于攻击的特定签名,该团队还能够将一些铸币厂列入黑名单,从而防止攻击者将一些零币转换入 Sigma 铸币厂。因此,根据 ZCoin 更新显示,总损失估计为 54,321 个 XZC。 在 2019 年 7 月,该团队正式删除了零币协议并由 Sigma 代替它,也绕过了任何信任设置的需求。事实上,自 2018 年初以来,ZCoin 就开始致力于废除零币协议。 在迁移到 Sigma 之后,ZCoin 引入了“重铸”零币的功能,即将零币转移到 Sigma 铸造厂。 2.2.2 PIVX 作为对 2.1.3 小节中描述的事件的响应,PIVX 团队通过 spork 停用了零币的隐私功能。从那时起,零币就用于公共模式中,和正常的 UTXO 交易处理方式类似。 具体来说,零币铸造已被禁用,而零币支出仍保持启用 (与原始 basecoin 完整链接)。此外,该团队依赖于 Schnorr 签名来确保零币可以回到 basecoin 上,而不暴露于事先存在的漏洞。 在 2020 年 1 月 5 日,PoS Time Protocol v2 随 4.0 版本一起推出。继这一硬分叉之后,PIVX 有望很快宣布其下一个隐私协议。 2.2.3 Veil 在 ZCoin 于 2019 年 4 月 17 日发现漏洞后,Veil 团队决定停用零币协议中的匿名功能。它最初阻止了攻击在 Veik 链上进行。 对于 Veil,只能用零币进行质押奖励 (而不能用 basecoin 支付)。因此,最初的解决方案并不依靠通过直接的硬分叉停止对零币协议的依赖。 这个最初的解决方案包括一个附加补丁,要求所有零币花费都必须带有签名,以便将消费与铸币厂联系起来。换句话说,防止重复花费所需的零知识证明被一个签名所取代,进而导致匿名功能的丧失,但仍然解决了漏洞。 不幸的是,攻击不断“进化”,最初的解决方案并不能阻止攻击者从累加器中窃取资金。作为一个紧急的解决方案,Veil 的团队决定:

  • 与交易所合作 : 暂停存取款,以防止网络上发生任何交易,这可能导致大量资金损失。

  • 通过将余额加到零币池中,并禁止还没用 RingCT 改组的其余零币,回到一个“真正”的状态。

此外,该团队还禁用了零知识证明,使零币与其他 (正常的)UTXO 交易类似。然而,与 PIVX 不同的是,铸造和发行零币并没有被禁用 (因为只有在零币中才可以质押),但是从那时起就没有隐私功能了。在中长期规划中,团队决定采用以下几种解决方案:

  • 调整发行时间表 : 这次攻击有效增加了 124,41,690 个供应量。作为回应,创始人的报酬已经减少约 1000 万个 Veil,以抵消大部分供应的增加并将销毁它们,另外还有 210 万 (超出了用于项目开发的一般预算支出)。

  • 加速 Veil 从零币协议中退出 : 以 ZCoin 为例,该团队已经确认其希望脱离零币协议。

到目前为止,最值得考虑的解决方案是用 RingCT staking 来再次进行匿名质押。此外,该团队还在研究一种使用 Supersonic 证明的新协议。

Binance Research | 零币协议中的缺陷

总结和思考

与之前的事件不同,最新的零币漏洞对现有的隐私币领域产生了广泛的影响。 ZCoin 是其第一个实施的数字货币 (也是市值最大的),但自 2019 年 8 月起已经脱离了该协议,并成功激活了 Sigma。由于该团队从 2018 年初开始研究零币协议的替代方案,所以它的过渡可能在很短的时间内完成。 PIVX 取消了零币协议中的隐私保护功能,但除了披露其完全取代 Zerocoin 的使用意愿外,它还没有透露计划的全部范围。自 2019 年事件以来,零币一直用于公共模式中,即和正常的 UTXO 交易处理方式类似。 Veil 遭受了巨大的通货膨胀冲击,但它的团队通过与交易所的合作,放弃了创始人分配的很大一部分资金来挽救这个项目。因此,它的团队决定应该完全取代零币协议,并从那时起就一直在研究替代方案 (例如,RingCT staking)。 最近的事件可能标志着最具象征意义的区块链隐私解决方案之一的结束,因此,加速了隐私币格局的转变。然而,作为一种协议,零币很可能会继续改进各种设计方案 (例如来自 Equihash 的共同创始人 Dmitry Khovratovich 的提议),这可能会解决它最近发现的加密缺陷。

Binance Research | 零币协议中的缺陷

Binance Research 作者 *Zoe Zhou *翻译

Roy Wang 编辑

内容仅供参考 不作为投资建议 风险自担

版权所有 未经允许 严禁转载

Binance Research | 零币协议中的缺陷

Binance Research | 零币协议中的缺陷

Binance Research | 零币协议中的缺陷

Binance Research | 零币协议中的缺陷

Binance Research | 零币协议中的缺陷

Binance Research | 零币协议中的缺陷

☟☟☟


声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。

评论0条

加密谷Live

简介:分享区块链领域专业、前沿、有趣的内容

专栏

更多>>